Моя служба Windows создает 2 события с помощью CreateEvent для связи с пользовательским приложением. Служба и пользовательское приложение не работают под одной и той же учетной записью пользователя. Пользовательское приложение открывает событие и устанавливает для него сигнал без ошибок. Но событие так и не было получено службой. Другое событие работает в противоположном направлении. Поэтому я думаю, что события пропускают правильную синхронизацию.
Обслуживание:
SECURITY_ATTRIBUTES security;
ZeroMemory(&security, sizeof(security));
security.nLength = sizeof(security);
ConvertStringSecurityDescriptorToSecurityDescriptor(L"D:P(A;OICI;GA;;;SY)(A;OICI;GA;;;BA)(A;OICI;GWGR;;;IU)", SDDL_REVISION_1, &security.lpSecurityDescriptor, NULL);
EvtCreateNewUserSession = CreateEventW(
&security, // security attributes
TRUE, // manual-reset event
FALSE, // initial state is not signaled
L"Global\\MyEvent" // object name
);
Интерактивное приложение:
HANDLE EvtCreateNewUserSession = OpenEventW(
EVENT_MODIFY_STATE | SYNCHRONIZE, // default security attributes
FALSE, // initial state is not signaled
L"Global\\MyEvent" // object name
;
Спасибо за вашу помощь,
Оливье