В настоящее время я пишу драйвер диска нижнего фильтра для захвата команд SCSI и измерения производительности каждой команды. В настоящее время мой драйвер способен перехватывать запрос SCSI и передавать его следующему драйверу. Однако при попытке зарегистрировать процедуру завершения я получаю следующий статус: 0xc0000010(STATUS_INVALID_DEVICE_REQUEST).
Рабочий код без процедуры завершения:
WDF_REQUEST_SEND_OPTIONS_INIT(&options, WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET);
WdfRequestSend(Request, Target, &options);
Неудачный код с подпрограммой завершения:
WdfRequestFormatRequestUsingCurrentType(Request);
WdfRequestSetCompletionRoutine(Request, CompletionRoutine, CompletionContext);
WdfRequestSend(Request, Target, WDF_NO_SEND_OPTIONS);
Любая помощь будет оценена по достоинству. Спасибо.
ЗАМЕТКИ:
- WdfRequestSend() — это сбойная процедура.
- Код с подпрограммой завершения работает для драйвера диска с верхним фильтром.