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

None

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 a búfer para 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 codificado 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 a WdfDeviceInitSetIoTypeEx son solo preferencias y no se garantiza que lo use el marco. El controlador puede llamar a WdfDeviceGetDeviceStackIoType para determinar los métodos de acceso de 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 en la pila de controladores.

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

Todos los controladores de 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 E/S almacenados en búfer o E/S directa para un dispositivo, mientras que otros controladores prefieren solo E/S almacenados 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 almacenados 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.13
Versión mínima de UMDF 2.0
Encabezado wdfdevice.h (incluya Wdf.h)
Library 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