Поделиться через


Функция 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, соответствующего конкретному критерию. Дополнительные сведения см. в Cancel-Safe очередях IRP.

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows XP и более поздних версиях Windows. Драйверы, которые также должны работать в Windows 2000 и Windows 98/Me, могут вместо этого связаться с Csq.lib, чтобы использовать подпрограмму.
целевая платформа Всеобщий
заголовка wdm.h (include 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