Freigeben über


WdfDeviceInitSetIoTypeEx-Funktion (wdfdevice.h)

[Gilt für KMDF und UMDF]

Die WdfDeviceInitSetIoTypeEx--Methode legt die Methode oder Einstellung fest, wie ein Treiber auf die Datenpuffer zugreift, die in Lese- und Schreibanforderungen sowie Geräte-E/A-Steuerelementanforderungen 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 initialisiert mithilfe WDF_IO_TYPE_CONFIG_INIT Makros.

Rückgabewert

Nichts

Bemerkungen

Wenn Sie einen Treiber mit KMDF Version 1.11 oder einer früheren Version schreiben, müssen Sie stattdessen WdfDeviceInitSetIoTypeverwenden.

KMDF-Ein KMDF-Treiber ruft WdfDeviceInitSetIoTypeEx auf, um eine Pufferzugriffsmethode für Lese- und Schreibanforderungen festzulegen. Für Geräte-E/A-Steuerelementanforderungen verwendet das Framework den Puffertyp, der im I/O-Steuerelementcode (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 nicht garantiert vom Framework verwendet. Ihr Treiber kann WdfDeviceGetDeviceStackIoType- aufrufen, um die Pufferzugriffsmethoden zu bestimmen, die UMDF den Lese-/Schreibanforderungen und E/A-Steuerelementanforderungen eines Geräts zugewiesen hat. Bei E/A-Steuerelementanforderungen kann sich die vom Framework verwendete Zugriffsmethode von der in der IOCTL angegebenen Zugriffsmethode und der vom Treiber angeforderten Zugriffsmethode unterscheiden.

Wenn ein Treiber WdfDeviceInitSetIoTypeExaufruft, muss er dies tun, bevor er WdfDeviceCreateaufruft.

Wenn der Treiber WdfDeviceInitSetIoTypeExnicht aufruft, legt das Framework die Pufferzugriffsmethode des Treibers auf WdfDeviceIoBufferedfür das angegebene Gerät fest.

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

Ein UMDF-Filtertreiber kann jedoch Einstellungen für die Pufferzugriffsmethode registrieren, indem WdfDeviceInitSetIoTypeExaufgerufen 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 der Treiber eines Stapels nur gepufferte E/A bevorzugen, während andere nur direkte E/A bevorzugen, protokolliert UMDF ein Ereignis im Systemereignisprotokoll und startet nicht den Treiberstapel.

Weitere Informationen zu Pufferzugriffsmethoden finden Sie unter Zugreifen auf Datenpuffer.

Diese Methode ist die UMDF 2.0-Entsprechung von IWDFDeviceInitialize2::SetIoTypePreference.

Beispiele

Im folgenden Codebeispiel wird eine WDF_IO_TYPE_CONFIG-Struktur initialisiert, die Pufferzugriffseinstellungen des Treibers auf direkte E/A festgelegt. Es wird angegeben, dass Übertragungen, die kleiner als 32 KB sind, gepufferte E/A-Vorgänge verwenden sollen, und ruft WdfDeviceInitSetIoTypeExauf.

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- Universal
Minimale KMDF-Version 1.13
Mindest-UMDF-Version 2.0
Header- wdfdevice.h (einschließen Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL- <= DISPATCH_LEVEL

Siehe auch

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType