Функция 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 :
- Вызывает подпрограмму CsqAcquireLock очереди, чтобы заблокировать очередь.
- Использует параметр IrpContext , чтобы определить, какой IRP следует удалить, и вызывает подпрограмму CsqRemoveIrp очереди для удаления этой IRP.
- Вызывает подпрограмму CsqReleaseLock очереди, чтобы разблокировать очередь.
Обратите внимание, что подпрограммы 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 (см. раздел "Примечания") |