Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[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 |
|---|---|
|
Le pilote a fourni un handle non valide. |
|
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) |