Fonction de rappel PFNKSFILTERIRP (ks.h)

La routine AVStrMiniFilterCreate d’un minidriver AVStream est appelée lorsqu’un filtre reçoit un IRP.

IRP_MJ_CREATE

IRP_MJ_CLOSE

Syntaxe

PFNKSFILTERIRP Pfnksfilterirp;

NTSTATUS Pfnksfilterirp(
  [in] PKSFILTER Filter,
  [in] PIRP Irp
)
{...}

Paramètres

[in] Filter

Pointeur vers KSFILTER.

[in] Irp

Pointeur vers l’IRP pour Filter.

Valeur retournée

Si la routine réussit, retournez STATUS_SUCCESS ou le code d’erreur.

Remarques

IRP Description
IRP_MJ_CREATE En règle générale, cette routine est utilisée par les minidrivers qui souhaitent initialiser le contexte et les ressources associés au filtre. Le minidriver spécifie l’adresse de cette routine dans le membre Créer de sa structure KSFILTER_DISPATCH . Au moment où la routine est appelée, l’objet file a un contexte associé et l’en-tête de l’objet KS a été alloué. Cette routine est appelée dans IRQL = PASSIVE_LEVEL avec le mutex de l’appareil maintenu. Si la routine réussit, l’opération de création est garantie de réussir. Retourne STATUS_SUCCESS ou le code d’erreur retourné par la tentative de création du filtre. STATUS_PENDING est également un code de retour légal. Si un minidriver retourne STATUS_PENDING, AVStream ne termine pas immédiatement la IRP_MJ_CREATE . Avant de retourner STATUS_PENDING, le minidriver doit appeler IoMarkIrpPending. Une fois le traitement de la création terminé, le minidriver doit définir le code status de l’IRP, puis appeler KsCompletePendingRequest. Cette routine est facultative.
IRP_MJ_CLOSE Le minidriver spécifie l’adresse de cette routine dans le membre Close de sa structure KSFILTER_DISPATCH . Au moment où la routine est appelée, tous les événements inscrits sur le filtre ont été libérés, mais l’objet est sinon intact. Cette routine est appelée dans IRQL = PASSIVE_LEVEL avec le mutex de l’appareil maintenu. Pour plus d’informations sur les mutex, consultez Mutex dans AVStream. Cette routine est facultative. Retourne STATUS_SUCCESS ou STATUS_PENDING. Si un minidriver retourne STATUS_PENDING, AVStream ne termine pas immédiatement la IRP_MJ_CLOSE . Toutefois, avant de retourner STATUS_PENDING, le minidriver doit appeler IoMarkIrpPending. Une fois le traitement de la fermeture terminé, le minidriver doit définir le code status de l’IRP, puis appeler KsCompletePendingRequest.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête ks.h (inclure Ks.h)
IRQL PASSIVE_LEVEL (voir la section Remarques)

Voir aussi

IoMarkIrpPending

KSFILTER_DISPATCHKsCompletePendingRequest