Partager via


WdfIoQueueReadyNotify, fonction (wdfio.h)

[S’applique à KMDF et UMDF]

Le WdfIoQueueReadyNotify méthode inscrit (ou désinscrits) une fonction de rappel d’événement que l’infrastructure appelle chaque fois qu’une file d’attente d’E/S spécifiée qui était précédemment vide reçoit une ou plusieurs demandes d’E/S.

Syntaxe

NTSTATUS WdfIoQueueReadyNotify(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE QueueReady,
  [in, optional] WDFCONTEXT             Context
);

Paramètres

[in] Queue

Handle vers un objet de file d’attente framework.

[in, optional] QueueReady

Pointeur vers un EvtIoQueueState fonction de rappel fournie par le pilote, si le pilote s’inscrit pour une notification prête ou NULL si le pilote est désinscrit.

[in, optional] Context

Pointeur non typé vers des informations de contexte fournies par le pilote que l’infrastructure transmet à la fonction de rappel EvtIoQueueState, si le pilote s’inscrit pour la notification prête ou NULL si le pilote est désinscrit.

Valeur de retour

WdfIoQueueReadyNotify retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER
Le pilote a fourni un handle non valide.
STATUS_INVALID_DEVICE_REQUEST
Cette valeur est retournée si l’une des opérations suivantes se produit :
 

Cette méthode peut également retourner d’autres valeurs NTSTATUS .

Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.

Remarques

Une fois qu’un pilote a appelé WdfIoQueueReadyNotify pour inscrire une fonction de rappel EvtIoQueueState, l’infrastructure appelle la fonction de rappel chaque fois que l’état de la file d’attente spécifiée passe de vide à non vide. Plus précisément, l’infrastructure appelle EvtIoQueueState lorsqu’une demande arrive sur une file d’attente vide, même si le pilote possède toujours des demandes précédemment remises à partir de la file d’attente qu’elle n’a pas encore terminée. Vous pouvez modifier le runtime d’intégration au niveau duquel le rappel s’exécute en spécifiant ExecutionLevel dans WDF_OBJECT_ATTRIBUTES au moment de la création de la file d’attente. Pour plus d’informations, consultez la section Remarques deEVT_WDF_IO_QUEUE_STATE.

L’infrastructure n’appelle pas EvtIoQueueState pendant l’arrêt de la file d’attente spécifiée. Au démarrage de la file d’attente, l’infrastructure appelle EvtIoQueueState si la file d’attente n’est pas vide.

Votre pilote peut appeler WdfIoQueueReadyNotify uniquement pour les files d’attente d’E/S qui utilisent la méthode de répartition manuelle .

La fonction de rappel EvtIoQueueState appelle généralement WdfIoQueueRetrieveNextRequest ou WdfIoQueueRetrieveRequestByFileObject dans une boucle pour récupérer toutes les requêtes qui sont arrivées depuis la dernière exécution de la fonction de rappel.

Pour empêcher l’infrastructure d’appeler la fonction de rappel EvtIoQueueState, le pilote doit appeler WdfIoQueueReadyNotify à nouveau avec le paramètre QueueReady défini sur NULL. Toutefois, le pilote doit d’abord appeler WdfIoQueueStop ou WdfIoQueueStopSynchronously pour arrêter la file d’attente d’E/S. Le pilote peut ensuite appeler WdfIoQueueStart pour redémarrer la file d’attente.

Lorsqu’un pilote appelle WdfIoQueueReadyNotify pour inscrire une fonction de rappel EvtIoQueueState, il est possible que l’infrastructure appelle la fonction de rappel avant WdfIoQueueReadyNotify retourne.

Pour plus d’informations sur la méthode WdfIoQueueReadyNotify, consultez Méthodes de répartition des requêtes d’E/S.

Exemples

L’exemple de code suivant enregistre la fonction EvtIoQueueReady d’un pilote, afin que cette fonction soit appelée lorsque la file d’attente d’E/S spécifiée reçoit une requête d’E/S.

Status = WdfIoQueueReadyNotify(
                               ReadQueue,
                               EvtIoQueueReady,
                               myQueueContext
                               );

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
En-tête wdfio.h (include Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

EvtIoQueueState

WDF_IO_QUEUE_CONFIG

WdfIoQueueRetrieveNextRequest

WdfIoQueueRetrieveRequestByFileObject