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. 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

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx