Méthode IWDFDeviceInitialize2 ::SetIoTypePreference (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 SetIoTypePreference spécifie vos préférences quant à la façon dont UMDF et le pilote accèdent aux mémoires tampons de données des demandes d’E/S d’un appareil.

Syntaxe

void SetIoTypePreference(
  [in] WDF_DEVICE_IO_BUFFER_RETRIEVAL RetrievalMode,
  [in] WDF_DEVICE_IO_TYPE             ReadWritePreference,
  [in] WDF_DEVICE_IO_TYPE             IoControlPreference
);

Paramètres

[in] RetrievalMode

Valeur de type WDF_DEVICE_IO_BUFFER_RETRIEVAL qui spécifie le mode de récupération de mémoire tampon que vous préférez utiliser UMDF pour mettre les mémoires tampons d’une demande d’E/S à la disposition du pilote.

[in] ReadWritePreference

Valeur de type WDF_DEVICE_IO_TYPE qui spécifie la méthode d’accès à la mémoire tampon que vous préférez utiliser UMDF pour les mémoires tampons de données des demandes de lecture et d’écriture.

[in] IoControlPreference

Valeur de type WDF_DEVICE_IO_TYPE qui spécifie la méthode d’accès à la mémoire tampon que vous préférez utiliser UMDF pour les mémoires tampons de données des demandes de contrôle d’E/S d’appareil.

Valeur de retour

None

Remarques

Si un pilote appelle SetIoTypePreference pour un appareil, il doit le faire à partir de sa fonction de rappel IDriverEntry ::OnDeviceAdd , avant que le pilote appelle IWDFDriver ::CreateDevice.

Si le pilote n’appelle pas SetIoTypePreference, UMDF définit le paramètre RetrievalMode sur WdfDeviceIoBufferRetrievalCopyImmediately et définit la méthode d’accès à la mémoire tampon sur WdfDeviceIoBuffered pour les demandes de contrôle d’E/S de l’appareil.

UMDF peut ne pas utiliser les préférences spécifiées par le pilote lorsqu’il appelle SetIoTypePreference. Pour plus d’informations sur la façon dont UMDF choisit un mode de récupération et une méthode d’accès à la mémoire tampon, consultez Spécification d’un mode de récupération de mémoire tampon et Comment UMDF choisit une méthode d’accès à la mémoire tampon pour une demande d’E/S.

Un pilote ne peut pas définir la méthode d’accès à la mémoire tampon sur WdfDeviceIoDirect ou WdfDeviceIoBufferedOrDirect , sauf s’il définit également le paramètre RetrievalMode sur WdfDeviceIoBufferRetrievalDeferred.

Pour plus d’informations sur l’accès aux mémoires tampons de données d’une demande d’E/S, consultez Accès aux mémoires tampons de données dans les pilotes UMDF-Based.

Exemples

L’exemple de code suivant montre un segment de la fonction de rappel IDriverEntry ::OnDeviceAdd d’un pilote. Le segment obtient l’interface IWDFDeviceInitialize2 , puis appelle SetIoTypePreference.

HRESULT
 CMyDriver::OnDeviceAdd(
    __in IWDFDriver *FxWdfDriver,
    __in IWDFDeviceInitialize *FxDeviceInit
    )
{
...
    //
    // Declare an IWDFDeviceInitialize2 interface pointer and obtain the
    // IWDFDeviceInitialize2 interface from the IWDFDeviceInitialize interface.
    //
    CComQIPtr<IWDFDeviceInitialize2> di2 = FxDeviceInit;

    //
    // For this device, set the retrieval mode to deferred, set
    // the access method to buffered for read and write requests,
    // and set the access mode to direct for device I/O control requests.
    // 
    di2->SetIoTypePreference(WdfDeviceIoBufferRetrievalDeferred,
                             WdfDeviceIoBuffered,
                             WdfDeviceIoDirect);
...
}

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,9
En-tête wudfddi.h (inclure Wudfddi.h)
DLL WUDFx.dll

Voir aussi

IWDFDeviceInitialize2

IWDFIoRequest2 ::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx