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


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

Подпрограмма IoCsqInitializeEx инициализирует таблицу диспетчеризации для очереди IRP с безопасной отменой.

Синтаксис

NTSTATUS IoCsqInitializeEx(
  [out] PIO_CSQ                       Csq,
  [in]  PIO_CSQ_INSERT_IRP_EX         CsqInsertIrp,
  [in]  PIO_CSQ_REMOVE_IRP            CsqRemoveIrp,
  [in]  PIO_CSQ_PEEK_NEXT_IRP         CsqPeekNextIrp,
  [in]  PIO_CSQ_ACQUIRE_LOCK          CsqAcquireLock,
  [in]  PIO_CSQ_RELEASE_LOCK          CsqReleaseLock,
  [in]  PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
);

Параметры

[out] Csq

Указатель на структуру IO_CSQ для инициализации IoCsqInitializeEx.

[in] CsqInsertIrp

Указатель на определяемую драйвером функцию CsqInsertIrpEx для безопасной очереди IRP драйвера.

[in] CsqRemoveIrp

Указатель на определяемую драйвером функцию CsqRemoveIrp для очереди отмены IRP драйвера.

[in] CsqPeekNextIrp

Указатель на определяемую драйвером функцию CsqPeekNextIrp для очереди отмены IRP драйвера.

[in] CsqAcquireLock

Указатель на определяемую драйвером функцию CsqAcquireLock для очереди отмены IRP драйвера.

[in] CsqReleaseLock

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

[in] CsqCompleteCanceledIrp

Указатель на определяемую драйвером функцию CsqCompleteCanceledIrp для очереди отмены IRP драйвера.

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

IoCsqInitializeEx возвращает STATUS_SUCCESS при успешном выполнении или соответствующий код ошибки при сбое.

Комментарии

Подпрограммы IoCsqInitialize и IoCsqInitializeEx инициализируют IO_CSQ структуру, описывающую безопасную очередь IRP драйвера. IoCsqInitializeEx можно использовать для указания очереди IRP с расширенными возможностями вместо очереди, указанной ioCsqInitialize:

  • Драйвер реализует подпрограмму CsqInsertIrpEx , а не подпрограмму CsqInsertIrp . CsqInsertIrpEx принимает дополнительный параметр InsertContext. Когда драйвер вызывает IoCsqInsertIrpEx для вставки IRP, он указывает значение, передаваемое как InsertContext.
  • IoCsqInsertIrpEx возвращает возвращаемое значение CsqInsertIrpEx. Драйверы могут использовать возвращаемое значение, чтобы указать, была ли операция вставки успешной или неудачной.
В противном случае эффект IoCsqInitializeEx идентичен эффекту IoCsqInitialize. Дополнительные сведения см. в разделе Отмена безопасных очередей IRP.

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

Требования

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

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

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp