reactos/base/applications/network/net/cmdStop.c

77 lines
1.7 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS net command
* FILE: base/applications/network/net/cmdStop.c
* PURPOSE:
*
* PROGRAMMERS: Magnus Olsen (greatlord@reactos.org)
*/
#include "net.h"
INT cmdStop(INT argc, WCHAR **argv)
{
SC_HANDLE hManager = NULL;
SC_HANDLE hService = NULL;
SERVICE_STATUS ServiceStatus;
DWORD dwError = ERROR_SUCCESS;
INT nError = 0;
INT i;
if (argc != 3)
{
ConResPuts(StdOut, IDS_STOP_SYNTAX);
return 1;
}
for (i = 2; i < argc; i++)
{
if (_wcsicmp(argv[i], L"/help") == 0)
{
ConResPuts(StdOut, IDS_STOP_HELP);
return 1;
}
}
hManager = OpenSCManagerW(NULL,
SERVICES_ACTIVE_DATABASE,
SC_MANAGER_ENUMERATE_SERVICE);
if (hManager == NULL)
{
dwError = GetLastError();
nError = 1;
goto done;
}
hService = OpenServiceW(hManager,
argv[2],
SERVICE_STOP);
if (hService == NULL)
{
dwError = GetLastError();
nError = 1;
goto done;
}
if (!ControlService(hService, SERVICE_CONTROL_STOP, &ServiceStatus))
{
dwError = GetLastError();
nError = 1;
goto done;
}
done:
if (hService != NULL)
CloseServiceHandle(hService);
if (hManager != NULL)
CloseServiceHandle(hManager);
if (dwError != ERROR_SUCCESS)
{
/* FIXME: Print proper error message */
ConPrintf(StdErr, L"Error: %lu\n", dwError);
}
return nError;
}