Freigeben über


KsRemoveIrpFromCancelableQueue-Funktion (ks.h)

Die KsRemoveIrpFromCancelableQueue-Funktion löst die nächste nicht eingeschränkte IRP aus der angegebenen Warteschlange auf, die abgebrochen werden kann, und entfernt den abbruchfähigen status. 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 Drehsperre zum Abbrechen, indem sie in den meisten Fällen die bereitgestellte Spinsperre verwendet, um den Zugriff 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

Zeigt auf den Kopf der Warteschlange, aus der die IRP entfernt werden soll.

[in] SpinLock

Verweist auf die Spin-Sperre des Treibers für den Warteschlangenzugriff.

[in] ListLocation

Gibt an, ob diese IRP vom Anfang oder Ende der Warteschlange stammen soll.

[in] RemovalOperation

Gibt an, ob der IRP aus der Liste entfernt oder einfach abgerufen wird, indem die Cancel-Funktion auf NULL festgelegt wird. Wenn es nur erworben wird, muss das IRP später mit KsReleaseIrpOnCancelableQueue freigegeben oder mit KsRemoveSpecificIrpFromCancelableQueue vollständig entfernt werden.

Rückgabewert

Die KsRemoveIrpFromCancelableQueue-Funktion gibt den nächsten nicht erfüllten IRP in der Liste zurück, oder sie gibt NULL zurück, wenn keine gefunden wurde oder wenn ein nicht bereits erworbener IRP nicht gefunden werden kann.

Hinweise

Diese Enumerationen werden in den vorherigen Parametern verwendet, um zu steuern, wo und wie das IRP entfernt wird.

typedef enum {
    KsListEntryTail,
    KsListEntryHead
} KSLIST_ENTRY_LOCATION;

typedef enum {
    KsAcquireOnly,
    KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ks.h (einschließlich Ks.h)
Bibliothek Ks.lib

Weitere Informationen

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue