WDF_IO_QUEUE_CONFIG-Struktur (wdfio.h)

[Gilt für KMDF und UMDF]

Die WDF_IO_QUEUE_CONFIG-Struktur enthält Konfigurationsinformationen für ein Framework-Warteschlangenobjekt.

Syntax

typedef struct _WDF_IO_QUEUE_CONFIG {
  ULONG                                       Size;
  WDF_IO_QUEUE_DISPATCH_TYPE                  DispatchType;
  WDF_TRI_STATE                               PowerManaged;
  BOOLEAN                                     AllowZeroLengthRequests;
  BOOLEAN                                     DefaultQueue;
  PFN_WDF_IO_QUEUE_IO_DEFAULT                 EvtIoDefault;
  PFN_WDF_IO_QUEUE_IO_READ                    EvtIoRead;
  PFN_WDF_IO_QUEUE_IO_WRITE                   EvtIoWrite;
  PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL          EvtIoDeviceControl;
  PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
  PFN_WDF_IO_QUEUE_IO_STOP                    EvtIoStop;
  PFN_WDF_IO_QUEUE_IO_RESUME                  EvtIoResume;
  PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE       EvtIoCanceledOnQueue;
  union {
    struct {
      ULONG NumberOfPresentedRequests;
    } Parallel;
  } Settings;
  WDFDRIVER                                   Driver;
} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;

Member

Size

Die Länge dieser Struktur in Bytes.

DispatchType

Ein WDF_IO_QUEUE_DISPATCH_TYPE Enumerator, der den Anforderungsverteilungstyp für die Warteschlange identifiziert.

PowerManaged

Ein WDF_TRI_STATE typisierter Wert, der bei Festlegung auf WdfTrue angibt, dass das Framework die Energieverwaltung der Warteschlange übernimmt.

Wenn WdfFalse festgelegt ist, muss der Treiber die Energieverwaltung der Warteschlange übernehmen.

Wenn WdfUseDefault festgelegt ist, übernimmt das Framework die Energieverwaltung für die Warteschlange, es sei denn, der Treiber ruft WdfFdoInitSetFilter auf.

Treiber über dem Energierichtlinienbesitzer im Treiberstapel dürfen das PowerManaged-Element nicht auf WdfTrue festlegen.

Weitere Informationen zu stromverwalteten E/A-Warteschlangen finden Sie unter Energieverwaltung für E/A-Warteschlangen.

AllowZeroLengthRequests

Ein boolescher Wert, der bei TRUE angibt, dass der Treiber Lese- oder Schreibanforderungen mit einer Pufferlänge von 0 von 0 empfängt, sodass das Framework diese Anforderungen an den Treiber übermittelt. Bei FALSE übermittelt das Framework diese Anforderungen nicht an den Treiber. stattdessen werden sie mit einer status von STATUS_SUCCESS abgeschlossen.

DefaultQueue

Ein boolescher Wert, der bei TRUE angibt, dass die Warteschlange die Standard-E/A-Warteschlange des Geräts ist. Bei FALSE ist die Warteschlange nicht die Standardwarteschlange des Geräts.

EvtIoDefault

Ein Zeiger auf die warteschlangenspezifische EvtIoDefault-Rückruffunktion des Treibers ( NULL).

EvtIoRead

Ein Zeiger auf die warteschlangenspezifische EvtIoRead-Rückruffunktion des Treibers ( NULL).

EvtIoWrite

Ein Zeiger auf die warteschlangenspezifische EvtIoWrite-Rückruffunktion des Treibers ( NULL).

EvtIoDeviceControl

Ein Zeiger auf die warteschlangenspezifische EvtIoDeviceControl-Rückruffunktion des Treibers ( NULL).

EvtIoInternalDeviceControl

Ein Zeiger auf die warteschlangenspezifische EvtIoInternalDeviceControl-Rückruffunktion des Treibers oder NULL.

EvtIoStop

Ein Zeiger auf die warteschlangenspezifische EvtIoStop-Rückruffunktion des Treibers ( NULL).

EvtIoResume

Ein Zeiger auf die warteschlangenspezifische EvtIoResume-Rückruffunktion des Treibers oder NULL.

EvtIoCanceledOnQueue

Ein Zeiger auf die warteschlangenspezifische EvtIoCanceledOnQueue-Rückruffunktion des Treibers ( NULL).

Settings

Settings.Parallel

Settings.Parallel.NumberOfPresentedRequests

Bei der parallelen Verteilmethode die maximale Anzahl von E/A-Anforderungen, die das Framework asynchron an die Anforderungshandler der E/A-Warteschlange übermittelt. Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise". Für die sequenziellen und manuellen Verteilmethoden muss dieser Member 0 sein. Dieses Element ist in Version 1.9 und höher von KMDF verfügbar.

Driver

Nur zur internen Verwendung. Auf NULL festgelegt. Dieses Element ist in Version 1.11 und höher von KMDF verfügbar.

Hinweise

Der Treiber muss die WDF_IO_QUEUE_CONFIG-Struktur initialisieren, indem er WDF_IO_QUEUE_CONFIG_INIT oder WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE aufruft.

Die WDF_IO_QUEUE_CONFIG-Struktur wird als Eingabeparameter für WdfIoQueueCreate verwendet.

Ab Version 1.9 von KMDF können Treiber den NumberOfPresentedRequests-Member verwenden, um die maximale Anzahl von E/A-Anforderungen anzugeben, die das Framework asynchron an die Anforderungshandler einer parallelen E/A-Warteschlange übermittelt. Nachdem das Framework die angegebene Anzahl von E/A-Anforderungen an den Treiber übermittelt hat, werden keine weiteren Anforderungen aus der Warteschlange übermittelt, bis der Treiber mindestens eine der Anforderungen abgeschlossen, abgebrochen oder erneut aus der Warteschlange ausgibt.

Für parallele Warteschlangen legen WDF_IO_QUEUE_CONFIG_INIT und WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE den NumberOfPresentedRequests-Member auf seinen Standardwert (-1) fest, was angibt, dass das Framework eine unbegrenzte Anzahl von E/A-Anforderungen an den Treiber übermitteln kann.

Anforderungen

Anforderung Wert
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfio.h (einschließen von Wdf.h)

Weitere Informationen

WDF_IO_QUEUE_CONFIG_INIT

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_IO_QUEUE_DISPATCH_TYPE

WdfIoQueueCreate

WdfIoQueueReadyNotify