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 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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de