IPC между службой Windows и LSP DLL - PullRequest
0 голосов
/ 28 июня 2011

Я пишу DLL-библиотеку Winsock LSP (Layered Service Provider), которая должна взаимодействовать со службой Windows.

Связь осуществляется с использованием отображенных в памяти файлов и событий для синхронизации.Все работает нормально, если приложение не работает как служба, но если оно не может найти какие-либо события или сопоставления файлов (я получаю ошибку ERROR_FILE_NOT_FOUND в OpenEvent).

Я подозреваю, что это происходит потому, что при работе в качестве службы,приложение запускается как пользователь SYSTEM, а LSP загружается приложениями, которые запускаются как локальный пользователь.

Я думаю, что это можно решить с помощью правильного SECURITY_DESCRIPTOR, но я не знаю, для чего его следует установить.

Есть идеи, как сделать эту работу?

Спасибо,

1 Ответ

0 голосов
/ 28 июня 2011

В зависимости от ОС, это может быть проблема сессий. Если вы еще раз посмотрите на документацию для CreateEvent, CreateMemoryMapping и т. Д., Вы заметите GLOBAL \ префикс к имени объекта. Этот префикс (в том числе с префиксом SESSION \ x \) определяет область видимости объекта. Глобальные префиксы видны во всей системе, в то время как объекты без префикса в имени являются локальными для определенного (текущего, если префикс \ SESSION пропущен) сеанса. Сеансы появлялись в службах терминалов для Windows XP, затем включались в ОС Windows 2003 Server и более поздних версий.

...