Condividi tramite


Metodo IWDFDeviceInitialize2::SetIoTypePreference (wudfddi.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione con UMDF.]

Il metodo SetIoTypePreference specifica le preferenze per il modo in cui UMDF e il driver accedono ai buffer di dati delle richieste di I/O di un dispositivo.

Sintassi

void SetIoTypePreference(
  [in] WDF_DEVICE_IO_BUFFER_RETRIEVAL RetrievalMode,
  [in] WDF_DEVICE_IO_TYPE             ReadWritePreference,
  [in] WDF_DEVICE_IO_TYPE             IoControlPreference
);

Parametri

[in] RetrievalMode

Valore WDF_DEVICE_IO_BUFFER_RETRIEVAL tipizzato che specifica la modalità di recupero del buffer che si preferisce usare UMDF per rendere disponibili i buffer di una richiesta di I/O per il driver.

[in] ReadWritePreference

Valore WDF_DEVICE_IO_TYPE tipizzato che specifica il metodo di accesso al buffer da usare per i buffer delle richieste di lettura e scrittura.

[in] IoControlPreference

Valore WDF_DEVICE_IO_TYPE tipizzato che specifica il metodo di accesso al buffer che si preferisce usare UMDF per i buffer di dati delle richieste di controllo I/O del dispositivo.

Valore restituito

nessuno

Osservazioni

Se un driver chiama SetIoTypePreference per un dispositivo, deve farlo dalla relativa funzione IDriverEntry::OnDeviceAdd callback, prima che il driver chiami IWDFDriver::CreateDevice.

Se il driver non chiama SetIoTypePreference, UMDF imposta il parametro RetrievalMode su WdfDeviceIoBufferRetrievalCopyImmediately e imposta il metodo di accesso al buffer su WdfDeviceIoBuffered per le richieste di controllo I/O di lettura, scrittura e dispositivo.

UMDF potrebbe non usare le preferenze specificate dal driver quando chiama SetIoTypePreference. Per altre informazioni su come UMDF sceglie una modalità di recupero e un metodo di accesso al buffer, vedere Specificare una modalità di recupero del buffer e come UMDF sceglie un metodo di accesso al buffer per una richiesta di I/O.

Un driver non può impostare il metodo di accesso al buffer su WdfDeviceIoDirect o WdfDeviceIoBufferedOrDirect, a meno che non imposta anche il parametro RetrievalMode su WdfDeviceIoBufferRetrievalDeferred.

Per altre informazioni sull'accesso ai buffer di dati di una richiesta di I/O, vedere Accesso ai buffer dei dati in UMDF-Based driver.

Esempio

Nell'esempio di codice seguente viene illustrato un segmento della funzione IDriverEntry::OnDeviceAdd callback. Il segmento ottiene l'interfaccia IWDFDeviceInitialize2 e quindi chiama 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);
...
}

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1,9
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx