Проецирование физической памяти
Существование адресного пространства ввода/вывода зависит от архитектуры процессора. Некоторые архитектуры, поддерживаемые Windows NT, основаны на процессорах, не имеющих отдельного пространства ввода/вывода. Их порты проецируются в адреса памяти. Эти архитектуры могут использовать функции проецирования памяти для обеспечения доступа к физической памяти контроллеров и другой аппаратуры.
Проецирование физической памяти может также использоваться для предоставления процессам доступа к физическим участкам памяти в адресном пространстве CPU.
Интерфейс проецирования физической памяти проецирует участок физической памяти на виртуальное адресное пространство процесса. Это позволяет приложению получать доступ к участкам физической памяти непосредственно, как если бы они были буферами в приложении. Эти интерфейсы полезны в программах, которым нужен доступ к памяти устройств или регистрам, которые спроецированы на физическре адресное пространство CPU.
API
Следующие функции служат для проецирования памяти:
RtMapMemory – проецирует участок адресов физической памяти на виртуальное адресное пространство процесса.
RtUnmapMemory - убирает ранее спроецированнный участок адресов физической памяти из виртуального адресного пространства процесса.
Общие замечания по программированию
Не существует ограничений или запретов на спроецированный участок памяти. В случае удачного проецирования обеспечивается указанные базовый адрес и длина области. Не следует проецировать и изменять адресное пространство Windows NT, т.к. это может привести к ошибкам в операционной системе.
Замечания по программированию в Win32 подсистеме
Попытка доступа к области, выходящей за пределы спроецированного адресного пространства, вызовет исключение.
демонстрирует проецирование физической памяти.