как я могу совершать вызовы IOCTL в режиме ядра (Windows)

В пользовательском режиме вызовы IOCTL можно выполнять через DeviceIoControl function.
Что я могу использовать в режиме ядра для выполнения вызовов IOCTL? Я должен использовать это внутри драйвера минифильтра файловой системы.

ПРЕДЫСТОРИЯ
Я пишу драйвер минифильтра файловой системы и должны выполнять вызовы IOCTL к устройствам хранения, чтобы узнать их серийный номер и возможности (съемные или нет).


person clyfe    schedule 04.06.2010    source источник


Ответы (1)


Вы можете использовать FltDeviceIoControlFile или создать и отправить IRP вручную с помощью IoBuildDeviceIoControlRequest и IoCallDriver.

person Sergey Podobry    schedule 04.06.2010
comment
Нужно ли мне вызывать IoCompleteRequest, чтобы освободить мой IRP, или это делает более низкий драйвер? - person clyfe; 10.06.2010
comment
Нет, IRP завершается одним из нижестоящих устройств. И не забудьте проверить свой драйвер с помощью инструмента проверки драйверов! - person Sergey Podobry; 11.06.2010
comment
Спасибо за вашу помощь, это было очень полезно! - person clyfe; 17.06.2010