enumeración WDF_DEVICE_IO_TYPE (wudfddi_types.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.

La enumeración WDF_DEVICE_IO_TYPE se usa para especificar un método para acceder a los búferes de datos.

Syntax

typedef enum _WDF_DEVICE_IO_TYPE {
  WdfDeviceIoUndefined,
  WdfDeviceIoNeither,
  WdfDeviceIoBuffered,
  WdfDeviceIoDirect,
  WdfDeviceIoBufferedOrDirect,
  WdfDeviceIoMaximum
} WDF_DEVICE_IO_TYPE, *PWDF_DEVICE_IO_TYPE;

Constantes

 
WdfDeviceIoUndefined
Reservado para uso del sistema.
WdfDeviceIoNeither
Reservado para uso del sistema.
WdfDeviceIoBuffered
UMDF y el controlador usan E/S almacenadas en búfer para acceder a los búferes de datos.
WdfDeviceIoDirect
UMDF y el controlador usan E/S directa para acceder a los búferes de datos.
WdfDeviceIoBufferedOrDirect
UMDF y el controlador pueden usar E/S almacenada en búfer o E/S directa para acceder a los búferes de datos.
WdfDeviceIoMaximum
Reservado para uso del sistema.

Comentarios

La enumeración WDF_DEVICE_IO_TYPE se usa como entrada para IWDFDeviceInitialize2::SetIoTypePreference y como salida de IWDFIoRequest2::GetEffectiveIoType.

Debe usar las siguientes directrices al elegir un tipo de E/S para el controlador:

  • La E/S almacenada en búfer proporciona la mejor seguridad y confiabilidad, ya que las aplicaciones y los controladores acceden a copias independientes de los datos. Además, la E/S almacenada en búfer proporciona el mejor rendimiento si la mayoría de las transferencias de datos son relativamente pequeñas (normalmente dos páginas de memoria o menos).
  • E/S directa proporciona el mejor rendimiento si la mayoría de las solicitudes de E/S transfieren grandes cantidades de datos. Sin embargo, las aplicaciones y los controladores acceden a una sola copia de los datos. Por lo tanto, el controlador debe copiar los parámetros especificados por la aplicación en la memoria del controlador local antes de validar los parámetros para asegurarse de que la aplicación no modifica los parámetros después de la validación. Si el controlador debe validar grandes cantidades de datos de la aplicación, la E/S almacenada en búfer podría ser una mejor opción porque el controlador no tiene que copiar los datos antes de validarlos.
  • Normalmente, un controlador de filtro que puede residir en varias pilas de controladores y realiza poco procesamiento de datos de aplicación puede admitir E/S almacenada en búfer y E/S directa y, por tanto, puede especificar WdfDeviceIoBufferedOrDirect. Sin embargo, si el controlador valida los parámetros especificados por la aplicación, primero debe copiarlos cuando se usa E/S directa.
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 controladores de UMDF-Based.

Para obtener la versión de KMDF de esta enumeración, consulte WDF_DEVICE_IO_TYPE.

Requisitos

Requisito Value
Versión mínima de UMDF 1,9
Encabezado wudfddi_types.h (incluya Wudfddi.h)

Consulte también

IWDFDeviceInitialize2::SetIoTypePreference

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL