From b0abcfde9d456a3d76d63a8dcbb17eb871fc762d Mon Sep 17 00:00:00 2001
From: grischka <grischka>
Date: Thu, 14 Jan 2010 20:56:24 +0100
Subject: [PATCH] win32: cleanup include

---
 win32/include/_mingw.h        |  93 ++++----
 win32/include/malloc.h        |   4 +-
 win32/include/sys/stat.h      |   2 +
 win32/include/sys/timeb.h     |   2 +
 win32/include/sys/types.h     |   2 +
 win32/include/sys/utime.h     |   2 +
 win32/include/unistd.h        |  40 ----
 win32/include/winapi/winsvc.h | 397 ----------------------------------
 8 files changed, 57 insertions(+), 485 deletions(-)
 delete mode 100644 win32/include/unistd.h
 delete mode 100644 win32/include/winapi/winsvc.h

diff --git a/win32/include/_mingw.h b/win32/include/_mingw.h
index 14aae8b7..04fc1cad 100644
--- a/win32/include/_mingw.h
+++ b/win32/include/_mingw.h
@@ -19,109 +19,108 @@
 #define __MINGW_H
 
 #include <stddef.h>
+#include <stdarg.h>
 
-#define __int64 long long
-#define __int32 long
-#define __int16 short
 #define __int8 char
+#define __int16 short
+#define __int32 int
+#define __int64 long long
 
 #define __cdecl __attribute__((__cdecl__))
 #define __declspec(x) __attribute__((x))
-#define __fastcall
+#define __unaligned __attribute__((packed))
+#define __fastcall __attribute__((fastcall))
 
 // #define __MINGW_IMPORT extern __declspec(dllimport)
-
 #undef _MSVCRT_
 #undef __MINGW_IMPORT
+#define __MINGW_ATTRIB_NORETURN
+#define __MINGW_ATTRIB_CONST
+#define __MINGW_ATTRIB_DEPRECATED
+#define __MINGW_ATTRIB_MALLOC
+#define __MINGW_ATTRIB_PURE
+#define __MINGW_ATTRIB_NONNULL(arg)
+#define __MINGW_NOTHROW
+#define __GNUC_VA_LIST
 
 #define _CRTIMP extern
 #define __CRT_INLINE extern __inline__
-#define __MINGW_NOTHROW
-#define __MINGW_ATTRIB_NORETURN
-#define __MINGW_ATTRIB_DEPRECATED
-#define __GNUC_VA_LIST
 
-#define _CONST_RETURN
 #define _CRT_ALIGN(x) __attribute__((aligned(x)))
 #define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))
+#define _CRT_PACKING 8
+#define __CRT_UNALIGNED
+#define _CONST_RETURN
 
 #define __CRT_STRINGIZE(_Value) #_Value
 #define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
-
 #define __CRT_WIDE(_String) L ## _String
 #define _CRT_WIDE(_String) __CRT_WIDE(_String)
 
 #ifdef _WIN64
-
+# define _INTEGRAL_MAX_BITS 64
 typedef __int64 intptr_t;
+typedef __int64 ptrdiff_t;
 typedef unsigned __int64 uintptr_t;
-#define __stdcall
-#define _AMD64_ 1
-#define __x86_64 1
-#define USE_MINGW_SETJMP_TWO_ARGS
-#define mingw_getsp tinyc_getbp
-
+# define __stdcall
+# define _AMD64_ 1
+# define __x86_64 1
+# define USE_MINGW_SETJMP_TWO_ARGS
+# define mingw_getsp tinyc_getbp
 #else
-
+# define _INTEGRAL_MAX_BITS 32
 typedef __int32 intptr_t;
+typedef __int32 ptrdiff_t;
 typedef unsigned __int32 uintptr_t;
-#define __stdcall __attribute__((__stdcall__))
-#define _X86_ 1
-#define WIN32 1
-
+# define __stdcall __attribute__((__stdcall__))
+# define _X86_ 1
+# define WIN32 1
+# define _USE_32BIT_TIME_T
 #endif
-
-#define _INTEGRAL_MAX_BITS 64
-#define _CRT_PACKING 8
+#define _UINTPTR_T_DEFINED
+#define _INTPTR_T_DEFINED
+#define _PTRDIFF_T_DEFINED
 
 typedef long __time32_t;
 #define _TIME32_T_DEFINED
 typedef __int64 __time64_t;
 #define _TIME64_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+typedef __time32_t time_t;
+#define _TIME_T_DEFINED
+#else
+typedef __time64_t time_t;
+#define _TIME_T_DEFINED
+#endif
 
 typedef unsigned long size_t;
 #define _SIZE_T_DEFINED
 typedef long ssize_t;
 #define _SSIZE_T_DEFINED
 
-#ifdef _USE_32BIT_TIME_T
-#ifdef _WIN64
-#error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
-#endif
-typedef __time32_t time_t;
-#else
-typedef __time64_t time_t;
-#endif
-#define _TIME_T_DEFINED
-
-#define _WCTYPE_T_DEFINED
 typedef unsigned int wint_t;
 typedef unsigned short wctype_t;
+#define _WCTYPE_T_DEFINED
+typedef unsigned short wchar_t;
+#define _WCHAR_T_DEFINED
 
-#define _ERRCODE_DEFINED
 typedef int errno_t;
+#define _ERRCODE_DEFINED
 
 typedef struct threadlocaleinfostruct *pthreadlocinfo;
 typedef struct threadmbcinfostruct *pthreadmbcinfo;
 typedef struct localeinfo_struct _locale_tstruct,*_locale_t;
 
 /* for winapi */
-#define _ANONYMOUS_UNION
-#define _ANONYMOUS_STRUCT
-#define DECLSPEC_NORETURN
 #define WIN32_LEAN_AND_MEAN
-#define DECLARE_STDCALL_P(type) __stdcall type
 #define NOSERVICE 1
 #define NOMCX 1
 #define NOIME 1
 #ifndef WINVER
-#define WINVER 0x0502
+# define WINVER 0x0502
 #endif
 #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x502
+# define _WIN32_WINNT 0x502
 #endif
 
-/* get va_list */
-#include <stdarg.h>
-
 #endif /* __MINGW_H */
