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) |