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 |