_tprintf(_T("\n"));
}
+
+
+VOID
+PrintServiceStatus(
+ LPSERVICE_STATUS pStatus)
+{
+ _tprintf(_T("\tTYPE : %x "),
+ (unsigned int)pStatus->dwServiceType);
+ switch (pStatus->dwServiceType)
+ {
+ case SERVICE_KERNEL_DRIVER:
+ _tprintf(_T("KERNEL_DRIVER\n"));
+ break;
+
+ case SERVICE_FILE_SYSTEM_DRIVER:
+ _tprintf(_T("FILE_SYSTEM_DRIVER\n"));
+ break;
+
+ case SERVICE_WIN32_OWN_PROCESS:
+ _tprintf(_T("WIN32_OWN_PROCESS\n"));
+ break;
+
+ case SERVICE_WIN32_SHARE_PROCESS:
+ _tprintf(_T("WIN32_SHARE_PROCESS\n"));
+ break;
+
+ case SERVICE_WIN32_OWN_PROCESS + SERVICE_INTERACTIVE_PROCESS:
+ _tprintf(_T("WIN32_OWN_PROCESS (interactive)\n"));
+ break;
+
+ case SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS:
+ _tprintf(_T("WIN32_SHARE_PROCESS (interactive)\n"));
+ break;
+
+ default : _tprintf(_T("\n")); break;
+ }
+
+ _tprintf(_T("\tSTATE : %x "),
+ (unsigned int)pStatus->dwCurrentState);
+
+ switch (pStatus->dwCurrentState)
+ {
+ case 1 : _tprintf(_T("STOPPED\n")); break;
+ case 2 : _tprintf(_T("START_PENDING\n")); break;
+ case 3 : _tprintf(_T("STOP_PENDING\n")); break;
+ case 4 : _tprintf(_T("RUNNING\n")); break;
+ case 5 : _tprintf(_T("CONTINUE_PENDING\n")); break;
+ case 6 : _tprintf(_T("PAUSE_PENDING\n")); break;
+ case 7 : _tprintf(_T("PAUSED\n")); break;
+ default : _tprintf(_T("\n")); break;
+ }
+
+ _tprintf(_T("\t\t\t\t("));
+
+ if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_STOP)
+ _tprintf(_T("STOPPABLE,"));
+ else
+ _tprintf(_T("NOT_STOPPABLE,"));
+
+ if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_PAUSE_CONTINUE)
+ _tprintf(_T("PAUSABLE,"));
+ else
+ _tprintf(_T("NOT_PAUSABLE,"));
+
+ if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_SHUTDOWN)
+ _tprintf(_T("ACCEPTS_SHUTDOWN"));
+ else
+ _tprintf(_T("IGNORES_SHUTDOWN"));
+
+ _tprintf(_T(")\n"));
+
+ _tprintf(_T("\tWIN32_EXIT_CODE : %u (0x%x)\n"),
+ (unsigned int)pStatus->dwWin32ExitCode,
+ (unsigned int)pStatus->dwWin32ExitCode);
+ _tprintf(_T("\tSERVICE_EXIT_CODE : %u (0x%x)\n"),
+ (unsigned int)pStatus->dwServiceSpecificExitCode,
+ (unsigned int)pStatus->dwServiceSpecificExitCode);
+ _tprintf(_T("\tCHECKPOINT : 0x%x\n"),
+ (unsigned int)pStatus->dwCheckPoint);
+ _tprintf(_T("\tWAIT_HINT : 0x%x\n"),
+ (unsigned int)pStatus->dwWaitHint);
+}
\ No newline at end of file