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

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx