KsAddIrpToCancelableQueue-Funktion (ks.h)
Die KsAddIrpToCancelableQueue-Funktion fügt einer Warteschlange abbruchbarer IRPs einen IRP hinzu, sodass die IRP abgebrochen werden kann. Wenn die IRP zuvor auf einen abgebrochenen Zustand festgelegt wurde, schließt die KsAddIrpToCancelableQueue-Funktion den Abbruch dieses IRP ab.
Syntax
KSDDKAPI VOID KsAddIrpToCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] PIRP Irp,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in, optional] PDRIVER_CANCEL DriverCancel
);
Parameter
[in, out] QueueHead
Gibt den vom Treiber zugewiesenen Speicher für den Kopf der Warteschlange an, der das IRP hinzugefügt werden soll.
[in] SpinLock
Zeigt auf die Spin-Sperre des Treibers für den Warteschlangenzugriff auf die unter QueueHead angegebene Warteschlange. Eine Kopie dieses Zeigers wird im KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) des IRP zur Verwendung durch die Abbruchroutine aufbewahrt, falls erforderlich.
[in] Irp
Gibt den IRP an, der der in QueueHead angegebenen Warteschlange hinzugefügt werden soll.
[in] ListLocation
Gibt an, ob diese IRP am Anfang oder Am Ende der Warteschlange platziert werden soll. Dieser Wert muss KsListEntryTail oder KsListEntryHead sein.
[in, optional] DriverCancel
Optionaler Parameter, der eine vom Treiber bereitgestellte Abbruchroutine für die Verwendung angibt. Wenn dies NULL ist, wird die Standard-KsCancelRoutine verwendet.
Rückgabewert
Keine
Bemerkungen
Wenn die IRP beim Aufruf dieser Routine in einen Abbruchzustand versetzt wurde, ruft KsAddIrpToCancelableQueue sofort die unter DriverCancel angegebene Abbruchroutine auf, oder wenn bei DriverCancel keine Routine angegeben wurde, wird die Standardmäßige Streamingabbruchroutine aufgerufen.
Mit der Funktion KsAddIrpToCancelableQueue können IRPs abgebrochen werden, bevor sie in eine Abbruchliste gesetzt werden oder wenn sie von einer Liste in eine andere verschoben werden. Diese Funktion kann auf IRQ-Ebene DISPATCH_LEVEL oder niedriger aufgerufen werden, es sei denn, die vom Treiber zugewiesene Warteschlange und alle Einträge in der Warteschlange sind systemresident oder aus dem residenten Speicher zugeordnet.
Die Funktion verwendet nicht die Drehsperre abbrechen, um der Liste Elemente hinzuzufügen. Der Zugriff auf die Liste wird mithilfe der bereitgestellten Spin-Sperre synchronisiert und basiert auf atomaren Vorgängen auf Irp-CancelRoutine>.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ks.h (einschließlich Ks.h) |
Bibliothek | Ks.lib |