Я использую VS6 и ATL с CServiceModule для реализации собственной службы Windows. В случае фатальной ошибки сервис должен отключиться. Поскольку CServiceModule доступен через переменную _Module во всех файлах, я подумал о чем-то подобном, чтобы CServiceModule::Run прекратил перекачку сообщений и выключился.
PostThreadMessage(_Module.dwThreadID, WM_QUIT, 0, 0);
Это правильно или у вас есть идея получше?