Freigeben über


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

Siehe auch

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue