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
IWDFIoRequest2::GetEffectiveIoType