функция обратного вызова IO_CSQ_COMPLETE_CANCELED_IRP (wdm.h)
Подпрограмма csqCompleteCanceledIrp используется системой для сигнала драйверу о том, что он может завершить отмененный IRP.
Синтаксис
IO_CSQ_COMPLETE_CANCELED_IRP IoCsqCompleteCanceledIrp;
void IoCsqCompleteCanceledIrp(
[in] PIO_CSQ Csq,
[in] PIRP Irp
)
{...}
Параметры
[in] Csq
Указатель на структуру IO_CSQ для очереди IRP, безопасной для отмены.
[in] Irp
Указатель на IRP, который необходимо отменить.
Возвращаемое значение
Никакой
Замечания
Драйвер задает подпрограмму CsqCompleteCanceledIrp для очереди отмены безопасного IRP при инициализации структуры IO_CSQ очереди. Драйвер задает подпрограмму в качестве параметра CsqCompleteCanceledIrpIoCsqInitialize или IoCsqInitializeEx при инициализации IO_CSQ. Дополнительные сведения см. в Cancel-Safe очередях IRP.
Система вызывает эту подпрограмму, чтобы завершить отмененный IRP, который был удален из очереди драйвера. Как правило, драйверы просто вызывают IoCompleteRequest для IRP с состоянием STATUS_CANCELLED.
Драйверы не требуются для удаления IRP из очереди перед его отменой: система всегда вызывает очереди CsqRemoveIrp, чтобы удалить IRP из очереди перед вызовом CsqCompleteCanceledIrp.
Примеры
Чтобы определить подпрограмму обратного вызова CsqCompleteCanceledIrp, необходимо сначала указать объявление функции, определяющее тип определяемой процедуры обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализ кода для драйверов, статический проверяющий драйвер (SDV) и другие средства проверки подлинности, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить подпрограмму обратного вызова CsqCompleteCanceledIrp с именем MyCsqCompleteCanceledIrp
, используйте тип IO_CSQ_COMPLETE_CANCELED_IRP, как показано в этом примере кода:
IO_CSQ_COMPLETE_CANCELED_IRP MyCsqCompleteCanceledIrp;
Затем реализуйте подпрограмму обратного вызова следующим образом:
_Use_decl_annotations_
VOID
MyCsqCompleteCanceledIrp(
_In_ PIO_CSQ Csq,
_In_ PIRP Irp
)
{
// Function body
}
Тип функции IO_CSQ_COMPLETE_CANCELED_IRP определен в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте в определение функции _Use_decl_annotations_
заметку. Заметка _Use_decl_annotations_
гарантирует, что используются заметки, применяемые к типу функции IO_CSQ_COMPLETE_CANCELED_IRP в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в объявлении функций с помощью типов ролей функций для драйверов WDM. Сведения о _Use_decl_annotations_
см. в поведению функции.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |