Partilhar 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.

Valor de retorno

Nenhum

Observações

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

kmdf chamadas de driver KMDF WdfDeviceInitSetIoTypeEx para definir um método de acesso a 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 para WdfDeviceInitSetIoTypeEx são apenas preferências e não têm garantia de serem usados pela estrutura. O driver pode chamar WdfDeviceGetDeviceStackIoType para determinar os métodos de acesso ao buffer atribuídos ao 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 usado pela estrutura 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 a buffer do driver para 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 umdf 2.0 de IWDFDeviceInitialize2::SetIoTypePreference.

Exemplos

O exemplo de código a seguir inicializa uma estrutura de WDF_IO_TYPE_CONFIG, define as preferências de acesso a buffer do driver para direcionar E/S, especifica que transferências menores que 32 KB devem usar E/S em buffer e chamadas 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
da 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

Consulte também

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType