2012-05-17 2 views
0

Система, над которой я работаю, имеет много процессов. В контексте разделяемой памяти некоторые из них являются серверами, а некоторые - клиентами.Определите, какой процесс создал общую память в Windows

Они создают/получают доступ к общей памяти через CreateFileMapping и MapViewOfFile.

Недавно я изменил структуру на одном из клиентов, что привело к попытке клиента отобразить область общей памяти, которая больше, чем то, что было создано серверным процессом. В результате Access Denied.

Моя проблема в том, что я не знаю, какой процесс проклятия создал память в первую очередь. Есть ли способ доступа к такой метаинформации об общей памяти, чтобы определить, какая программа сервера должна быть перекомпилирована?

Чтобы подтвердить, что MapViewOfFile не работает с кодом ошибки 5: Доступ запрещен.

ответ

0

Существует два типа разделяемой памяти: динамический (с использованием CreateFileMapping ... ваш сценарий) и статический (отображение памяти, объявленное в характеристиках раздела PE). Можно проверить наличие разделов PE с характеристиками общей памяти на уровне файлов и процессов.

С другой стороны, причина, почему MapViewOfFile не удалось бы, кроме различных размеров отображенной памяти (например, учетные данные, смещенные памяти, ....)

+0

также взглянуть на HTTP: // StackOverflow .com/вопросы/10622750/как к найти, если-ан-адреса относится к к-кода или данных-сечения – mox

Смежные вопросы