Compartilhar via


enumeração WDF_DEVICE_IO_TYPE (wudfddi_types.h)

[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Drivers universais do Windows devem usar UMDF 2. Para obter mais informações, consulte Introdução com UMDF.]

A enumeração WDF_DEVICE_IO_TYPE é usada para especificar um método para acessar buffers de dados.

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 do sistema.
WdfDeviceIoNeither
Reservado para uso do sistema.
WdfDeviceIoBuffered
O UMDF e o driver usam E/S em buffer para acessar buffers de dados.
WdfDeviceIoDirect
O UMDF e o driver usam E/S direta para acessar buffers de dados.
WdfDeviceIoBufferedOrDirect
O UMDF e o driver podem usar E/S em buffer ou E/S direta para acessar buffers de dados.
WdfDeviceIoMaximum
Reservado para uso do sistema.

Comentários

A enumeração WDF_DEVICE_IO_TYPE é usada como entrada para IWDFDeviceInitialize2::SetIoTypePreference e como saída de IWDFIoRequest2::GetEffectiveIoType.

Você deve usar as seguintes diretrizes ao escolher um tipo de E/S para o driver:

  • A E/S em buffer fornece a melhor segurança e confiabilidade, pois aplicativos e drivers acessam cópias separadas dos dados. Além disso, a E/S em buffer fornecerá o melhor desempenho se a maioria das transferências de dados for relativamente pequena (normalmente duas páginas de memória ou menos).
  • A E/S direta fornece o melhor desempenho se a maioria das solicitações de E/S transferir grandes quantidades de dados. No entanto, aplicativos e drivers acessam uma única cópia dos dados. Portanto, o driver deve copiar parâmetros especificados pelo aplicativo para a memória do driver local antes de validar os parâmetros para garantir que o aplicativo não modifique os parâmetros após a validação. Se o driver precisar validar grandes quantidades de dados do aplicativo, a E/S armazenada em buffer poderá ser uma opção melhor porque o driver não precisa copiar os dados antes de validá-los.
  • Normalmente, um driver de filtro que pode residir em várias pilhas de driver e executa pouco processamento de dados de aplicativo pode dar suporte a E/S em buffer e E/S direta e, portanto, pode especificar WdfDeviceIoBufferedOrDirect. No entanto, se o driver validar os parâmetros especificados pelo aplicativo, ele deverá copiá-los primeiro quando a E/S direta for usada.
Para obter mais informações sobre como acessar os buffers de dados de uma solicitação de E/S, consulte Acessando buffers de dados em drivers de UMDF-Based.

Para obter a versão KMDF dessa enumeração, consulte WDF_DEVICE_IO_TYPE.

Requisitos

Requisito Valor
Versão mínima do UMDF 1,9
Cabeçalho wudfddi_types.h (inclua Wudfddi.h)

Confira também

IWDFDeviceInitialize2::SetIoTypePreference

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL