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 |