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 |