Compartir a través de


Función WdfDeviceInitSetIoTypeEx (wdfdevice.h)

[Se aplica a KMDF y UMDF]

El método WdfDeviceInitSetIoTypeEx establece el método o la preferencia de cómo un controlador accederá a los búferes de datos que se incluyen en las solicitudes de lectura y escritura, así como las solicitudes de control de E/S del dispositivo, para un dispositivo especificado.

Sintaxis

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

Parámetros

[in] DeviceInit

Puntero a una estructura de WDFDEVICE_INIT.

[in] IoTypeConfig

Puntero a WDF_IO_TYPE_CONFIG estructura inicializada mediante WDF_IO_TYPE_CONFIG_INIT macro.

Valor devuelto

Ninguno

Observaciones

Si va a escribir un controlador con kmDF versión 1.11 o anterior, debe usar WdfDeviceInitSetIoType.

KMDF un controlador KMDF llama a WdfDeviceInitSetIoTypeEx para establecer un método de acceso al búfer para las solicitudes de lectura y escritura. En el caso de las solicitudes de control de E/S de dispositivo, el marco usa el tipo de búfer que se codifica en el código de control de E/S (IOCTL).

UMDF un controlador UMDF llama a WdfDeviceInitSetIoTypeEx para registrar preferencias para solicitudes de lectura y escritura, así como solicitudes de control de E/S del dispositivo. Los valores que proporciona un controlador UMDF para WdfDeviceInitSetIoTypeEx son solo preferencias y no se garantiza que el marco use. El controlador puede llamar a WdfDeviceGetDeviceStackIoType para determinar los métodos de acceso al búfer que UMDF ha asignado a las solicitudes de control de lectura y escritura de un dispositivo y solicitudes de control de E/S. En el caso de las solicitudes de control de E/S, el método de acceso que usa el marco puede diferir del método de acceso especificado en el IOCTL y el método de acceso solicitado por el controlador.

Si un controlador llama a WdfDeviceInitSetIoTypeEx, debe hacerlo antes de llamar a WdfDeviceCreate.

Si el controlador no llama a WdfDeviceInitSetIoTypeEx, el marco establece el método de acceso al búfer del controlador en WdfDeviceIoBuffered, para el dispositivo especificado.

Llamar a WdfDeviceInitSetIoTypeEx desde un controlador de filtro KMDF no tiene ningún efecto. En el caso de los controladores de filtro KMDF, el marco usa el tipo de E/S que especifica el controlador siguiente inferior de la pila de controladores.

Sin embargo, un controlador de filtro UMDF puede registrar preferencias para el método de acceso al búfer llamando a WdfDeviceInitSetIoTypeEx.

Todos los controladores UMDF de una pila de controladores deben usar el mismo método para acceder a los búferes de un dispositivo. Si UMDF determina que algunos controladores prefieren la E/S almacenada en búfer o la E/S directa para un dispositivo, mientras que otros controladores prefieren solo E/S almacenada en búfer para el dispositivo, UMDF usa E/S almacenada en búfer para todos los controladores. Si uno o varios de los controladores de una pila prefieren solo E/S almacenado en búfer, mientras que otros prefieren solo E/S directa, UMDF registra un evento en el registro de eventos del sistema y no inicia la pila de controladores.

Para obtener más información sobre los métodos de acceso al búfer, consulte Acceso a los búferes de datos.

Este método es el equivalente de UMDF 2.0 de IWDFDeviceInitialize2::SetIoTypePreference.

Ejemplos

En el ejemplo de código siguiente se inicializa una estructura de WDF_IO_TYPE_CONFIG, se establecen las preferencias de acceso al búfer del controlador para la E/S directa, se especifica que las transferencias menores de 32 KB deben usar E/S almacenadas en búfer y llama a WdfDeviceInitSetIoTypeEx.

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

WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.13
versión mínima de UMDF 2.0
encabezado de wdfdevice.h (incluya Wdf.h)
biblioteca de Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
irQL <= DISPATCH_LEVEL

Consulte también

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType