KsRemoveIrpFromCancelableQueue-Funktion (ks.h)
Die KsRemoveIrpFromCancelableQueue-Funktion wird die nächste nicht eingeschränkte IRP aus der angegebenen Warteschlange eingeblenkt, die abgebrochen werden kann, und entfernt den Abbruchstatus. Die Funktion durchsucht die Liste, bis ein IRP gefunden wird, das eine Abbruchroutine aufweist oder bis das Ende der Liste erreicht ist. Die Funktion minimiert die Verwendung der Drehungssperre, indem die bereitgestellte Drehsperre verwendet wird, um den Zugriff in den meisten Fällen zu synchronisieren. Die Funktion kann auf IRQ-Ebene DISPATCH_LEVEL oder niedriger aufgerufen werden.
Syntax
KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] KSIRP_REMOVAL_OPERATION RemovalOperation
);
Parameter
[in, out] QueueHead
Verweist auf den Kopf der Warteschlange, aus der das IRP entfernt werden soll.
[in] SpinLock
Verweist auf die Drehungssperre des Treibers für den Warteschlangenzugriff.
[in] ListLocation
Gibt an, ob dieses IRP vom Anfang oder Ende der Warteschlange stammen soll.
[in] RemovalOperation
Gibt an, ob das IRP aus der Liste entfernt oder einfach durch Festlegen der Cancel-Funktion auf NULL-entfernt wird. Wenn es nur erworben wird, muss das IRP später mit KsReleaseIrpOnCancelableQueue oder vollständig mit KsRemoveSpecificIrpFromCancelableQueuefreigegeben werden.
Rückgabewert
Die KsRemoveIrpFromCancelableQueue Funktion gibt die nächste nicht erfüllte IRP in der Liste zurück, oder sie gibt NULL- zurück, wenn keine gefunden wird oder wenn ein nicht erworbenes IRP nicht gefunden wurde, nicht gefunden werden kann.
Bemerkungen
Diese Enumerationen werden in den vorherigen Parametern verwendet, um zu steuern, wo das IRP entfernt wird und wie.
typedef enum {
KsListEntryTail,
KsListEntryHead
} KSLIST_ENTRY_LOCATION;
typedef enum {
KsAcquireOnly,
KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ks.h (enthalten Ks.h) |
Library | Ks.lib |