Доступ к памяти User-Space

Драйвер не может напрямую получить доступ к памяти через виртуальные адреса пользовательского режима, если он не выполняется в контексте потока пользовательского режима, который вызвал текущую операцию ввода-вывода драйвера и не использует виртуальные адреса этого потока.

Только драйверы самого высокого уровня, такие как FSD, могут быть уверены, что их подпрограммы диспетчеризации будут вызываться в контексте такого потока пользовательского режима. Драйвер самого высокого уровня может вызвать MmProbeAndLockPages , чтобы заблокировать буфер пользователя перед настройкой IRP для более низких драйверов.

Драйверы низкого и среднего уровня, которые настраивают объекты устройства для буферизованного ввода-вывода или прямого ввода-вывода , могут полагаться на диспетчер ввода-вывода или драйвер самого высокого уровня для передачи допустимого доступа к заблокированным пользовательским буферам или к буферам системного пространства в IRP.