Создаем проект ATL (7.0), тип — Service.
Код:
// BPSystemInfo.cpp : Implementation of WinMain
#include "stdafx.h"
#include "resource.h"
// The module attribute causes WinMain to be automatically implemented for you
[ module(SERVICE, uuid = "{D1FD36AA-1799-4F51-B1AD-1312B0540206}",
name = "BPSystemInfo",
helpstring = "BPSystemInfo 1.0 Type Library",
resource_name="IDS_SERVICENAME") ]
class CBPSystemInfoModule
{
public:
HRESULT InitializeSecurity() throw()
{
// TODO : Call CoInitializeSecurity and provide the appropriate security settings for
// your service
// Suggested - PKT Level Authentication,
// Impersonation Level of RPC_C_IMP_LEVEL_IDENTIFY
// and an appropiate Non NULL Security Descriptor.
return S_OK;
}
/**
Главная функция сервиса. При выходе из нее сервис завершает свою работу.
*/
HRESULT Run( int nShowCmd = SW_HIDE ) throw( );
/**
Функция обратного вызова. Вызывается системой, если необходимо остановить сервис.
*/
void OnStop() throw();
/**
Функция обратного вызова. Вызывается системой при выключении компьютера.
*/
void OnShutdown() throw()
{
OnStop();
}
};
void CBPSystemInfoModule::OnStop() throw()
{
SetServiceStatus(SERVICE_STOP_PENDING);
}
HRESULT CBPSystemInfoModule::Run( int nShowCmd ) throw( )
{
return CAtlServiceModuleT<CBPSystemInfoModule,IDS_SERVICENAME>::Run(nShowCmd);
}
Все главные функции на месте, компилируется все нормально, устанавливается в систему без проблем с помощью CreateService. НО! При попытке запуска службы — "Служба не ответила на запрос своевременно". Что не хватает в данном каркасе? Мне бы хотелось получить службу, которая работала бы, но ничего не имела бы внутрях.