Freigeben über


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

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)-

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx