IWDFDevice ::CreateIoQueue, méthode (wudfddi.h)
[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main avec UMDF.]
La méthode CreateIoQueue configure la file d’attente d’E/S par défaut associée à un appareil ou crée une file d’attente d’E/S secondaire pour l’appareil.
Syntaxe
HRESULT CreateIoQueue(
[in, optional] IUnknown *pCallbackInterface,
[in] BOOL bDefaultQueue,
[in] WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
[in] BOOL bPowerManaged,
[in] BOOL bAllowZeroLengthRequests,
[out] IWDFIoQueue **ppIoQueue
);
Paramètres
[in, optional] pCallbackInterface
Pointeur vers l’interface IUnknown que le framework utilise pour déterminer les fonctions de rappel d’événement auxquelles le pilote s’abonne sur la file d’attente. Il s’agit des fonctions que l’infrastructure appelle lorsque les événements pertinents se produisent.
Pour les versions UMDF 1.9 et ultérieures, ce paramètre est requis pour les files d’attente d’E/S qui utilisent la méthode de répartition séquentielle ou parallèle, et il est facultatif (peut être NULL) pour les files d’attente d’E/S qui utilisent la méthode de répartition manuelle. Pour les versions UMDF antérieures à 1.9, ce paramètre est requis pour toutes les méthodes de répartition.
[in] bDefaultQueue
Valeur boOL qui spécifie s’il faut configurer la file d’attente d’E/S par défaut ou créer une file d’attente d’E/S secondaire pour l’appareil. TRUE indique de configurer la file d’attente d’E/S par défaut ; FALSE indique la création d’une file d’attente d’E/S secondaire.
[in] DispatchType
Valeur de type WDF_IO_QUEUE_DISPATCH_TYPE qui identifie la façon dont le pilote doit recevoir les requêtes de la file d’attente d’E/S.
[in] bPowerManaged
Valeur BOOL qui spécifie si la file d’attente d’E/S est gérée par l’alimentation. TRUE indique que l’infrastructure coordonne automatiquement la répartition de la file d’attente d’E/S avec Plug-and-Play (PnP) et l’état d’alimentation de l’appareil ; FALSE indique qu’il n’y a pas de distribution coordonnée automatiquement.
[in] bAllowZeroLengthRequests
Valeur BOOL qui spécifie si l’infrastructure place les demandes d’E/S de longueur nulle directement dans la file d’attente d’E/S que le pilote doit gérer. TRUE indique que le pilote doit recevoir des demandes de lecture et d’écriture qui ont des mémoires tampons de longueur nulle. Autrement dit, l’infrastructure place automatiquement ces types de requêtes directement dans la file d’attente d’E/S pour le pilote. FALSE indique que l’infrastructure termine les demandes d’E/S de longueur nulle au lieu de les placer dans la file d’attente d’E/S.
[out] ppIoQueue
Pointeur vers une variable qui reçoit un pointeur vers l’interface IWDFIoQueue pour l’objet file d’attente d’E/S nouvellement créé ou l’objet file d’attente d’E/S par défaut.
Valeur retournée
CreateIoQueue retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
La file d’attente d’E/S a été créée avec succès. |
|
La file d’attente d’E/S est configurée de l’une des manières suivantes :
|
CreateIoQueue peut également retourner d’autres valeurs HRESULT.
Remarques
L’interface IUnknown que le pilote fournit pour le paramètre pCallbackInterface peut prendre en charge plusieurs fonctions de rappel de file d’attente. L’infrastructure appelle la méthode QueryInterface sur l’interface IUnknown fournie plusieurs fois pour récupérer les méthodes d’interface prises en charge par le pilote. Lorsque les applications effectuent des actions liées aux méthodes des interfaces prises en charge (telles qu’une demande de lecture d’E/S), l’infrastructure appelle les méthodes (telles que la méthode IQueueCallbackRead ::OnRead ) pour avertir le pilote. L’infrastructure appelle QueryInterface pour les interfaces suivantes :
IQueueCallbackDefaultIoHandler
Lorsque le pilote passe WdfIoQueueDispatchSequential ou WdfIoQueueDispatchParallel pour le paramètre DispatchType de CreateIoQueue afin de créer une file d’attente non managée, CreateIoQueue ne peut retourner S_OK que si l’objet de rappel de file d’attente du pilote implémente au moins une des interfaces précédentes et indique la prise en charge de ces interfaces via l’interface IUnknown vers laquelle pCallbackInterface pointe.
Lorsque le pilote passe WdfIoQueueDispatchManual pour DispatchType pour créer une file d’attente manuelle, CreateIoQueue ne peut retourner S_OK que si l’objet de rappel de file d’attente du pilote n’implémente ni n’indique la prise en charge de l’une des interfaces de rappel précédentes. Pour plus d’informations sur les objets de rappel du pilote, consultez Création d’objets de rappel.
L’infrastructure appelle également QueryInterface sur l’interface IUnknown fournie pour déterminer si le pilote prend en charge l’une des interfaces suivantes :
L’infrastructure appelle également QueryInterface sur l’interface IUnknown fournie pour déterminer si le pilote prend en charge l’interface IQueueCallbackStateChange . L’objet de rappel de file d’attente du pilote peut éventuellement implémenter et indiquer la prise en charge d’IQueueCallbackStateChange uniquement pour une file d’attente manuelle. L’objet de rappel de file d’attente du pilote ne doit pas implémenter et indiquer la prise en charge d’IQueueCallbackStateChange pour une file d’attente séquentielle ou parallèle.
Exemples
Pour obtenir un exemple de code montrant comment utiliser la méthode CreateIoQueue , consultez IWDFDriver ::CreateDevice.
Configuration requise
Condition requise | Valeur |
---|---|
Fin de la prise en charge | Non disponible dans UMDF 2.0 et versions ultérieures. |
Plateforme cible | Desktop (Expérience utilisateur) |
Version UMDF minimale | 1.5 |
En-tête | wudfddi.h (inclure Wudfddi.h) |
DLL | WUDFx.dll |