WdfDeviceConfigureRequestDispatching, fonction (wdfdevice.h)

[S’applique à KMDF et UMDF]

La méthode WdfDeviceConfigureRequestDispatching entraîne la mise en file d’attente d’un type spécifié de demandes d’E/S vers une file d’attente d’E/S spécifiée.

Syntaxe

NTSTATUS WdfDeviceConfigureRequestDispatching(
  [in] WDFDEVICE        Device,
  [in] WDFQUEUE         Queue,
  [in] WDF_REQUEST_TYPE RequestType
);

Paramètres

[in] Device

Fournit un handle à un objet d’appareil framework.

[in] Queue

Fournit un handle à un objet de file d’attente d’infrastructure.

[in] RequestType

Fournit un énumérateur WDF_REQUEST_TYPE typé qui identifie le type de requête à mettre en file d’attente. Les seuls énumérateurs valides sont les suivants :

WdfRequestTypeCreate

WdfRequestTypeRead

WdfRequestTypeWrite

WdfRequestTypeDeviceControl

WdfRequestTypeDeviceControlInternal

Valeur retournée

Si l’opération réussit, la méthode retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER
Un paramètre d’entrée n’est pas valide.
STATUS_INSUFFICIENT_RESOURCES
La quantité de mémoire disponible est trop faible.
STATUS_WDF_BUSY
Le pilote a déjà affecté une file d’attente au type de requête spécifié.
 

La méthode peut retourner d’autres valeurs NTSTATUS.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Chaque appel à WdfDeviceConfigureRequestDispatching spécifie un type de requête. Si vous souhaitez qu’une file d’attente d’E/S unique reçoive plusieurs types de demandes (par exemple, des demandes de lecture et d’écriture), votre pilote peut appeler WdfDeviceConfigureRequestDispatching plusieurs fois pour une seule file d’attente d’E/S.

Pour plus d’informations sur WdfDeviceConfigureRequestDispatching, consultez Création de files d’attente d’E/S et gestion des files d’attente d’E/S.

Exemples

L’exemple de code suivant initialise une structure de WDF_IO_QUEUE_CONFIG , crée une file d’attente d’E/S, puis configure la file d’attente pour qu’elle reçoive des demandes d’écriture.

WDF_IO_QUEUE_CONFIG queueConfig;
WDFQUEUE WriteQueue;

WDF_IO_QUEUE_CONFIG_INIT(
                         &queueConfig,
                         WdfIoQueueDispatchSequential
                         );
queueConfig.EvtIoWrite = MyEvtIoWrite;
status = WdfIoQueueCreate(
                          Device,
                          &queueConfig,
                          WDF_NO_OBJECT_ATTRIBUTES,
                          &WriteQueue
                          );
if(!NT_SUCCESS(status)) {
    return status;
}
status = WdfDeviceConfigureRequestDispatching(
                                              Device,
                                              WriteQueue,
                                              WdfRequestTypeWrite
                                              );
if(!NT_SUCCESS(status)) {
    return status;
}

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfdevice.h (inclure 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

WDF_IO_QUEUE_CONFIG_INIT

WdfIoQueueCreate