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