Compartir a través de


Método IWDFDeviceInitialize2::SetIoTypePreference (wudfddi.h)

[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción con UMDF.

El método SetIoTypePreference especifica sus preferencias sobre cómo UMDF y el controlador acceden a los búferes de datos de las solicitudes de E/S de un dispositivo.

Sintaxis

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

Parámetros

[in] RetrievalMode

Valor WDF_DEVICE_IO_BUFFER_RETRIEVAL con tipo que especifica el modo de recuperación del búfer que prefiere usar UMDF para hacer que los búferes de una solicitud de E/S estén disponibles para el controlador.

[in] ReadWritePreference

Valor de tipo WDF_DEVICE_IO_TYPE que especifica el método de acceso al búfer que prefiere que UMDF use para los búferes de datos de solicitudes de lectura y escritura.

[in] IoControlPreference

Valor WDF_DEVICE_IO_TYPE con tipo que especifica el método de acceso al búfer que prefiere usar umDF para los búferes de datos de las solicitudes de control de E/S del dispositivo.

Valor devuelto

None

Observaciones

Si un controlador llama a SetIoTypePreference para un dispositivo, debe hacerlo desde su función de devolución de llamada IDriverEntry::OnDeviceAdd , antes de que el controlador llame a IWDFDriver::CreateDevice.

Si el controlador no llama a SetIoTypePreference, UMDF establece el parámetro RetrievalMode en WdfDeviceIoBufferRetrievalCopyImmediately y establece el método de acceso del búfer en WdfDeviceIoBuffered para las solicitudes de control de E/S de lectura, escritura y dispositivo.

UMDF podría no usar las preferencias que el controlador especifica cuando llama a SetIoTypePreference. Para obtener más información sobre cómo UMDF elige un modo de recuperación y un método de acceso al búfer, vea Especificar un modo de recuperación de búfer y Cómo UMDF elige un método de acceso de búfer para una solicitud de E/S.

Un controlador no puede establecer el método de acceso del búfer en WdfDeviceIoDirect o WdfDeviceIoBufferedOrDirect a menos que también establezca el parámetro RetrievalMode en WdfDeviceIoBufferRetrievalDeferred.

Para obtener más información sobre el acceso a los búferes de datos de una solicitud de E/S, consulte Acceso a los búferes de datos en UMDF-Based controladores.

Ejemplos

En el ejemplo de código siguiente se muestra un segmento de la función de devolución de llamada IDriverEntry::OnDeviceAdd de un controlador. El segmento obtiene la interfaz IWDFDeviceInitialize2 y, a continuación, llama a 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);
...
}

Requisitos

Requisito Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1,9
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx