[BRANCHES]
[reactos.git] / reactos / base / applications / sc / print.c
1 /*
2 * PROJECT: ReactOS Services
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/system/sc/print.c
5 * PURPOSE: print service info
6 * COPYRIGHT: Copyright 2005 - 2006 Ged Murphy <gedmurphy@gmail.com>
7 *
8 */
9
10 #include "sc.h"
11
12 VOID
13 PrintService(LPCTSTR lpServiceName,
14 LPSERVICE_STATUS_PROCESS pStatus,
15 BOOL bExtended)
16 {
17 _tprintf(_T("SERVICE_NAME: %s\n"), lpServiceName);
18
19 _tprintf(_T("\tTYPE : %x "),
20 (unsigned int)pStatus->dwServiceType);
21 switch (pStatus->dwServiceType)
22 {
23 case SERVICE_KERNEL_DRIVER:
24 _tprintf(_T("KERNEL_DRIVER\n"));
25 break;
26
27 case SERVICE_FILE_SYSTEM_DRIVER:
28 _tprintf(_T("FILE_SYSTEM_DRIVER\n"));
29 break;
30
31 case SERVICE_WIN32_OWN_PROCESS:
32 _tprintf(_T("WIN32_OWN_PROCESS\n"));
33 break;
34
35 case SERVICE_WIN32_SHARE_PROCESS:
36 _tprintf(_T("WIN32_SHARE_PROCESS\n"));
37 break;
38
39 case SERVICE_WIN32_OWN_PROCESS + SERVICE_INTERACTIVE_PROCESS:
40 _tprintf(_T("WIN32_OWN_PROCESS (interactive)\n"));
41 break;
42
43 case SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS:
44 _tprintf(_T("WIN32_SHARE_PROCESS (interactive)\n"));
45 break;
46
47 default : _tprintf(_T("\n")); break;
48 }
49
50 _tprintf(_T("\tSTATE : %x "),
51 (unsigned int)pStatus->dwCurrentState);
52
53 switch (pStatus->dwCurrentState)
54 {
55 case 1 : _tprintf(_T("STOPPED\n")); break;
56 case 2 : _tprintf(_T("START_PENDING\n")); break;
57 case 3 : _tprintf(_T("STOP_PENDING\n")); break;
58 case 4 : _tprintf(_T("RUNNING\n")); break;
59 case 5 : _tprintf(_T("CONTINUE_PENDING\n")); break;
60 case 6 : _tprintf(_T("PAUSE_PENDING\n")); break;
61 case 7 : _tprintf(_T("PAUSED\n")); break;
62 default : _tprintf(_T("\n")); break;
63 }
64
65 _tprintf(_T("\t\t\t\t("));
66
67 if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_STOP)
68 _tprintf(_T("STOPPABLE,"));
69 else
70 _tprintf(_T("NOT_STOPPABLE,"));
71
72 if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_PAUSE_CONTINUE)
73 _tprintf(_T("PAUSABLE,"));
74 else
75 _tprintf(_T("NOT_PAUSABLE,"));
76
77 if (pStatus->dwControlsAccepted & SERVICE_ACCEPT_SHUTDOWN)
78 _tprintf(_T("ACCEPTS_SHUTDOWN"));
79 else
80 _tprintf(_T("IGNORES_SHUTDOWN"));
81
82 _tprintf(_T(")\n"));
83
84 _tprintf(_T("\tWIN32_EXIT_CODE : %u (0x%x)\n"),
85 (unsigned int)pStatus->dwWin32ExitCode,
86 (unsigned int)pStatus->dwWin32ExitCode);
87 _tprintf(_T("\tSERVICE_EXIT_CODE : %u (0x%x)\n"),
88 (unsigned int)pStatus->dwServiceSpecificExitCode,
89 (unsigned int)pStatus->dwServiceSpecificExitCode);
90 _tprintf(_T("\tCHECKPOINT : 0x%x\n"),
91 (unsigned int)pStatus->dwCheckPoint);
92 _tprintf(_T("\tWAIT_HINT : 0x%x\n"),
93 (unsigned int)pStatus->dwWaitHint);
94
95 if (bExtended)
96 {
97 _tprintf(_T("\tPID : %lu\n"),
98 pStatus->dwProcessId);
99 _tprintf(_T("\tFLAGS : %lu\n"),
100 pStatus->dwServiceFlags);
101 }
102
103 _tprintf(_T("\n"));
104 }