1 /*
2  * COPYRIGHT:       See COPYING in the top level directory
3  * PROJECT:         ReactOS net command
4  * FILE:            base/applications/network/net/cmdPause.c
5  * PURPOSE:
6  *
7  * PROGRAMMERS:     Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
8  */
9 
10 #include "net.h"
11 
12 INT cmdPause(INT argc, WCHAR **argv)
13 {
14     SC_HANDLE hManager = NULL;
15     SC_HANDLE hService = NULL;
16     SERVICE_STATUS status;
17     INT nError = 0;
18     INT i;
19 
20     if (argc != 3)
21     {
22         ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
23         PrintNetMessage(MSG_PAUSE_SYNTAX);
24         return 1;
25     }
26 
27     for (i = 2; i < argc; i++)
28     {
29         if (_wcsicmp(argv[i], L"/help") == 0)
30         {
31             ConResPuts(StdOut, IDS_GENERIC_SYNTAX);
32             PrintNetMessage(MSG_PAUSE_SYNTAX);
33             PrintNetMessage(MSG_PAUSE_HELP);
34             return 1;
35         }
36     }
37 
38     hManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE);
39     if (hManager == NULL)
40     {
41         ConPrintf(StdErr, L"[OpenSCManager] Error: %ld\n", GetLastError());
42         nError = 1;
43         goto done;
44     }
45 
46     hService = OpenService(hManager, argv[2], SERVICE_PAUSE_CONTINUE);
47     if (hService == NULL)
48     {
49         ConPrintf(StdErr, L"[OpenService] Error: %ld\n", GetLastError());
50         nError = 1;
51         goto done;
52     }
53 
54     if (!ControlService(hService, SERVICE_CONTROL_PAUSE, &status))
55     {
56         ConPrintf(StdErr, L"[ControlService] Error: %ld\n", GetLastError());
57     }
58 
59 done:
60     if (hService != NULL)
61         CloseServiceHandle(hService);
62 
63     if (hManager != NULL)
64         CloseServiceHandle(hManager);
65 
66     return nError;
67 }
68 
69 /* EOF */
70 
71