Método IWDFDeviceInitialize2::SetIoTypePreference (wudfddi.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.]
O método SetIoTypePreference especifica suas preferências de como o UMDF e o driver acessam os buffers de dados das solicitações de E/S de um dispositivo.
Sintaxe
void SetIoTypePreference(
[in] WDF_DEVICE_IO_BUFFER_RETRIEVAL RetrievalMode,
[in] WDF_DEVICE_IO_TYPE ReadWritePreference,
[in] WDF_DEVICE_IO_TYPE IoControlPreference
);
Parâmetros
[in] RetrievalMode
Um valor de tipo WDF_DEVICE_IO_BUFFER_RETRIEVAL que especifica o modo de recuperação de buffer que você prefere que o UMDF use para disponibilizar buffers de uma solicitação de E/S para o driver.
[in] ReadWritePreference
Um valor de tipo WDF_DEVICE_IO_TYPE que especifica o método de acesso ao buffer que você prefere que o UMDF use para os buffers de dados de solicitações de leitura e gravação.
[in] IoControlPreference
Um valor de tipo WDF_DEVICE_IO_TYPE que especifica o método de acesso ao buffer que você prefere que o UMDF use para os buffers de dados de solicitações de controle de E/S do dispositivo.
Retornar valor
Nenhum
Comentários
Se um driver chamar SetIoTypePreference para um dispositivo, ele deverá fazer isso de sua função de retorno de chamada IDriverEntry::OnDeviceAdd , antes que o driver chame IWDFDriver::CreateDevice.
Se o driver não chamar SetIoTypePreference, o UMDF definirá o parâmetro RetrievalMode como WdfDeviceIoBufferRetrievalCopyImmediately e definirá o método de acesso ao buffer como WdfDeviceIoBuffered para solicitações de controle de leitura, gravação e E/S do dispositivo.
O UMDF pode não usar as preferências especificadas pelo driver ao chamar SetIoTypePreference. Para obter mais informações sobre como o UMDF escolhe um modo de recuperação e um método de acesso ao buffer, consulte Especificando um modo de recuperação de buffer e Como o UMDF escolhe um método de acesso de buffer para uma solicitação de E/S.
Um driver não pode definir o método de acesso ao buffer como WdfDeviceIoDirect ou WdfDeviceIoBufferedOrDirect , a menos que também defina o parâmetro RetrievalMode como WdfDeviceIoBufferRetrievalDeferred.
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.
Exemplos
O exemplo de código a seguir mostra um segmento da função de retorno de chamada IDriverEntry::OnDeviceAdd de um driver. O segmento obtém a interface IWDFDeviceInitialize2 e chama SetIoTypePreference.
HRESULT
CMyDriver::OnDeviceAdd(
__in IWDFDriver *FxWdfDriver,
__in IWDFDeviceInitialize *FxDeviceInit
)
{
...
//
// Declare an IWDFDeviceInitialize2 interface pointer and obtain the
// IWDFDeviceInitialize2 interface from the IWDFDeviceInitialize interface.
//
CComQIPtr<IWDFDeviceInitialize2> di2 = FxDeviceInit;
//
// For this device, set the retrieval mode to deferred, set
// the access method to buffered for read and write requests,
// and set the access mode to direct for device I/O control requests.
//
di2->SetIoTypePreference(WdfDeviceIoBufferRetrievalDeferred,
WdfDeviceIoBuffered,
WdfDeviceIoDirect);
...
}
Requisitos
Requisito | Valor |
---|---|
Fim do suporte | Indisponível no UMDF 2.0 e posterior. |
Plataforma de Destino | Área de Trabalho |
Versão mínima do UMDF | 1,9 |
Cabeçalho | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |
Confira também
IWDFIoRequest2::GetEffectiveIoType