Функция KsAddIrpToCancelableQueue (ks.h)
Функция KsAddIrpToCancelableQueue добавляет IRP в очередь отменяемых IRP, что позволяет отменить IRP. Если ранее для IRP было задано состояние отменено, функция KsAddIrpToCancelableQueue завершает отмену этого IRP.
Синтаксис
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
);
Параметры
[in, out] QueueHead
Указывает хранилище, выделенное драйвером, для головки очереди, в которую добавляется IRP.
[in] SpinLock
Указывает на блокировку спина драйвера для доступа к очереди, указанной в QueueHead. Копия этого указателя хранится в KSQUEUE_SPINLOCK_IRP_STORAGE IRP для использования подпрограммой отмены, если это необходимо.
[in] Irp
Указывает IRP для добавления в очередь, указанную в QueueHead.
[in] ListLocation
Указывает, следует ли размещать этот IRP в начале или конце очереди. Это значение должно быть KsListEntryTail или KsListEntryHead.
[in, optional] DriverCancel
Необязательный параметр, указывающий используемую драйвером подпрограмму отмены. Если значение равно NULL, используется стандарт KsCancelRoutine .
Возвращаемое значение
None
Remarks
Если функция IRP была переведена в состояние отмены при вызове этой подпрограммы, KsAddIrpToCancelableQueue немедленно вызовет подпрограмму отмены, указанную в DriverCancel, или если в DriverCancel не указана подпрограмма отмены потоковой передачи по умолчанию.
Функция KsAddIrpToCancelableQueue позволяет отменять irP даже до их включения в список отмены или при перемещении из одного списка в другой. Эта функция может вызываться на уровне IRQ DISPATCH_LEVEL или ниже, если только очередь, выделенная драйвером, и все записи в очереди не являются резидентами системы или не выделены из постоянного хранилища.
Функция не использует блокировку отмены спина для добавления элементов в список. Доступ к списку синхронизируется с помощью предоставленной блокировки спина и зависит от атомарных операций в Irp-CancelRoutine>.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | ks.h (включая Ks.h) |
Библиотека | Ks.lib |