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. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]
Die SetIoTypePreference--Methode gibt Ihre Einstellungen an, wie UMDF und der Treiber auf die Datenpuffer der E/A-Anforderungen eines Geräts zugreifen.
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-typed-Wert, der den Pufferabrufmodus angibt, den Sie UMDF verwenden möchten, um den Puffer einer E/A-Anforderung dem Treiber zur Verfügung zu stellen.
[in] ReadWritePreference
Ein WDF_DEVICE_IO_TYPE-typed-Wert, der die Pufferzugriffsmethode angibt, die UMDF für die Datenpuffer von Lese- und Schreibanforderungen verwendet werden 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-Steuerelementanforderungen verwendet werden soll.
Rückgabewert
Nichts
Bemerkungen
Wenn ein Treiber SetIoTypePreference- für ein Gerät aufruft, muss er dies über die IDriverEntry::OnDeviceAdd Rückruffunktion ausführen, bevor der Treiber IWDFDriver::CreateDeviceaufruft.
Wenn der Treiber SetIoTypePreferencenicht aufruft, legt UMDF den Parameter RetrievalMode parameter auf WdfDeviceIoBufferRetrievalCopyImmediately und legt die Pufferzugriffsmethode auf WdfDeviceIoBuffered für Lese-, Schreib- und Geräte-E/A-Steuerelementanforderungen fest.
UMDF verwendet möglicherweise nicht die Einstellungen, die der Treiber angibt, wenn er SetIoTypePreference-aufruft. Weitere Informationen dazu, wie UMDF einen Abrufmodus und eine Pufferzugriffsmethode auswäht, finden Sie unter Angeben eines Pufferabrufmodus und How UMDF Chooses a Buffer Access Method for an I/O Request.
Ein Treiber kann die Pufferzugriffsmethode nicht auf WdfDeviceIoDirect oder WdfDeviceIoBufferedOrDirect festlegen, es sei denn, er legt auch den parameter RetrievalMode auf WdfDeviceIoBufferRetrievalDeferredfest.
Weitere Informationen zum Zugreifen auf die Datenpuffer einer E/A-Anforderung finden Sie unter Zugreifen auf Datenpuffer in UMDF-Based Drivers.
Beispiele
Das folgende Codebeispiel zeigt ein Segment der IDriverEntry::OnDeviceAdd Rückruffunktion eines Treibers. Das Segment ruft die IWDFDeviceInitialize2 Schnittstelle ab und ruft dann SetIoTypePreferenceauf.
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 |
Mindest-UMDF-Version | 1.9 |
Header- | wudfddi.h (include Wudfddi.h) |
DLL- | WUDFx.dll |
Siehe auch
IWDFIoRequest2::GetEffectiveIoType