diff --git a/win32/include/malloc.h b/win32/include/malloc.h
index 253bd094..bd9ad11c 100644
--- a/win32/include/malloc.h
+++ b/win32/include/malloc.h
@@ -148,7 +148,9 @@ extern "C" {
 #ifdef __GNUC__
 #define alloca(x) __builtin_alloca((x))
 #else
-//gr #define alloca _alloca
+#ifndef __TINYC__ //gr
+#define alloca _alloca
+#endif
 #endif
 #endif
 
diff --git a/win32/include/sys/stat.h b/win32/include/sys/stat.h
index 141ac35b..8f8b0b29 100644
--- a/win32/include/sys/stat.h
+++ b/win32/include/sys/stat.h
@@ -25,6 +25,7 @@ extern "C" {
 
 #include <sys/types.h>
 
+#ifndef __TINYC__ //gr
 #ifdef _USE_32BIT_TIME_T
 #ifdef _WIN64
 #undef _USE_32BIT_TIME_T
@@ -34,6 +35,7 @@ extern "C" {
 #define _USE_32BIT_TIME_T
 #endif
 #endif
+#endif
 
 #ifndef _TIME32_T_DEFINED
   typedef long __time32_t;
diff --git a/win32/include/sys/timeb.h b/win32/include/sys/timeb.h
index d25d887f..046e9c5a 100644
--- a/win32/include/sys/timeb.h
+++ b/win32/include/sys/timeb.h
@@ -22,6 +22,7 @@ extern "C" {
 #define _CRTIMP __declspec(dllimport)
 #endif
 
+#ifndef __TINYC__ //gr
 #ifdef _USE_32BIT_TIME_T
 #ifdef _WIN64
 #undef _USE_32BIT_TIME_T
@@ -31,6 +32,7 @@ extern "C" {
 #define _USE_32BIT_TIME_T
 #endif
 #endif
+#endif
 
 #ifndef _TIME32_T_DEFINED
   typedef long __time32_t;
diff --git a/win32/include/sys/types.h b/win32/include/sys/types.h
index 1b4a93ca..b5dfbd32 100644
--- a/win32/include/sys/types.h
+++ b/win32/include/sys/types.h
@@ -12,6 +12,7 @@
 
 #include <_mingw.h>
 
+#ifndef __TINYC__ //gr
 #ifdef _USE_32BIT_TIME_T
 #ifdef _WIN64
 #undef _USE_32BIT_TIME_T
@@ -21,6 +22,7 @@
 #define _USE_32BIT_TIME_T
 #endif
 #endif
+#endif
 
 #ifndef _TIME32_T_DEFINED
 #define _TIME32_T_DEFINED
diff --git a/win32/include/sys/utime.h b/win32/include/sys/utime.h
index 0fbbc906..f8f30a21 100644
--- a/win32/include/sys/utime.h
+++ b/win32/include/sys/utime.h
@@ -27,6 +27,7 @@ extern "C" {
 #define _WCHAR_T_DEFINED
 #endif
 
+#ifndef __TINYC__ //gr
 #ifdef _USE_32BIT_TIME_T
 #ifdef _WIN64
 #undef _USE_32BIT_TIME_T
@@ -36,6 +37,7 @@ extern "C" {
 #define _USE_32BIT_TIME_T
 #endif
 #endif
+#endif
 
 #ifndef _TIME32_T_DEFINED
 #define _TIME32_T_DEFINED
diff --git a/win32/include/unistd.h b/win32/include/unistd.h
deleted file mode 100644
index 6065a918..00000000
--- a/win32/include/unistd.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
- */
-/*
- * This file is part of the Mingw32 package.
- *
- * unistd.h maps (roughly) to io.h
- */
-
-#ifndef __STRICT_ANSI__
-
-#include <io.h>
-#include <process.h>
-
-#define __UNISTD_GETOPT__
-#include <getopt.h>
-#undef __UNISTD_GETOPT__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef FTRUNCATE_DEFINED
-#define FTRUNCATE_DEFINED
-/* This is defined as a real library function to allow autoconf
-   to verify its existence. */
-int ftruncate(int, off_t);
-__CRT_INLINE int ftruncate(int __fd, off_t __length)
-{
-  return _chsize (__fd, __length);
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif 
diff --git a/win32/include/winapi/winsvc.h b/win32/include/winapi/winsvc.h
deleted file mode 100644
index 54e75035..00000000
--- a/win32/include/winapi/winsvc.h
+++ /dev/null
@@ -1,397 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER within this package.
- */
-#ifndef _WINSVC_
-#define _WINSVC_
-
-#ifndef WINADVAPI
-#define WINADVAPI DECLSPEC_IMPORT
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
-#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
-
-#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
-#define SERVICES_FAILED_DATABASEA "ServicesFailed"
-
-#define SC_GROUP_IDENTIFIERW L'+'
-#define SC_GROUP_IDENTIFIERA '+'
-
-#ifdef UNICODE
-#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
-#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
-
-#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
-#else
-#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
-#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
-
-#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
-#endif
-
-#define SERVICE_NO_CHANGE 0xffffffff
-
-#define SERVICE_ACTIVE 0x00000001
-#define SERVICE_INACTIVE 0x00000002
-#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
-
-#define SERVICE_CONTROL_STOP 0x00000001
-#define SERVICE_CONTROL_PAUSE 0x00000002
-#define SERVICE_CONTROL_CONTINUE 0x00000003
-#define SERVICE_CONTROL_INTERROGATE 0x00000004
-#define SERVICE_CONTROL_SHUTDOWN 0x00000005
-#define SERVICE_CONTROL_PARAMCHANGE 0x00000006
-#define SERVICE_CONTROL_NETBINDADD 0x00000007
-#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
-#define SERVICE_CONTROL_NETBINDENABLE 0x00000009
-#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
-#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
-#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
-#define SERVICE_CONTROL_POWEREVENT 0x0000000D
-#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
-
-#define SERVICE_STOPPED 0x00000001
-#define SERVICE_START_PENDING 0x00000002
-#define SERVICE_STOP_PENDING 0x00000003
-#define SERVICE_RUNNING 0x00000004
-#define SERVICE_CONTINUE_PENDING 0x00000005
-#define SERVICE_PAUSE_PENDING 0x00000006
-#define SERVICE_PAUSED 0x00000007
-
-#define SERVICE_ACCEPT_STOP 0x00000001
-#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
-#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
-#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
-#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
-#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
-#define SERVICE_ACCEPT_POWEREVENT 0x00000040
-#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
-
-#define SC_MANAGER_CONNECT 0x0001
-#define SC_MANAGER_CREATE_SERVICE 0x0002
-#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
-#define SC_MANAGER_LOCK 0x0008
-#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
-#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
-
-#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG)
-
-#define SERVICE_QUERY_CONFIG 0x0001
-#define SERVICE_CHANGE_CONFIG 0x0002
-#define SERVICE_QUERY_STATUS 0x0004
-#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
-#define SERVICE_START 0x0010
-#define SERVICE_STOP 0x0020
-#define SERVICE_PAUSE_CONTINUE 0x0040
-#define SERVICE_INTERROGATE 0x0080
-#define SERVICE_USER_DEFINED_CONTROL 0x0100
-
-#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL)
-
-#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
-
-#define SERVICE_CONFIG_DESCRIPTION 1
-#define SERVICE_CONFIG_FAILURE_ACTIONS 2
-
-  typedef struct _SERVICE_DESCRIPTIONA {
-    LPSTR lpDescription;
-  } SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
-
-  typedef struct _SERVICE_DESCRIPTIONW {
-    LPWSTR lpDescription;
-  } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
-
-#ifdef UNICODE
-  typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
-  typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION;
-#else
-  typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
-  typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
-#endif
-
-  typedef enum _SC_ACTION_TYPE {
-    SC_ACTION_NONE = 0,SC_ACTION_RESTART = 1,SC_ACTION_REBOOT = 2,SC_ACTION_RUN_COMMAND = 3
-  } SC_ACTION_TYPE;
-
-  typedef struct _SC_ACTION {
-    SC_ACTION_TYPE Type;
-    DWORD Delay;
-  } SC_ACTION,*LPSC_ACTION;
-
-  typedef struct _SERVICE_FAILURE_ACTIONSA {
-    DWORD dwResetPeriod;
-    LPSTR lpRebootMsg;
-    LPSTR lpCommand;
-    DWORD cActions;
-    SC_ACTION *lpsaActions;
-  } SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
-
-  typedef struct _SERVICE_FAILURE_ACTIONSW {
-    DWORD dwResetPeriod;
-    LPWSTR lpRebootMsg;
-    LPWSTR lpCommand;
-    DWORD cActions;
-    SC_ACTION *lpsaActions;
-  } SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
-
-#ifdef UNICODE
-  typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
-  typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS;
-#else
-  typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
-  typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
-#endif
-
-  DECLARE_HANDLE(SC_HANDLE);
-  typedef SC_HANDLE *LPSC_HANDLE;
-
-  DECLARE_HANDLE(SERVICE_STATUS_HANDLE);
-
-  typedef enum _SC_STATUS_TYPE {
-    SC_STATUS_PROCESS_INFO = 0
-  } SC_STATUS_TYPE;
-
-  typedef enum _SC_ENUM_TYPE {
-    SC_ENUM_PROCESS_INFO = 0
-  } SC_ENUM_TYPE;
-
-  typedef struct _SERVICE_STATUS {
-    DWORD dwServiceType;
-    DWORD dwCurrentState;
-    DWORD dwControlsAccepted;
-    DWORD dwWin32ExitCode;
-    DWORD dwServiceSpecificExitCode;
-    DWORD dwCheckPoint;
-    DWORD dwWaitHint;
-  } SERVICE_STATUS,*LPSERVICE_STATUS;
-
-  typedef struct _SERVICE_STATUS_PROCESS {
-    DWORD dwServiceType;
-    DWORD dwCurrentState;
-    DWORD dwControlsAccepted;
-    DWORD dwWin32ExitCode;
-    DWORD dwServiceSpecificExitCode;
-    DWORD dwCheckPoint;
-    DWORD dwWaitHint;
-    DWORD dwProcessId;
-    DWORD dwServiceFlags;
-  } SERVICE_STATUS_PROCESS,*LPSERVICE_STATUS_PROCESS;
-
-  typedef struct _ENUM_SERVICE_STATUSA {
-    LPSTR lpServiceName;
-    LPSTR lpDisplayName;
-    SERVICE_STATUS ServiceStatus;
-  } ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
-
-  typedef struct _ENUM_SERVICE_STATUSW {
-    LPWSTR lpServiceName;
-    LPWSTR lpDisplayName;
-    SERVICE_STATUS ServiceStatus;
-  } ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
-
-#ifdef UNICODE
-  typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS;
-  typedef LPENUM_SERVICE_STATUSW LPENUM_SERVICE_STATUS;
-#else
-  typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
-  typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS;
-#endif
-
-  typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
-    LPSTR lpServiceName;
-    LPSTR lpDisplayName;
-    SERVICE_STATUS_PROCESS ServiceStatusProcess;
-  } ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
-
-  typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
-    LPWSTR lpServiceName;
-    LPWSTR lpDisplayName;
-    SERVICE_STATUS_PROCESS ServiceStatusProcess;
-  } ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
-
-#ifdef UNICODE
-  typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
-  typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS;
-#else
-  typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
-  typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
-#endif
-
-  typedef LPVOID SC_LOCK;
-
-  typedef struct _QUERY_SERVICE_LOCK_STATUSA {
-    DWORD fIsLocked;
-    LPSTR lpLockOwner;
-    DWORD dwLockDuration;
-  } QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
-
-  typedef struct _QUERY_SERVICE_LOCK_STATUSW {
-    DWORD fIsLocked;
-    LPWSTR lpLockOwner;
-    DWORD dwLockDuration;
-  } QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
-
-#ifdef UNICODE
-  typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS;
-  typedef LPQUERY_SERVICE_LOCK_STATUSW LPQUERY_SERVICE_LOCK_STATUS;
-#else
-  typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
-  typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS;
-#endif
-
-  typedef struct _QUERY_SERVICE_CONFIGA {
-    DWORD dwServiceType;
-    DWORD dwStartType;
-    DWORD dwErrorControl;
-    LPSTR lpBinaryPathName;
-    LPSTR lpLoadOrderGroup;
-    DWORD dwTagId;
-    LPSTR lpDependencies;
-    LPSTR lpServiceStartName;
-    LPSTR lpDisplayName;
-  } QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
-
-  typedef struct _QUERY_SERVICE_CONFIGW {
-    DWORD dwServiceType;
-    DWORD dwStartType;
-    DWORD dwErrorControl;
-    LPWSTR lpBinaryPathName;
-    LPWSTR lpLoadOrderGroup;
-    DWORD dwTagId;
-    LPWSTR lpDependencies;
-    LPWSTR lpServiceStartName;
-    LPWSTR lpDisplayName;
-  } QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
-
-#ifdef UNICODE
-  typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG;
-  typedef LPQUERY_SERVICE_CONFIGW LPQUERY_SERVICE_CONFIG;
-#else
-  typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
-  typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG;
-#endif
-
-  typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD dwNumServicesArgs,LPWSTR *lpServiceArgVectors);
-  typedef VOID (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD dwNumServicesArgs,LPSTR *lpServiceArgVectors);
-
-#ifdef UNICODE
-#define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONW
-#else
-#define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONA
-#endif
-
-  typedef struct _SERVICE_TABLE_ENTRYA {
-    LPSTR lpServiceName;
-    LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
-  } SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
-
-  typedef struct _SERVICE_TABLE_ENTRYW {
-    LPWSTR lpServiceName;
-    LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
-  } SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
-
-#ifdef UNICODE
-  typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY;
-  typedef LPSERVICE_TABLE_ENTRYW LPSERVICE_TABLE_ENTRY;
-#else
-  typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY;
-  typedef LPSERVICE_TABLE_ENTRYA LPSERVICE_TABLE_ENTRY;
-#endif
-
-  typedef VOID (WINAPI *LPHANDLER_FUNCTION)(DWORD dwControl);
-  typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD dwControl,DWORD dwEventType,LPVOID lpEventData,LPVOID lpContext);
-
-#ifdef UNICODE
-#define ChangeServiceConfig ChangeServiceConfigW
-#define ChangeServiceConfig2 ChangeServiceConfig2W
-#define CreateService CreateServiceW
-#define EnumDependentServices EnumDependentServicesW
-#define EnumServicesStatus EnumServicesStatusW
-#define EnumServicesStatusEx EnumServicesStatusExW
-#define GetServiceKeyName GetServiceKeyNameW
-#define GetServiceDisplayName GetServiceDisplayNameW
-#define OpenSCManager OpenSCManagerW
-#define OpenService OpenServiceW
-#define QueryServiceConfig QueryServiceConfigW
-#define QueryServiceConfig2 QueryServiceConfig2W
-#define QueryServiceLockStatus QueryServiceLockStatusW
-#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
-#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
-#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
-#define StartService StartServiceW
-#else
-#define ChangeServiceConfig ChangeServiceConfigA
-#define ChangeServiceConfig2 ChangeServiceConfig2A
-#define CreateService CreateServiceA
-#define EnumDependentServices EnumDependentServicesA
-#define EnumServicesStatus EnumServicesStatusA
-#define EnumServicesStatusEx EnumServicesStatusExA
-#define GetServiceKeyName GetServiceKeyNameA
-#define GetServiceDisplayName GetServiceDisplayNameA
-#define OpenSCManager OpenSCManagerA
-#define OpenService OpenServiceA
-#define QueryServiceConfig QueryServiceConfigA
-#define QueryServiceConfig2 QueryServiceConfig2A
-#define QueryServiceLockStatus QueryServiceLockStatusA
-#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
-#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
-#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
-#define StartService StartServiceA
-#endif
-
-  WINADVAPI WINBOOL WINAPI ChangeServiceConfigA(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword,LPCSTR lpDisplayName);
-  WINADVAPI WINBOOL 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);
-  WINADVAPI WINBOOL WINAPI ChangeServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo);
-  WINADVAPI WINBOOL WINAPI ChangeServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo);
-  WINADVAPI WINBOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject);
-  WINADVAPI WINBOOL WINAPI ControlService(SC_HANDLE hService,DWORD dwControl,LPSERVICE_STATUS lpServiceStatus);
-  WINADVAPI SC_HANDLE WINAPI CreateServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPCSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword);
-  WINADVAPI SC_HANDLE WINAPI CreateServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPCWSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword);
-  WINADVAPI WINBOOL WINAPI DeleteService(SC_HANDLE hService);
-  WINADVAPI WINBOOL WINAPI EnumDependentServicesA(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned);
-  WINADVAPI WINBOOL WINAPI EnumDependentServicesW(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned);
-  WINADVAPI WINBOOL WINAPI EnumServicesStatusA(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle);
-  WINADVAPI WINBOOL WINAPI EnumServicesStatusW(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle);
-  WINADVAPI WINBOOL WINAPI EnumServicesStatusExA(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCSTR pszGroupName);
-  WINADVAPI WINBOOL WINAPI EnumServicesStatusExW(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCWSTR pszGroupName);
-  WINADVAPI WINBOOL WINAPI GetServiceKeyNameA(SC_HANDLE hSCManager,LPCSTR lpDisplayName,LPSTR lpServiceName,LPDWORD lpcchBuffer);
-  WINADVAPI WINBOOL WINAPI GetServiceKeyNameW(SC_HANDLE hSCManager,LPCWSTR lpDisplayName,LPWSTR lpServiceName,LPDWORD lpcchBuffer);
-  WINADVAPI WINBOOL WINAPI GetServiceDisplayNameA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPSTR lpDisplayName,LPDWORD lpcchBuffer);
-  WINADVAPI WINBOOL WINAPI GetServiceDisplayNameW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPWSTR lpDisplayName,LPDWORD lpcchBuffer);
-  WINADVAPI SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE hSCManager);
-  WINADVAPI WINBOOL WINAPI NotifyBootConfigStatus(WINBOOL BootAcceptable);
-  WINADVAPI SC_HANDLE WINAPI OpenSCManagerA(LPCSTR lpMachineName,LPCSTR lpDatabaseName,DWORD dwDesiredAccess);
-  WINADVAPI SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName,LPCWSTR lpDatabaseName,DWORD dwDesiredAccess);
-  WINADVAPI SC_HANDLE WINAPI OpenServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,DWORD dwDesiredAccess);
-  WINADVAPI SC_HANDLE WINAPI OpenServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,DWORD dwDesiredAccess);
-  WINADVAPI WINBOOL WINAPI QueryServiceConfigA(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGA lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceConfigW(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGW lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceLockStatusA(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceLockStatusW(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI WINBOOL WINAPI QueryServiceStatus(SC_HANDLE hService,LPSERVICE_STATUS lpServiceStatus);
-  WINADVAPI WINBOOL WINAPI QueryServiceStatusEx(SC_HANDLE hService,SC_STATUS_TYPE InfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
-  WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc);
-  WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc);
-  WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext);
-  WINADVAPI SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext);
-  WINADVAPI WINBOOL WINAPI SetServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor);
-  WINADVAPI WINBOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus,LPSERVICE_STATUS lpServiceStatus);
-  WINADVAPI WINBOOL WINAPI StartServiceCtrlDispatcherA(CONST SERVICE_TABLE_ENTRYA *lpServiceStartTable);
-  WINADVAPI WINBOOL WINAPI StartServiceCtrlDispatcherW(CONST SERVICE_TABLE_ENTRYW *lpServiceStartTable);
-  WINADVAPI WINBOOL WINAPI StartServiceA(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCSTR *lpServiceArgVectors);
-  WINADVAPI WINBOOL WINAPI StartServiceW(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCWSTR *lpServiceArgVectors);
-  WINADVAPI WINBOOL WINAPI UnlockServiceDatabase(SC_LOCK ScLock);
-
-#ifdef __cplusplus
-}
-#endif
-#endif