Fonction de rappel PFNKSFILTERIRP (ks.h)
La routine AVStrMiniFilterCreate d’un minidriver AVStream est appelée lorsqu’un filtre reçoit un IRP.
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) |