Бөлісу құралы:


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

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

  • Выполнение в контексте потока пользовательского режима, вызвавшего текущую операцию ввода-вывода драйвера.
  • Использование виртуальных адресов этого потока.

Драйверы должны использовать интерфейс доступа в режиме пользователя (UMA) для безопасного доступа к памяти в пользовательском режиме.

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

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