57 _T(
"Service state 0x%lx, CheckPoint %lu"),
139 if (dwControl >= 128 && dwControl <= 255)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
#define RegisterServiceCtrlHandlerEx
#define SERVICE_ACCEPT_STOP
#define ERROR_SERVICE_SPECIFIC_ERROR
SERVICE_STATUS servStatus
struct _ServiceData * PSERVICEDATA
DWORD WINAPI GetLastError(VOID)
#define SERVICE_START_PENDING
DWORD dwServiceSpecificExitCode
SERVICE_STATUS_HANDLE hStatus
struct _ServiceInfo SERVICEINFO
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
VOID WINAPI ServiceMain(DWORD argc, LPTSTR argv[])
#define StartServiceCtrlDispatcher
#define ERROR_INVALID_SERVICE_CONTROL
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
struct _ServiceData SERVICEDATA
static VOID UpdateStatus(PSERVICEINFO pServInfo, DWORD NewStatus, DWORD Check)
#define SERVICE_CONTROL_INTERROGATE
#define SERVICE_WIN32_OWN_PROCESS
#define SERVICE_ACCEPT_PAUSE_CONTINUE
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
#define SERVICE_ACCEPT_SHUTDOWN
#define SERVICE_CONTROL_PAUSE
int _tmain(int argc, LPTSTR argv[])
#define InterlockedExchange
DWORD WINAPI ServerCtrlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
VOID LogEvent(LPCWSTR lpMsg, DWORD errNum, DWORD exitCode, UINT flags)
struct _ServiceInfo * PSERVICEINFO
#define SERVICE_CONTROL_CONTINUE
DWORD WINAPI ThreadProc(LPVOID lpParam)
#define SERVICE_CONTROL_STOP
static BOOL CreateServiceThread(PSERVICEINFO pServInfo)
#define SERVICE_STOP_PENDING
SERVICE_TABLE_ENTRYW ServiceTable[]
#define SERVICE_CONTROL_SHUTDOWN