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. Non vengono aggiunte nuove funzionalità 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, vedi Introduzione a 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_RETRIEVALtipizzato che specifica la modalità di recupero del buffer che si preferisce usare UMDF per rendere disponibili i buffer di una richiesta di I/O al driver.

[in] ReadWritePreference

Valore WDF_DEVICE_IO_TYPEtipizzato che specifica il metodo di accesso al buffer che si preferisce usare UMDF per i buffer di dati 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 di I/O del dispositivo.

Valore restituito

Nessuno

Osservazioni

Se un driver chiama SetIoTypePreference per un dispositivo, deve farlo dal IDriverEntry::OnDeviceAdd funzione di 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 lettura, scrittura e controllo I/O del 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 Specifica di una modalità di recupero 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 imposti 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 di dati in driver UMDF-Based.

Esempi

L'esempio di codice seguente mostra un segmento della funzione di callback di un driver IDriverEntry::OnDeviceAdd. 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);
...
}

Fabbisogno

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
piattaforma di destinazione Desktop
versione minima di UMDF 1.9
intestazione wudfddi.h (include Wudfddi.h)
dll WUDFx.dll

Vedere anche

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx