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 |