Funzione di callback PFNKSFILTERIRP (ks.h)

La routine AVStrMiniFilterCreate di un minidriver AVStream viene chiamata quando un filtro riceve un IRP.

IRP_MJ_CREATE

IRP_MJ_CLOSE

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)

Vedi anche

IoMarkIrpPending

KSFILTER_DISPATCHKsCompletePendingRequest