На самом деле я даже не знаю, что здесь происходит, но я надеюсь, что кто-то может мне помочь.
Некоторое время назад я создал класс для управления службами Windows, используя Windows API SC. Долгое время работает нормально, без серьезных ошибок. Но сегодня я использовал этот класс в своем проекте, и когда мусор работает (при и если, или функция …), мое приложение вылетает. И только сбой, когда я пытаюсь остановить службу.
int main() {
wchar_t serviceName[] = L"foo";
ServiceController *service = new ServiceController(serviceName);
if(!service->isRunning()){
service->start();
} else {
service->stop();
}
system("PAUSE");
return 0;
}
В этом примере, когда служба «foo» не запущена, метод запуска запускает службу, и приложение закрывается нормально, в противном случае, если служба работает, метод stop останавливает службу, system("PAUSE");
работает нормально, но приложение вылетает после возврата.
Я перепробовал все, но ничего не помогает.
Класс можно найти Вот
Спасибо!
РЕДАКТИРОВАТЬ: В окне просмотра событий я могу найти эту ошибку:
Faulting application name: stop.exe, version: 0.0.0.0, time stamp: 0x02430cb0
Faulting module name: ntdll.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdadb
Exception code: 0xc0000005
Fault offset: 0x00055668
Faulting process id: 0xb90
Faulting application start time: 0x01d07389e28c97f4
Faulting application path: C:\Users\CacicQT86\Documents\build-stop-Desktop_Qt_5_3_MinGW_32bit-Debug\debug\stop.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 20ceff7a-df7d-11e4-905d-08002754d7a4
Решено на этот совершить.
Я только что изменился LPSERVICE_STATUS
от SERVICE_STATUS_PROCESS
, который не нужно инициализировать, на stop()
, Вероятно, была ошибка удаления.