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 |