Método IWDFDeviceInitialize2::SetIoTypePreference (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda 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 WDF_DEVICE_IO_BUFFER_RETRIEVALdigitado que especifica o modo de recuperação de buffer que você prefere que o UMDF use para disponibilizar os buffers de uma solicitação de E/S para o driver.
[in] ReadWritePreference
Um valor WDF_DEVICE_IO_TYPEdigitado 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 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.
Valor de retorno
Nenhum
Observações
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 de buffer para 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 de 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 de buffer para 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 UMDF-Based Drivers.
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, em seguida, 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. |
da Plataforma de Destino | Área de trabalho |
versão mínima do UMDF | 1.9 |
cabeçalho | wudfddi.h (inclua Wudfddi.h) |
de DLL | WUDFx.dll |
Consulte também
IWDFIoRequest2::GetEffectiveIoType