Функция 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 :
- Вызывает подпрограмму CsqAcquireLock очереди для блокировки очереди.
- Вызывает подпрограмму CsqPeekNextIrp очереди, чтобы найти следующий соответствующий IRP в очереди. IoCsqRemoveNextIrp передает значение параметра PeekContext в качестве параметра PeekContextcsqPeekNextIrp. CsqPeekNextIrp возвращает указатель на следующий соответствующий IRP или null , если соответствующий IRP отсутствует.
- Если возвращаемое значение CsqPeekNextIrp не равно NULL, IoCsqRemoveNextIrp вызывает подпрограмму CsqRemoveIrp очереди для удаления IRP.
- Вызывает подпрограмму CsqReleaseLock очереди, чтобы разблокировать очередь.
Обратите внимание, что подпрограммы 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 (см. раздел "Примечания") |