12 #define WIN32_NO_STATUS 22 DWORD dwWin32ExitCode,
29 status.dwCurrentState = dwCurrentState;
30 status.dwWin32ExitCode = dwWin32ExitCode;
31 status.dwWaitHint = dwWaitHint;
33 status.dwServiceSpecificExitCode = 0;
40 status.dwControlsAccepted = 0;
51 status.dwCheckPoint = dwCheckPoint++;
81 if (*TcpTable ==
NULL)
108 if (*UdpTable ==
NULL)
152 service_ok(TcpTableOwnerMod->dwNumEntries > 0,
"No TCP connections?!\n");
155 for (
i = 0;
i < TcpTableOwnerMod->dwNumEntries; ++
i)
158 TcpTableOwnerMod->table[
i].dwLocalAddr == 0 &&
159 TcpTableOwnerMod->table[
i].dwLocalPort ==
htons(9876) &&
160 TcpTableOwnerMod->table[
i].dwRemoteAddr == 0)
173 service_ok(TcpTableOwnerMod->table[
i].dwOwningPid == Pid,
"Invalid owner\n");
174 service_ok((
DWORD)(TcpTableOwnerMod->table[
i].OwningModuleInfo[0]) == service_tag,
"Invalid tag: %x - %x\n", (
DWORD)TcpTableOwnerMod->table[
i].OwningModuleInfo[0], service_tag);
221 service_ok(UdpTableOwnerMod->dwNumEntries > 0,
"No TCP connections?!\n");
224 for (
i = 0;
i < UdpTableOwnerMod->dwNumEntries; ++
i)
226 if (UdpTableOwnerMod->table[
i].dwLocalAddr == 0 &&
227 UdpTableOwnerMod->table[
i].dwLocalPort ==
htons(9876))
240 service_ok(UdpTableOwnerMod->table[
i].dwOwningPid == Pid,
"Invalid owner\n");
241 service_ok((
DWORD)(UdpTableOwnerMod->table[
i].OwningModuleInfo[0]) == service_tag,
"Invalid tag: %x - %x\n", (
DWORD)UdpTableOwnerMod->table[
i].OwningModuleInfo[0], service_tag);
283 service_ok(Teb->SubProcessTag != 0,
"SubProcessTag is not defined!\n");
287 skip(
"Failed to init WS2\n");
324 SC_HANDLE hSC =
NULL;
325 SC_HANDLE hService =
NULL;
378 trace(
"Service stopped. Going to restart it...\n");
386 L"NT AUTHORITY\\NetworkService",
L"",
DWORD WINAPI GetOwnerModuleFromUdpEntry(PMIB_UDPROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize)
static void test_runner(BOOLEAN unicode, PCWSTR extra_args, int service_argc, void *service_argv)
#define SERVICE_ERROR_IGNORE
static void my_test_server(PCSTR service_nameA, PCWSTR service_nameW, void *param)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
static rfbScreenInfoPtr server
SOCKET WSAAPI socket(IN INT af, IN INT type, IN INT protocol)
#define UNREFERENCED_PARAMETER(P)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
#define SERVICE_INTERACTIVE_PROCESS
void quit(int argc, const char *argv[])
static void service_process(BOOLEAN unicode)
#define SERVICE_ACCEPT_STOP
INT WSAAPI WSACleanup(VOID)
START_TEST(ServiceNetwork)
IN PVOID IN PVOID IN USHORT IN USHORT Size
DWORD WINAPI GetLastError(VOID)
#define SERVICE_START_PENDING
SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName, LPHANDLER_FUNCTION lpHandlerProc)
static BOOL start_service(PCSTR service_nameA, PCWSTR service_nameW)
#define SERVICE_ALL_ACCESS
BOOL WINAPI DeleteService(SC_HANDLE hService)
BOOL WINAPI StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW *lpServiceStartTable)
#define ERROR_SERVICE_NOT_ACTIVE
static void WINAPI service_main(DWORD dwArgc, LPWSTR *lpszArgv)
#define SERVICE_NO_CHANGE
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, 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)
DWORD WINAPI GetOwnerModuleFromTcpEntry(PMIB_TCPROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
static void test_tcp(LPWSTR svc_name, DWORD service_tag)
enum _UDP_TABLE_CLASS UDP_TABLE_CLASS
#define SERVICE_WIN32_OWN_PROCESS
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
enum _TCP_TABLE_CLASS TCP_TABLE_CLASS
#define SERVICE_ACCEPT_SHUTDOWN
BOOL WINAPI StartServiceW(SC_HANDLE hService, DWORD dwNumServiceArgs, LPCWSTR *lpServiceArgVectors)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static void service_ok(int cnd, const char *msg,...)
static SERVICE_STATUS ServiceStatus
BOOL WINAPI QueryServiceStatus(SC_HANDLE hService, LPSERVICE_STATUS lpServiceStatus)
int winetest_get_mainargs(char ***pargv)
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
static const WCHAR Cleanup[]
static VOID WINAPI service_handler(DWORD ctrl)
static void test_udp(LPWSTR svc_name, DWORD service_tag)
static void report_service_status(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
DWORD WINAPI GetExtendedUdpTable(PVOID pUdpTable, PDWORD pdwSize, BOOL bOrder, ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved)
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
static char service_nameA[100]
#define SC_MANAGER_ALL_ACCESS
INT WSAAPI listen(IN SOCKET s, IN INT backlog)
DWORD WINAPI GetExtendedTcpTable(PVOID pTcpTable, PDWORD pdwSize, BOOL bOrder, ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved)
static WCHAR service_nameW[100]
#define SERVICE_CONTROL_STOP
static DWORD GetExtendedTcpTableWithAlloc(PVOID *TcpTable, BOOL Order, DWORD Family, TCP_TABLE_CLASS Class)
#define SERVICE_DEMAND_START
static SERVICE_STATUS status
#define SERVICE_STOP_PENDING
#define HeapFree(x, y, z)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
DWORD WINAPI GetCurrentProcessId(VOID)
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)
static SERVICE_STATUS_HANDLE status_handle
#define SERVICE_CONTROL_SHUTDOWN
static DWORD GetExtendedUdpTableWithAlloc(PVOID *UdpTable, BOOL Order, DWORD Family, UDP_TABLE_CLASS Class)
#define ERROR_INSUFFICIENT_BUFFER