Я получаю доступ к своему устройству с отображением памяти через физическую память устройства на ПК. Это делается с помощью драйвера, который сопоставляет определенный физический адрес указателю в линейной памяти в моем адресном пространстве процесса.Блокировать доступ к физическому адресу в Windows
Я хотел знать, есть ли способ получить конкретный физический адрес и предотвратить другие процессы или устройства от доступа к этому физическому адресу?
Отображение физического адреса на линейный осуществляется с помощью стороннего драйвера: TVicHW32.
EDIT: Я могу воспроизвести сценарий, если я запускаю 2 экземпляра моего приложения с разными флагами. Оба экземпляра могут получить доступ к той же конкретной физической памяти, которая не является частью пространства памяти любого процесса.
Моя проблема заключается в том, что я не контролирую, кто обращается к физическому адресу. Я только контролирую свой процесс, но, видимо, какой-то другой процесс или драйвер устройства получают доступ к одному и тому же физическому адресу. – Eldad
О, извините. Я не думал, что вы не можете изменить драйвер. Так что дело намного сложнее. A (небольшая) надежда состоит в том, чтобы предотвратить процесс других пользователей для доступа к устройству, контролируемому драйвером, путем ограничения доступа к общедоступному объекту, который был показан водителю (т. Е. Имя, которое вы используете в CreateFile для записи устройства). –
Но это очень ограниченное решение и вовсе не общее. В любом случае, это не может помешать другим DRVERS DEVICE ошибочно изменять состояние вашего устройства: неправильный драйвер ядра может делать любые плохие вещи :( Много лет назад я столкнулся с подобной проблемой, пока я разрабатывал карту ISA: кто-то был запись на МО-устройстве. Мне пришлось подключить сигнал выбора чипа к линии NMI ЦП, поэтому, когда доступ к памяти карты был доступен, я мог перехватить событие NMI с помощью моего отладчика низкого уровня ... Совсем не легко. –