Freigeben über


KsCancelIo-Funktion (ks.h)

Die KsCancelIo-Funktion bricht alle IRPs in der angegebenen Abbruchliste ab. Wenn ein IRP in der Liste keine Abbruchroutine aufweist, wird im IRP nur das Abbruchbit festgelegt. Die Funktion kann auf IRQ-Ebene DISPATCH_LEVEL oder niedriger aufgerufen werden.

Syntax

KSDDKAPI VOID KsCancelIo(
  [in, out] PLIST_ENTRY QueueHead,
  [in]      PKSPIN_LOCK SpinLock
);

Parameter

[in, out] QueueHead

Gibt den Kopf einer vom Treiber verwalteten Warteschlange an, die die zu abbrechenden IRP enthält.

[in] SpinLock

Zeigt auf eine vom Aufrufer zugewiesene Drehsperre für den Warteschlangenzugriff. Eine Kopie dieses Zeigers wird im KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) des IRP zur Verwendung durch die Abbruchroutine aufbewahrt, falls erforderlich.

Rückgabewert

Keine

Bemerkungen

KsCancelIo bricht alle IRPs in einer bestimmten vom Treiber verwalteten Warteschlange ab. Wenn die IRP über eine Abbruchroutine verfügt, wird die Abbruchroutine aufgerufen. Andernfalls wird das Abbruchflag im IRP auf TRUE festgelegt. Die IRPs werden von dieser Routine nicht aus der Warteschlange entfernt. Es liegt in der alleinigen Verantwortung des Treibers, sicherzustellen, dass die IRPs entweder durch die im IRP angegebene Abbruchroutine oder durch eine andere vom Treiber bereitgestellte Funktionalität entfernt werden.

Wenn das abgebrochene IRP über eine vom Treiber bereitgestellte Abbruchroutine verfügt, kann die Abbruch-Drehsperre von der IRP abgerufen werden, indem KSQUEUE_SPINLOCK_IRP_STORAGE aufgerufen wird.

Anforderungen

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

Weitere Informationen

KsAddIrpToCancelableQueue