KeInsertByKeyDeviceQueue-Funktion (wdm.h)

Die KeInsertByKeyDeviceQueue-Routine ruft die Drehsperre für die angegebene DeviceQueue ab und stellt einen Eintrag gemäß dem angegebenen Sortierschlüsselwert in die Warteschlange, wenn die Gerätewarteschlange auf den Status "Ausgelastet" festgelegt ist.

Syntax

BOOLEAN KeInsertByKeyDeviceQueue(
  [in, out] PKDEVICE_QUEUE       DeviceQueue,
  [in, out] PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
  [in]      ULONG                SortKey
);

Parameter

[in, out] DeviceQueue

Zeiger auf ein Steuerelementobjekt des Gerätewarteschlangentyps, für den der Aufrufer den Speicher bereitstellt.

[in, out] DeviceQueueEntry

Zeiger auf den Gerätewarteschlangeneintrag, der gemäß dem spezifischen Schlüsselwert in die Gerätewarteschlange eingefügt werden soll.

[in] SortKey

Gibt den Sortierschlüsselwert an, der die Position in der Gerätewarteschlange bestimmt, in die der Eintrag eingefügt werden soll.

Rückgabewert

Wenn die Gerätewarteschlange leer ist, wird FALSE zurückgegeben, was bedeutet, dass DeviceQueueEntry nicht in die Gerätewarteschlange eingefügt wird.

Hinweise

Die angegebene Gerätewarteschlangen-Spinsperre wird abgerufen, und der Zustand der Gerätewarteschlange wird überprüft. Wenn die Gerätewarteschlange auf den Status "Ausgelastet" festgelegt ist, wird der von DeviceQueueEntry angegebene IRP entsprechend dem Wert des Sortierschlüssels in die Gerätewarteschlange eingefügt, und die Spinsperre der Gerätewarteschlange wird freigegeben.

Der neue Eintrag wird in der Gerätewarteschlange nach allen Einträgen in der Warteschlange positioniert, deren Sortierschlüsselwerte kleiner oder gleich dem Sortierschlüsselwert sind und allen Einträgen mit größeren Sortierschlüsselwerten vorangestellt werden.

Wenn KeInsertByKeyDeviceQueueFALSE zurückgibt, muss der Aufrufer mit der Verarbeitung des IRP beginnen. Ein Aufruf von KeInsertDeviceQueue oder KeInsertByKeyDeviceQueue , wenn die Warteschlange leer ist, führt dazu, dass die Gerätewarteschlange vom Status "Nicht ausgelastet" in den Status "Ausgelastet" wechselt.

Bei dieser Routine handelt es sich um Code, der eine E/A-Anforderung an einen Gerätetreiber in die Warteschlange stellt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 2000.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL
DDI-Complianceregeln HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), MarkingQueuedIrps(wdm)

Weitere Informationen

KeInitializeDeviceQueue

KeInsertDeviceQueue

KeRemoveDeviceQueue

KeRemoveEntryDeviceQueue