IWDFDeviceInitialize2::SetIoTypePreference-Methode (wudfddi.h)
[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 in neueren Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.]
Die SetIoTypePreference-Methode gibt Ihre Einstellungen für den Zugriff von UMDF und dem Treiber auf die Datenpuffer der E/A-Anforderungen eines Geräts an.
Syntax
void SetIoTypePreference(
[in] WDF_DEVICE_IO_BUFFER_RETRIEVAL RetrievalMode,
[in] WDF_DEVICE_IO_TYPE ReadWritePreference,
[in] WDF_DEVICE_IO_TYPE IoControlPreference
);
Parameter
[in] RetrievalMode
Ein WDF_DEVICE_IO_BUFFER_RETRIEVAL typisierter Wert, der den Pufferabrufmodus angibt, den Sie umDF bevorzugen, um die Puffer einer E/A-Anforderung für den Treiber verfügbar zu machen.
[in] ReadWritePreference
Ein WDF_DEVICE_IO_TYPE typisierter Wert, der die Pufferzugriffsmethode angibt, die UMDF für die Datenpuffer von Lese- und Schreibanforderungen verwenden soll.
[in] IoControlPreference
Ein WDF_DEVICE_IO_TYPE typisierter Wert, der die Pufferzugriffsmethode angibt, die UMDF für die Datenpuffer von Geräte-E/A-Steuerungsanforderungen verwenden soll.
Rückgabewert
Keine
Bemerkungen
Wenn ein Treiber SetIoTypePreference für ein Gerät aufruft, muss er dies über seine IDriverEntry::OnDeviceAdd-Rückruffunktion tun, bevor der Treiber IWDFDriver::CreateDevice aufruft.
Wenn der Treiber SetIoTypePreference nicht aufruft, legt UMDF den RetrievalMode-Parameter auf WdfDeviceIoBufferRetrievalCopyImmediately und die Pufferzugriffsmethode für Lese-, Schreib- und Geräte-E/A-Steuerungsanforderungen auf WdfDeviceIoBuffered fest.
UMDF verwendet möglicherweise nicht die Einstellungen, die der Treiber beim Aufrufen von SetIoTypePreference angibt. Weitere Informationen dazu, wie UMDF einen Abrufmodus und eine Pufferzugriffsmethode auswäht, finden Sie unter Angeben eines Pufferabrufmodus und Auswählen einer Pufferzugriffsmethode für eine E/A-Anforderung durch UMDF.
Ein Treiber kann die Pufferzugriffsmethode nicht auf WdfDeviceIoDirect oder WdfDeviceIoBufferedOrDirect festlegen, es sei denn, er legt auch den RetrievalMode-Parameter auf WdfDeviceIoBufferRetrievalDeferred fest.
Weitere Informationen zum Zugreifen auf die Datenpuffer einer E/A-Anforderung finden Sie unter Zugreifen auf Datenpuffer in UMDF-Based Treibern.
Beispiele
Das folgende Codebeispiel zeigt ein Segment der IDriverEntry::OnDeviceAdd-Rückruffunktion eines Treibers. Das Segment ruft die IWDFDeviceInitialize2-Schnittstelle ab und ruft dann SetIoTypePreference auf.
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);
...
}
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform | Desktop |
UMDF-Mindestversion | 1.9 |
Kopfzeile | wudfddi.h (include Wudfddi.h) |
DLL | WUDFx.dll |
Weitere Informationen
IWDFIoRequest2::GetEffectiveIoType