Freigeben über


WdfDeviceInitSetIoTypeEx-Funktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die WdfDeviceInitSetIoTypeEx-Methode legt die Methode oder Einstellung für den Zugriff eines Treibers auf die Datenpuffer fest, die in Lese- und Schreibanforderungen sowie Geräte-E/A-Steuerungsanforderungen für ein angegebenes Gerät enthalten sind.

Syntax

void WdfDeviceInitSetIoTypeEx(
  [in] PWDFDEVICE_INIT     DeviceInit,
  [in] PWDF_IO_TYPE_CONFIG IoTypeConfig
);

Parameter

[in] DeviceInit

Ein Zeiger auf eine WDFDEVICE_INIT-Struktur .

[in] IoTypeConfig

Zeiger auf WDF_IO_TYPE_CONFIG Struktur, die mithilfe WDF_IO_TYPE_CONFIG_INIT Makros initialisiert wurde.

Rückgabewert

Keine

Bemerkungen

Wenn Sie einen Treiber mit KMDF-Version 1.11 oder früher schreiben, müssen Sie stattdessen WdfDeviceInitSetIoType verwenden.

KMDF Ein KMDF-Treiber ruft WdfDeviceInitSetIoTypeEx auf, um eine Pufferzugriffsmethode für Lese- und Schreibanforderungen festzulegen. Für Geräte-E/A-Steuerungsanforderungen verwendet das Framework den Puffertyp, der im I/O-Steuerungscode (IOCTL) codiert ist.

UMDF Ein UMDF-Treiber ruft WdfDeviceInitSetIoTypeEx auf, um Einstellungen für Lese- und Schreibanforderungen sowie Geräte-E/A-Steuerelementanforderungen zu registrieren. Die Werte, die ein UMDF-Treiber für WdfDeviceInitSetIoTypeEx bereitstellt, sind nur Einstellungen und werden vom Framework nicht garantiert. Ihr Treiber kann WdfDeviceGetDeviceStackIoType aufrufen, um die Pufferzugriffsmethoden zu ermitteln, die UMDF den Lese-/Schreibanforderungen und E/A-Steuerelementanforderungen eines Geräts zugewiesen hat. Bei E/A-Steuerungsanforderungen kann sich die vom Framework verwendete Zugriffsmethode von der in der IOCTL angegebenen Zugriffsmethode und der vom Treiber angeforderten Zugriffsmethode unterscheiden.

Wenn ein Treiber WdfDeviceInitSetIoTypeEx aufruft, muss er dies tun, bevor er WdfDeviceCreate aufruft.

Wenn der Treiber WdfDeviceInitSetIoTypeEx nicht aufruft, legt das Framework die Pufferzugriffsmethode des Treibers für das angegebene Gerät auf WdfDeviceIoBuffered fest.

Das Aufrufen von WdfDeviceInitSetIoTypeEx über einen KMDF-Filtertreiber hat keine Auswirkung. Für KMDF-Filtertreiber verwendet das Framework den E/A-Typ, den der nächstniedrige Treiber im Treiberstapel angibt.

Ein UMDF-Filtertreiber kann jedoch Einstellungen für die Pufferzugriffsmethode registrieren, indem WdfDeviceInitSetIoTypeEx aufgerufen wird.

Alle UMDF-Treiber in einem Treiberstapel müssen dieselbe Methode für den Zugriff auf die Puffer eines Geräts verwenden. Wenn UMDF feststellt, dass einige Treiber entweder gepufferte E/A oder direkte E/A für ein Gerät bevorzugen, während andere Treiber nur gepufferte E/A für das Gerät bevorzugen, verwendet UMDF gepufferte E/A für alle Treiber. Wenn einer oder mehrere Treiber eines Stapels nur gepufferte E/A-Vorgänge bevorzugen, während andere nur direkte E/A bevorzugen, protokolliert UMDF ein Ereignis im Systemereignisprotokoll und startet den Treiberstapel nicht.

Weitere Informationen zu Pufferzugriffsmethoden finden Sie unter Zugreifen auf Datenpuffer.

Diese Methode ist das UMDF 2.0-Äquivalent von IWDFDeviceInitialize2::SetIoTypePreference.

Beispiele

Das folgende Codebeispiel initialisiert eine WDF_IO_TYPE_CONFIG-Struktur , legt die Pufferzugriffseinstellungen des Treibers auf direkte E/A-Einstellungen fest, gibt an, dass Übertragungen, die kleiner als 32 KB sind, gepufferte E/A verwenden sollen, und ruft WdfDeviceInitSetIoTypeEx auf.

WDF_IO_TYPE_CONFIG ioConfig;
WDF_IO_TYPE_CONFIG_INIT(&ioConfig);
ioConfig.ReadWriteIoType = WdfDeviceIoDirect;
ioConfig.DeviceControlIoType = WdfDeviceIoDirect;
ioConfig.DirectTransferThreshold = 32;

WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.13
UMDF-Mindestversion 2.0
Kopfzeile wdfdevice.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType