Compartilhar via


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

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx