19 DWORD dwWin32ExitCode,
26 status.dwCurrentState = dwCurrentState;
27 status.dwWin32ExitCode = dwWin32ExitCode;
28 status.dwWaitHint = dwWaitHint;
30 status.dwServiceSpecificExitCode = 0;
37 status.dwControlsAccepted = 0;
48 status.dwCheckPoint = dwCheckPoint++;
71 LPWSTR lpEnvironment, lpEnvStr;
89 lpEnvStr = lpEnvironment;
93 lpEnvStr +=
wcslen(lpEnvStr) + 1;
108 service_ok(Teb->SubProcessTag != 0,
"SubProcessTag is not defined!\n");
109 if (Teb->SubProcessTag != 0)
112 if (_I_QueryTagInformation !=
NULL)
128 ServiceQuery.ServiceTag = Teb->SubProcessTag;
129 ServiceQuery.TagType = 0;
130 ServiceQuery.Buffer =
NULL;
132 _I_QueryTagInformation(
NULL, 1, &ServiceQuery);
135 if (ServiceQuery.Buffer !=
NULL)
138 service_ok(
wcscmp(lpszArgv[0], ServiceQuery.Buffer) == 0,
"Mismatching info: %S - %S\n", lpszArgv[0], ServiceQuery.Buffer);
139 service_ok(ServiceQuery.TagType == 1,
"Invalid tag type: %x\n", ServiceQuery.TagType);
173 SC_HANDLE hSC =
NULL;
174 SC_HANDLE hService =
NULL;
227 trace(
"Service stopped. Going to restart it...\n");
235 L"NT AUTHORITY\\NetworkService",
L"",
297 ok(Teb->SubProcessTag == 0,
"SubProcessTag is defined: %p\n", Teb->SubProcessTag);
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
static void service_ok(int cnd, const char *msg,...)
static void test_runner(BOOLEAN unicode, PCWSTR extra_args, int service_argc, void *service_argv)
static char service_nameA[100]
static WCHAR service_nameW[100]
static void service_process(BOOLEAN unicode)
static BOOL start_service(PCSTR service_nameA, PCWSTR service_nameW)
static VOID WINAPI service_handler(DWORD ctrl)
static void WINAPI service_main(DWORD dwArgc, LPWSTR *lpszArgv)
static void my_test_server(PCSTR service_nameA, PCWSTR service_nameW, void *param)
static SERVICE_STATUS_HANDLE status_handle
static void report_service_status(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint)
static SERVICE_STATUS ServiceStatus
#define GetEnvironmentVariableW(x, y, z)
#define GetProcAddress(x, y)
BOOL WINAPI FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
static const WCHAR Cleanup[]
IN PLARGE_INTEGER IN PLARGE_INTEGER PEPROCESS ProcessId
HLOCAL NTAPI LocalFree(HLOCAL hMem)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
#define UNREFERENCED_PARAMETER(P)
BOOL WINAPI QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus)
BOOL WINAPI DeleteService(SC_HANDLE hService)
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
BOOL WINAPI ChangeServiceConfigW(SC_HANDLE hService, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword, LPCWSTR lpDisplayName)
BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, LPCWSTR *lpServiceArgVectors)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
BOOL WINAPI StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW *lpServiceStartTable)
SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc)
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
int winetest_get_mainargs(char ***pargv)
void service_trace(const char *msg,...)
SC_HANDLE register_service_exW(SC_HANDLE scm_handle, PCWSTR test_name, PCWSTR service_name, PCWSTR extra_args OPTIONAL, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpLoadOrderGroup OPTIONAL, LPDWORD lpdwTagId OPTIONAL, LPCWSTR lpDependencies OPTIONAL, LPCWSTR lpServiceStartName OPTIONAL, LPCWSTR lpPassword OPTIONAL)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentProcessId(void)
LPWSTR WINAPI GetEnvironmentStringsW(void)
#define ERROR_SERVICE_NOT_ACTIVE
#define SERVICE_ACCEPT_STOP
#define SERVICE_ALL_ACCESS
#define SERVICE_NO_CHANGE
#define SERVICE_STOP_PENDING
#define SERVICE_CONTROL_SHUTDOWN
#define SERVICE_START_PENDING
#define SERVICE_CONTROL_STOP
#define SERVICE_ACCEPT_SHUTDOWN
#define SC_MANAGER_ALL_ACCESS
#define SERVICE_DEMAND_START
#define SERVICE_INTERACTIVE_PROCESS
#define SERVICE_WIN32_OWN_PROCESS
#define SERVICE_ERROR_IGNORE