Funzione di callback PFNKSFILTERIRP (ks.h)
La routine AVStrMiniFilterCreate di un minidriver AVStream viene chiamata quando un filtro riceve un IRP.
Sintassi
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
Parametri
[in] Filter
Puntatore a KSFILTER.
[in] Irp
Puntatore all'IRP per Filter.
Valore restituito
Se la routine ha esito positivo, restituire STATUS_SUCCESS o il codice di errore.
Commenti
IRP | Descrizione |
---|---|
IRP_MJ_CREATE | In genere, questa routine viene usata dai minidriver che vogliono inizializzare il contesto e le risorse associate al filtro. Il minidriver specifica l'indirizzo di questa routine nel membro Create della relativa struttura KSFILTER_DISPATCH . Nel punto in cui viene chiamata la routine, l'oggetto file ha un contesto associato e l'intestazione dell'oggetto KS è stata allocata. Questa routine viene chiamata in IRQL = PASSIVE_LEVEL con il mutex del dispositivo mantenuto. Se la routine ha esito positivo, l'operazione di creazione avrà esito positivo. Restituisce STATUS_SUCCESS o il codice di errore restituito dal tentativo di creare il filtro. STATUS_PENDING è anche un codice di restituzione legale. Se un minidriver restituisce STATUS_PENDING, AVStream non completerà immediatamente il IRP_MJ_CREATE . Prima di restituire STATUS_PENDING, il minidriver deve chiamare IoMarkIrpPending. Al termine dell'elaborazione della creazione, il minidriver deve impostare il codice di stato di IRP e quindi chiamare KsCompletePendingRequest. Questa routine è facoltativa. |
IRP_MJ_CLOSE | Il minidriver specifica l'indirizzo di questa routine nel membro Close della relativa struttura KSFILTER_DISPATCH . Nel punto in cui viene chiamata la routine, tutti gli eventi registrati nel filtro sono stati liberati, ma l'oggetto è altrimenti intatto. Questa routine viene chiamata in IRQL = PASSIVE_LEVEL con il mutex del dispositivo mantenuto. Per altre informazioni sui mutex, vedere Mutexes in AVStream. Questa routine è facoltativa. Restituisce STATUS_SUCCESS o STATUS_PENDING. Se un minidriver restituisce STATUS_PENDING, AVStream non completerà immediatamente il IRP_MJ_CLOSE . Prima di restituire STATUS_PENDING, tuttavia, il minidriver deve chiamare IoMarkIrpPending. Al termine dell'elaborazione della chiusura, il minidriver deve impostare il codice di stato di IRP e quindi chiamare KsCompletePendingRequest. |
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | ks.h (include Ks.h) |
IRQL | PASSIVE_LEVEL (vedere la sezione Osservazioni) |