Compartilhar via


Função WdfDeviceInitSetIoTypeEx (wdfdevice.h)

[Aplica-se a KMDF e UMDF]

O método WdfDeviceInitSetIoTypeEx define o método ou a preferência de como um driver acessará os buffers de dados incluídos em solicitações de leitura e gravação, bem como solicitações de controle de E/S do dispositivo, para um dispositivo especificado.

Sintaxe

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

Parâmetros

[in] DeviceInit

Um ponteiro para uma estrutura WDFDEVICE_INIT .

[in] IoTypeConfig

Ponteiro para WDF_IO_TYPE_CONFIG estrutura inicializada usando WDF_IO_TYPE_CONFIG_INIT macro.

Retornar valor

Nenhum

Comentários

Se você estiver escrevendo um driver usando o KMDF versão 1.11 ou anterior, deverá usar WdfDeviceInitSetIoType.

KMDF Um driver KMDF chama WdfDeviceInitSetIoTypeEx para definir um método de acesso de buffer para solicitações de leitura e gravação. Para solicitações de controle de E/S do dispositivo, a estrutura usa o tipo de buffer codificado no IOCTL (código de controle de E/S).

UMDF Um driver UMDF chama WdfDeviceInitSetIoTypeEx para registrar preferências para solicitações de leitura e gravação, bem como solicitações de controle de E/S do dispositivo. Os valores que um driver UMDF fornece a WdfDeviceInitSetIoTypeEx são apenas preferências e não têm garantia de serem usados pela estrutura. Seu driver pode chamar WdfDeviceGetDeviceStackIoType para determinar os métodos de acesso ao buffer atribuídos pelo UMDF às solicitações de leitura/gravação de um dispositivo e solicitações de controle de E/S. Para solicitações de controle de E/S, o método de acesso que a estrutura usa pode ser diferente do método de acesso especificado no IOCTL e do método de acesso solicitado pelo driver.

Se um driver chamar WdfDeviceInitSetIoTypeEx, ele deverá fazer isso antes de chamar WdfDeviceCreate.

Se o driver não chamar WdfDeviceInitSetIoTypeEx, a estrutura definirá o método de acesso ao buffer do driver como WdfDeviceIoBuffered, para o dispositivo especificado.

Chamar WdfDeviceInitSetIoTypeEx de um driver de filtro KMDF não tem efeito. Para drivers de filtro KMDF, a estrutura usa o tipo de E/S que o driver mais baixo da pilha de driver especifica.

No entanto, um driver de filtro UMDF pode registrar preferências para o método de acesso a buffer chamando WdfDeviceInitSetIoTypeEx.

Todos os drivers UMDF em uma pilha de driver devem usar o mesmo método para acessar os buffers de um dispositivo. Se o UMDF determinar que alguns drivers preferem E/S em buffer ou E/S direta para um dispositivo, enquanto outros drivers preferem apenas E/S em buffer para o dispositivo, o UMDF usa E/S em buffer para todos os drivers. Se um ou mais drivers de uma pilha preferirem apenas E/S em buffer, enquanto outros preferirem apenas E/S direta, o UMDF registrará um evento no log de eventos do sistema e não iniciará a pilha de driver.

Para obter mais informações sobre métodos de acesso a buffers, consulte Acessando buffers de dados.

Esse método é o equivalente ao UMDF 2.0 de IWDFDeviceInitialize2::SetIoTypePreference.

Exemplos

O exemplo de código a seguir inicializa uma estrutura WDF_IO_TYPE_CONFIG , define as preferências de acesso a buffer do driver para E/S direta, especifica que transferências menores que 32 KB devem usar E/S em buffer e chama 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
Plataforma de Destino Universal
Versão mínima do KMDF 1.13
Versão mínima do UMDF 2,0
Cabeçalho wdfdevice.h (inclua Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL

Confira também

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType