Возникла проблема... есть приложение, оно запускает сервис. Приложение и сервис между собой общаются через разделяемую память (CreateFileMapping, MapViewOfFile и тд).
Но возникает загвоздка с передачей указателей, потому как у каждого приложения свое виртуальное пространство. С передачей от сервиса в приложение проблема решена. Открывается процесс приложения (OpenProcess) по его ID и далее пишется функцией WriteProcessMemory. (предварительно сервис получает привилегии SE_DEBUG_NAME)
В обратную сторону (прилоежение открывает сервис) это не работает. OpenProcess отказывается открывать процесс сервиса с ошибкой Access Denied (при этом приложение так же получает все привилегии). В итоге не получается писать в память сервиса.
Подскажите как решить эту проблему. Причем в передавать в сервис нужно именно указатель. Может быть можно каким-то другим путем это делать? Или как то по-другому открывать процесс сервиса?
Благодарю за внимание.
Как передать указатель в сервис?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Опять же возникает вопрос ЗАЧЕМ? Если по этому указателю находятся какие-то данные, то можно передать просто сами данные, а если это указатель на какой-то объект или отдельную функцию, то есть другие штатные способы управления объектами и вызова процедур из других приложений.Причем в передавать в сервис нужно именно указатель.
Необходимость в том, что этот указатель указывает на область памяти для работы с PCI платой. Есть вариант просто получить этот указатель на область памяти в самом сервисе, но это сопряжено с перенесением большого куска кода в сам сервис, что нежелательно.WinMain писал(а):Опять же возникает вопрос ЗАЧЕМ? Если по этому указателю находятся какие-то данные, то можно передать просто сами данные, а если это указатель на какой-то объект или отдельную функцию, то есть другие штатные способы управления объектами и вызова процедур из других приложений.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Ну так что, никто не поможет? Никто не знает или это невозможно сделать?