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


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

Подпрограмма IoCsqRemoveNextIrp удаляет следующий соответствующий IRP в очереди.

Синтаксис

PIRP IoCsqRemoveNextIrp(
  [in, out]      PIO_CSQ Csq,
  [in, optional] PVOID   PeekContext
);

Параметры

[in, out] Csq

Указатель на таблицу диспетчеризации драйвера для очередей IRP с безопасной отменой. Таблица диспетчеризации должна быть инициализирована с помощью IoCsqInitialize.

[in, optional] PeekContext

Указатель на определяемое драйвером контекстное значение. IoCsqRemoveNextIrp передает этот параметр в подпрограмму CsqPeekNextIrp драйвера. Дополнительные сведения см. в разделе "Примечания".

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

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

Комментарии

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

  1. Вызывает подпрограмму CsqAcquireLock очереди для блокировки очереди.
  2. Вызывает подпрограмму CsqPeekNextIrp очереди, чтобы найти следующий соответствующий IRP в очереди. IoCsqRemoveNextIrp передает значение параметра PeekContext в качестве параметра PeekContextcsqPeekNextIrp. CsqPeekNextIrp возвращает указатель на следующий соответствующий IRP или null , если соответствующий IRP отсутствует.
  3. Если возвращаемое значение CsqPeekNextIrp не равно NULL, IoCsqRemoveNextIrp вызывает подпрограмму CsqRemoveIrp очереди для удаления IRP.
  4. Вызывает подпрограмму CsqReleaseLock очереди, чтобы разблокировать очередь.
Дополнительные сведения см. в разделе Отмена безопасных очередей IRP.

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

Вызывающие устройства IoCsqRemoveNextIrp должны выполняться в среде 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

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp