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         PrintMessageString(4381);
23         ConPuts(StdOut, L"\n");
24         PrintNetMessage(MSG_PAUSE_SYNTAX);
25         return 1;
26     }
27 
28     for (i = 2; i < argc; i++)
29     {
30         if (_wcsicmp(argv[i], L"/help") == 0)
31         {
32             PrintMessageString(4381);
33             ConPuts(StdOut, L"\n");
34             PrintNetMessage(MSG_PAUSE_SYNTAX);
35             PrintNetMessage(MSG_PAUSE_HELP);
36             return 1;
37         }
38     }
39 
40     hManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE);
41     if (hManager == NULL)
42     {
43         ConPrintf(StdErr, L"[OpenSCManager] Error: %ld\n", GetLastError());
44         nError = 1;
45         goto done;
46     }
47 
48     hService = OpenService(hManager, argv[2], SERVICE_PAUSE_CONTINUE);
49     if (hService == NULL)
50     {
51         ConPrintf(StdErr, L"[OpenService] Error: %ld\n", GetLastError());
52         nError = 1;
53         goto done;
54     }
55 
56     if (!ControlService(hService, SERVICE_CONTROL_PAUSE, &status))
57     {
58         ConPrintf(StdErr, L"[ControlService] Error: %ld\n", GetLastError());
59     }
60 
61 done:
62     if (hService != NULL)
63         CloseServiceHandle(hService);
64 
65     if (hManager != NULL)
66         CloseServiceHandle(hManager);
67 
68     return nError;
69 }
70 
71 /* EOF */
72 
73