В Windows Сервисах надо перехватить обработчик сторонних Dll - PullRequest
0 голосов
/ 17 июня 2020

при назначении функции stati c в Class обработчику событий сторонней организации не пинает. Возможно, служба не находится в состоянии ожидания, как в консольном приложении с While (1) {sleep (1000)}. Как добиться того же.

РЕДАКТИРОВАТЬ:

Я создаю одну службу, которая будет получать определенные сведения об ошибках от сторонней dll. Предположим, что сторонний поставщик предоставляет X, Y и Z статус устройств, если мы подключаем evt_handler к стороннему указателю на функцию. Скажем handle->funcpointer=evt_handler и запускаем функцию мониторинга сторонней стороны. Но поскольку службы просто инициализируются в OnStart и завершаются. Кажется, что SCM не знает о существовании обработчика событий. так как оставить Сервисы в режиме ожидания l oop. Если я сделаю простое консольное приложение, тогда оно будет работать с while (1) для простоя и обработкой события в обработчике событий. Но я хочу добавить то же самое в сервисах.

Это не работает в Windows программе Services

OnStart()
{
    hdl=LoadLibrary("x.dll"); //LOading of library is happening
    Monitor=(Monitor)GetProcAddress(hdl,"Monitor")
    x.funcptr=event_handler;
    MOnitor(x);
}

void event_handler()
{
    case X:
    case Y:
    Case Z:
}

это работает в консольном приложении

main()
{ 
    hdl=LoadLibrary("x.dll"); //LOading of library is happening 
    Monitor=(Monitor)GetProcAddress(hdl,"Monitor") 
    x.funcptr=event_handler; 
    MOnitor(x);
    while(1)
    {
        sleep(100);
    }
}
...