Функция IoCsqRemoveIrp (wdm.h)

Подпрограмма IoCsqRemoveIrp удаляет определенный IRP из очереди.

Синтаксис

PIRP IoCsqRemoveIrp(
  [in, out] PIO_CSQ             Csq,
  [in, out] PIO_CSQ_IRP_CONTEXT Context
);

Параметры

[in, out] Csq

Указатель на структуру IO_CSQ для безопасной для отмены очереди IRP драйвера. Эта структура должна быть инициализирована ioCsqInitialize или IoCsqInitializeEx.

[in, out] Context

Указатель на структуру IO_CSQ_IRP_CONTEXT , которая определяет Удаляемую IRP. Структура IO_CSQ_IRP_CONTEXT инициализируется IoCsqInsertIrp или IoCsqInsertIrpEx при первой вставке IRP в очередь.

Возвращаемое значение

Эта подпрограмма возвращает указатель на IRP, который был удален из очереди, или значение NULL , если этот IRP был отменен.

Комментарии

IoCsqRemoveIrp использует подпрограммы диспетчеризации очереди для удаления IRP. Процедура IoCsqRemoveIrp :

  1. Вызывает подпрограмму CsqAcquireLock очереди, чтобы заблокировать очередь.
  2. Использует параметр IrpContext , чтобы определить, какой IRP следует удалить, и вызывает подпрограмму CsqRemoveIrp очереди для удаления этой IRP.
  3. Вызывает подпрограмму CsqReleaseLock очереди, чтобы разблокировать очередь.
Драйверы могут использовать подпрограмму IoCsqRemoveNextIrp для удаления IRP, соответствующего определенному критерию. Дополнительные сведения см. в разделе Отмена безопасных очередей IRP.

Обратите внимание, что подпрограммы IoCsqXxx используют элемент DriverContext[3] IRP для хранения сведений о контексте IRP. Драйверы, использующие эти подпрограммы для постановки в очередь IRP, должны оставить этот элемент неиспользуем.

Вызывающие устройства IoCsqRemoveIrp должны выполняться в среде IRQL <= DISPATCH_LEVEL. Процедуры обратного вызова драйвера должны правильно работать в этом IRQL.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows XP и более поздних версиях Windows. Драйверы, которые также должны работать в Windows 2000 и Windows 98/Me, могут вместо этого ссылаться на Csq.lib, чтобы использовать подпрограмму.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL (см. раздел "Примечания")

См. также раздел

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveNextIrp