Freigeben über


KsCancelIo-Funktion (ks.h)

Die KsCancelIo--Funktion bricht alle IRPs in der angegebenen Abbruchliste ab. Wenn ein IRP in der Liste nicht über eine Abbruchroutine verfügt, wird nur das Cancel-Bit im IRP 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

Verweist auf eine vom Anrufer zugewiesene Drehungssperre für den Warteschlangenzugriff. Eine Kopie dieses Zeigers wird bei Bedarf in der KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) des IRP für die Verwendung durch die Cancel-Routine aufbewahrt.

Rückgabewert

Nichts

Bemerkungen

KsCancelIo alle IRPs in einer bestimmten vom Treiber verwalteten Warteschlange abbricht. Wenn das IRP über eine Abbruchroutine verfügt, wird die Cancel-Routine aufgerufen. Andernfalls wird das Cancel-Flag 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 von der im IRP angegebenen Cancel-Routine oder von einer anderen vom Treiber bereitgestellten Funktionalität entfernt werden.

Wenn das abgebrochene IRP über eine vom Treiber bereitgestellte Cancel-Routine verfügt, kann die Drehungssperre vom IRP abgerufen werden, indem KSQUEUE_SPINLOCK_IRP_STORAGE aufgerufen wird.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ks.h (enthalten Ks.h)
Library Ks.lib
IRQL- < DISPATCH_LEVEL

Siehe auch

KsAddIrpToCancelableQueue