Fonction WdfDeviceInitSetIoTypeEx (wdfdevice.h)

[S’applique à KMDF et UMDF]

La méthode WdfDeviceInitSetIoTypeEx définit la méthode ou la préférence pour la façon dont un pilote accède aux mémoires tampons de données incluses dans les demandes de lecture et d’écriture, ainsi que dans les demandes de contrôle d’E/S d’appareil, pour un appareil spécifié.

Syntaxe

void WdfDeviceInitSetIoTypeEx(
  [in] PWDFDEVICE_INIT     DeviceInit,
  [in] PWDF_IO_TYPE_CONFIG IoTypeConfig
);

Paramètres

[in] DeviceInit

Pointeur vers une structure WDFDEVICE_INIT .

[in] IoTypeConfig

Pointeur vers WDF_IO_TYPE_CONFIG structure initialisée à l’aide de WDF_IO_TYPE_CONFIG_INIT macro.

Valeur de retour

None

Remarques

Si vous écrivez un pilote à l’aide de KMDF version 1.11 ou antérieure, vous devez utiliser WdfDeviceInitSetIoType.

KMDF Un pilote KMDF appelle WdfDeviceInitSetIoTypeEx pour définir une méthode d’accès à la mémoire tampon pour les demandes de lecture et d’écriture. Pour les demandes de contrôle d’E/S d’appareil, l’infrastructure utilise le type de mémoire tampon qui est encodé dans le code de contrôle d’E/S (IOCTL).

UMDF Un pilote UMDF appelle WdfDeviceInitSetIoTypeEx pour inscrire les préférences pour les demandes de lecture et d’écriture, ainsi que les demandes de contrôle d’E/S d’appareil. Les valeurs qu’un pilote UMDF fournit à WdfDeviceInitSetIoTypeEx sont uniquement des préférences et ne sont pas garanties d’être utilisées par l’infrastructure. Votre pilote peut appeler WdfDeviceGetDeviceStackIoType pour déterminer les méthodes d’accès à la mémoire tampon qu’UMDF a attribuées aux demandes de lecture/écriture et aux demandes de contrôle d’E/S d’un appareil. Pour les demandes de contrôle d’E/S, la méthode d’accès utilisée par l’infrastructure peut différer de la méthode d’accès spécifiée dans le IOCTL et de la méthode d’accès demandée par le pilote.

Si un pilote appelle WdfDeviceInitSetIoTypeEx, il doit le faire avant d’appeler WdfDeviceCreate.

Si le pilote n’appelle pas WdfDeviceInitSetIoTypeEx, l’infrastructure définit la méthode d’accès à la mémoire tampon du pilote sur WdfDeviceIoBuffered, pour l’appareil spécifié.

L’appel de WdfDeviceInitSetIoTypeEx à partir d’un pilote de filtre KMDF n’a aucun effet. Pour les pilotes de filtre KMDF, l’infrastructure utilise le type d’E/S spécifié par le pilote inférieur suivant dans la pile de pilotes.

Un pilote de filtre UMDF peut toutefois inscrire des préférences pour la méthode d’accès à la mémoire tampon en appelant WdfDeviceInitSetIoTypeEx.

Tous les pilotes UMDF d’une pile de pilotes doivent utiliser la même méthode pour accéder aux mémoires tampons d’un appareil. Si UMDF détermine que certains pilotes préfèrent les E/S mises en mémoire tampon ou les E/S directes pour un appareil, tandis que d’autres pilotes préfèrent uniquement les E/S mises en mémoire tampon pour l’appareil, UMDF utilise les E/S mises en mémoire tampon pour tous les pilotes. Si un ou plusieurs pilotes d’une pile préfèrent uniquement les E/S mises en mémoire tampon tandis que d’autres préfèrent uniquement les E/S directes, UMDF consigne un événement dans le journal des événements système et ne démarre pas la pile de pilotes.

Pour plus d’informations sur les méthodes d’accès à la mémoire tampon, consultez Accès aux mémoires tampons de données.

Cette méthode est l’équivalent UMDF 2.0 de IWDFDeviceInitialize2 ::SetIoTypePreference.

Exemples

L’exemple de code suivant initialise une structure de WDF_IO_TYPE_CONFIG , définit les préférences d’accès à la mémoire tampon du pilote sur les E/S directes, spécifie que les transferts inférieurs à 32 Ko doivent utiliser des E/S mises en mémoire tampon et appelle WdfDeviceInitSetIoTypeEx.

WDF_IO_TYPE_CONFIG ioConfig;
WDF_IO_TYPE_CONFIG_INIT(&ioConfig);
ioConfig.ReadWriteIoType = WdfDeviceIoDirect;
ioConfig.DeviceControlIoType = WdfDeviceIoDirect;
ioConfig.DirectTransferThreshold = 32;

WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.13
Version UMDF minimale 2.0
En-tête wdfdevice.h (include Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL

Voir aussi

IWDFDeviceInitialize2 ::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType