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
IWDFIoRequest2 ::GetEffectiveIoType