|  | /** | 
|  | * 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 _NSPAPI_INCLUDED | 
|  | #define _NSPAPI_INCLUDED | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | #ifndef _tagBLOB_DEFINED | 
|  | #define _tagBLOB_DEFINED | 
|  | #define _BLOB_DEFINED | 
|  | #define _LPBLOB_DEFINED | 
|  | typedef struct _BLOB { | 
|  | ULONG cbSize; | 
|  | BYTE *pBlobData; | 
|  | } BLOB,*LPBLOB; | 
|  | #endif | 
|  |  | 
|  | #ifndef GUID_DEFINED | 
|  | #define GUID_DEFINED | 
|  | typedef struct _GUID { | 
|  | unsigned long Data1; | 
|  | unsigned short Data2; | 
|  | unsigned short Data3; | 
|  | unsigned char Data4[8]; | 
|  | } GUID; | 
|  | #endif | 
|  |  | 
|  | #ifndef __LPGUID_DEFINED__ | 
|  | #define __LPGUID_DEFINED__ | 
|  | typedef GUID *LPGUID; | 
|  | #endif | 
|  |  | 
|  | #define SERVICE_RESOURCE (0x00000001) | 
|  | #define SERVICE_SERVICE (0x00000002) | 
|  | #define SERVICE_LOCAL (0x00000004) | 
|  |  | 
|  | #define SERVICE_REGISTER (0x00000001) | 
|  | #define SERVICE_DEREGISTER (0x00000002) | 
|  | #define SERVICE_FLUSH (0x00000003) | 
|  | #define SERVICE_ADD_TYPE (0x00000004) | 
|  | #define SERVICE_DELETE_TYPE (0x00000005) | 
|  |  | 
|  | #define SERVICE_FLAG_DEFER (0x00000001) | 
|  | #define SERVICE_FLAG_HARD (0x00000002) | 
|  |  | 
|  | #define PROP_COMMENT (0x00000001) | 
|  | #define PROP_LOCALE (0x00000002) | 
|  | #define PROP_DISPLAY_HINT (0x00000004) | 
|  | #define PROP_VERSION (0x00000008) | 
|  | #define PROP_START_TIME (0x00000010) | 
|  | #define PROP_MACHINE (0x00000020) | 
|  | #define PROP_ADDRESSES (0x00000100) | 
|  | #define PROP_SD (0x00000200) | 
|  | #define PROP_ALL (0x80000000) | 
|  |  | 
|  | #define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001) | 
|  | #define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002) | 
|  | #define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004) | 
|  |  | 
|  | #define NS_DEFAULT (0) | 
|  |  | 
|  | #define NS_SAP (1) | 
|  | #define NS_NDS (2) | 
|  | #define NS_PEER_BROWSE (3) | 
|  |  | 
|  | #define NS_TCPIP_LOCAL (10) | 
|  | #define NS_TCPIP_HOSTS (11) | 
|  | #define NS_DNS (12) | 
|  | #define NS_NETBT (13) | 
|  | #define NS_WINS (14) | 
|  |  | 
|  | #define NS_NBP (20) | 
|  |  | 
|  | #define NS_MS (30) | 
|  | #define NS_STDA (31) | 
|  | #define NS_NTDS (32) | 
|  |  | 
|  | #define NS_X500 (40) | 
|  | #define NS_NIS (41) | 
|  |  | 
|  | #define NS_VNS (50) | 
|  |  | 
|  | #define NSTYPE_HIERARCHICAL (0x00000001) | 
|  | #define NSTYPE_DYNAMIC (0x00000002) | 
|  | #define NSTYPE_ENUMERABLE (0x00000004) | 
|  | #define NSTYPE_WORKGROUP (0x00000008) | 
|  |  | 
|  | #define XP_CONNECTIONLESS (0x00000001) | 
|  | #define XP_GUARANTEED_DELIVERY (0x00000002) | 
|  | #define XP_GUARANTEED_ORDER (0x00000004) | 
|  | #define XP_MESSAGE_ORIENTED (0x00000008) | 
|  | #define XP_PSEUDO_STREAM (0x00000010) | 
|  | #define XP_GRACEFUL_CLOSE (0x00000020) | 
|  | #define XP_EXPEDITED_DATA (0x00000040) | 
|  | #define XP_CONNECT_DATA (0x00000080) | 
|  | #define XP_DISCONNECT_DATA (0x00000100) | 
|  | #define XP_SUPPORTS_BROADCAST (0x00000200) | 
|  | #define XP_SUPPORTS_MULTICAST (0x00000400) | 
|  | #define XP_BANDWIDTH_ALLOCATION (0x00000800) | 
|  | #define XP_FRAGMENTATION (0x00001000) | 
|  | #define XP_ENCRYPTS (0x00002000) | 
|  |  | 
|  | #define RES_SOFT_SEARCH (0x00000001) | 
|  | #define RES_FIND_MULTIPLE (0x00000002) | 
|  | #define RES_SERVICE (0x00000004) | 
|  |  | 
|  | #define SERVICE_TYPE_VALUE_SAPIDA "SapId" | 
|  | #define SERVICE_TYPE_VALUE_SAPIDW L"SapId" | 
|  |  | 
|  | #define SERVICE_TYPE_VALUE_CONNA "ConnectionOriented" | 
|  | #define SERVICE_TYPE_VALUE_CONNW L"ConnectionOriented" | 
|  |  | 
|  | #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort" | 
|  | #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" | 
|  |  | 
|  | #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort" | 
|  | #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" | 
|  |  | 
|  | #ifdef UNICODE | 
|  |  | 
|  | #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW | 
|  | #define SERVICE_TYPE_VALUE_CONN SERVICE_TYPE_VALUE_CONNW | 
|  | #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW | 
|  | #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW | 
|  | #else | 
|  |  | 
|  | #define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA | 
|  | #define SERVICE_TYPE_VALUE_CONN SERVICE_TYPE_VALUE_CONNA | 
|  | #define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA | 
|  | #define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA | 
|  | #endif | 
|  |  | 
|  | #define SET_SERVICE_PARTIAL_SUCCESS (0x00000001) | 
|  |  | 
|  | typedef struct _NS_INFOA { | 
|  | DWORD dwNameSpace; | 
|  | DWORD dwNameSpaceFlags; | 
|  | LPSTR lpNameSpace; | 
|  | } NS_INFOA,*PNS_INFOA,*LPNS_INFOA; | 
|  |  | 
|  | typedef struct _NS_INFOW { | 
|  | DWORD dwNameSpace; | 
|  | DWORD dwNameSpaceFlags; | 
|  | LPWSTR lpNameSpace; | 
|  | } NS_INFOW,*PNS_INFOW,*LPNS_INFOW; | 
|  | #ifdef UNICODE | 
|  | typedef NS_INFOW NS_INFO; | 
|  | typedef PNS_INFOW PNS_INFO; | 
|  | typedef LPNS_INFOW LPNS_INFO; | 
|  | #else | 
|  | typedef NS_INFOA NS_INFO; | 
|  | typedef PNS_INFOA PNS_INFO; | 
|  | typedef LPNS_INFOA LPNS_INFO; | 
|  | #endif | 
|  |  | 
|  | typedef struct _SERVICE_TYPE_VALUE { | 
|  | DWORD dwNameSpace; | 
|  | DWORD dwValueType; | 
|  | DWORD dwValueSize; | 
|  | DWORD dwValueNameOffset; | 
|  | DWORD dwValueOffset; | 
|  | } SERVICE_TYPE_VALUE,*PSERVICE_TYPE_VALUE,*LPSERVICE_TYPE_VALUE; | 
|  |  | 
|  | typedef struct _SERVICE_TYPE_VALUE_ABSA { | 
|  | DWORD dwNameSpace; | 
|  | DWORD dwValueType; | 
|  | DWORD dwValueSize; | 
|  | LPSTR lpValueName; | 
|  | PVOID lpValue; | 
|  | } SERVICE_TYPE_VALUE_ABSA,*PSERVICE_TYPE_VALUE_ABSA,*LPSERVICE_TYPE_VALUE_ABSA; | 
|  |  | 
|  | typedef struct _SERVICE_TYPE_VALUE_ABSW { | 
|  | DWORD dwNameSpace; | 
|  | DWORD dwValueType; | 
|  | DWORD dwValueSize; | 
|  | LPWSTR lpValueName; | 
|  | PVOID lpValue; | 
|  | } SERVICE_TYPE_VALUE_ABSW,*PSERVICE_TYPE_VALUE_ABSW,*LPSERVICE_TYPE_VALUE_ABSW; | 
|  | #ifdef UNICODE | 
|  | typedef SERVICE_TYPE_VALUE_ABSW SERVICE_TYPE_VALUE_ABS; | 
|  | typedef PSERVICE_TYPE_VALUE_ABSW PSERVICE_TYPE_VALUE_ABS; | 
|  | typedef LPSERVICE_TYPE_VALUE_ABSW LPSERVICE_TYPE_VALUE_ABS; | 
|  | #else | 
|  | typedef SERVICE_TYPE_VALUE_ABSA SERVICE_TYPE_VALUE_ABS; | 
|  | typedef PSERVICE_TYPE_VALUE_ABSA PSERVICE_TYPE_VALUE_ABS; | 
|  | typedef LPSERVICE_TYPE_VALUE_ABSA LPSERVICE_TYPE_VALUE_ABS; | 
|  | #endif | 
|  |  | 
|  | typedef struct _SERVICE_TYPE_INFO { | 
|  | DWORD dwTypeNameOffset; | 
|  | DWORD dwValueCount; | 
|  | SERVICE_TYPE_VALUE Values[1]; | 
|  | } SERVICE_TYPE_INFO,*PSERVICE_TYPE_INFO,*LPSERVICE_TYPE_INFO; | 
|  |  | 
|  | typedef struct _SERVICE_TYPE_INFO_ABSA { | 
|  | LPSTR lpTypeName; | 
|  | DWORD dwValueCount; | 
|  | SERVICE_TYPE_VALUE_ABSA Values[1]; | 
|  | } SERVICE_TYPE_INFO_ABSA,*PSERVICE_TYPE_INFO_ABSA,*LPSERVICE_TYPE_INFO_ABSA; | 
|  | typedef struct _SERVICE_TYPE_INFO_ABSW { | 
|  | LPWSTR lpTypeName; | 
|  | DWORD dwValueCount; | 
|  | SERVICE_TYPE_VALUE_ABSW Values[1]; | 
|  | } SERVICE_TYPE_INFO_ABSW,*PSERVICE_TYPE_INFO_ABSW,*LPSERVICE_TYPE_INFO_ABSW; | 
|  | #ifdef UNICODE | 
|  | typedef SERVICE_TYPE_INFO_ABSW SERVICE_TYPE_INFO_ABS; | 
|  | typedef PSERVICE_TYPE_INFO_ABSW PSERVICE_TYPE_INFO_ABS; | 
|  | typedef LPSERVICE_TYPE_INFO_ABSW LPSERVICE_TYPE_INFO_ABS; | 
|  | #else | 
|  | typedef SERVICE_TYPE_INFO_ABSA SERVICE_TYPE_INFO_ABS; | 
|  | typedef PSERVICE_TYPE_INFO_ABSA PSERVICE_TYPE_INFO_ABS; | 
|  | typedef LPSERVICE_TYPE_INFO_ABSA LPSERVICE_TYPE_INFO_ABS; | 
|  | #endif | 
|  |  | 
|  | typedef struct _SERVICE_ADDRESS { | 
|  | DWORD dwAddressType; | 
|  | DWORD dwAddressFlags; | 
|  | DWORD dwAddressLength; | 
|  | DWORD dwPrincipalLength; | 
|  | BYTE *lpAddress; | 
|  | BYTE *lpPrincipal; | 
|  | } SERVICE_ADDRESS,*PSERVICE_ADDRESS,*LPSERVICE_ADDRESS; | 
|  |  | 
|  | typedef struct _SERVICE_ADDRESSES { | 
|  | DWORD dwAddressCount; | 
|  | SERVICE_ADDRESS Addresses[1]; | 
|  | } SERVICE_ADDRESSES,*PSERVICE_ADDRESSES,*LPSERVICE_ADDRESSES; | 
|  |  | 
|  | typedef struct _SERVICE_INFOA { | 
|  | LPGUID lpServiceType; | 
|  | LPSTR lpServiceName; | 
|  | LPSTR lpComment; | 
|  | LPSTR lpLocale; | 
|  | DWORD dwDisplayHint; | 
|  | DWORD dwVersion; | 
|  | DWORD dwTime; | 
|  | LPSTR lpMachineName; | 
|  | LPSERVICE_ADDRESSES lpServiceAddress; | 
|  | BLOB ServiceSpecificInfo; | 
|  | } SERVICE_INFOA,*PSERVICE_INFOA,*LPSERVICE_INFOA; | 
|  |  | 
|  | typedef struct _SERVICE_INFOW { | 
|  | LPGUID lpServiceType; | 
|  | LPWSTR lpServiceName; | 
|  | LPWSTR lpComment; | 
|  | LPWSTR lpLocale; | 
|  | DWORD dwDisplayHint; | 
|  | DWORD dwVersion; | 
|  | DWORD dwTime; | 
|  | LPWSTR lpMachineName; | 
|  | LPSERVICE_ADDRESSES lpServiceAddress; | 
|  | BLOB ServiceSpecificInfo; | 
|  | } SERVICE_INFOW,*PSERVICE_INFOW,*LPSERVICE_INFOW; | 
|  | #ifdef UNICODE | 
|  | typedef SERVICE_INFOW SERVICE_INFO; | 
|  | typedef PSERVICE_INFOW PSERVICE_INFO; | 
|  | typedef LPSERVICE_INFOW LPSERVICE_INFO; | 
|  | #else | 
|  | typedef SERVICE_INFOA SERVICE_INFO; | 
|  | typedef PSERVICE_INFOA PSERVICE_INFO; | 
|  | typedef LPSERVICE_INFOA LPSERVICE_INFO; | 
|  | #endif | 
|  |  | 
|  | typedef struct _NS_SERVICE_INFOA { | 
|  | DWORD dwNameSpace; | 
|  | SERVICE_INFOA ServiceInfo; | 
|  | } NS_SERVICE_INFOA,*PNS_SERVICE_INFOA,*LPNS_SERVICE_INFOA; | 
|  |  | 
|  | typedef struct _NS_SERVICE_INFOW { | 
|  | DWORD dwNameSpace; | 
|  | SERVICE_INFOW ServiceInfo; | 
|  | } NS_SERVICE_INFOW,*PNS_SERVICE_INFOW,*LPNS_SERVICE_INFOW; | 
|  | #ifdef UNICODE | 
|  | typedef NS_SERVICE_INFOW NS_SERVICE_INFO; | 
|  | typedef PNS_SERVICE_INFOW PNS_SERVICE_INFO; | 
|  | typedef LPNS_SERVICE_INFOW LPNS_SERVICE_INFO; | 
|  | #else | 
|  | typedef NS_SERVICE_INFOA NS_SERVICE_INFO; | 
|  | typedef PNS_SERVICE_INFOA PNS_SERVICE_INFO; | 
|  | typedef LPNS_SERVICE_INFOA LPNS_SERVICE_INFO; | 
|  | #endif | 
|  |  | 
|  | #ifndef __CSADDR_DEFINED__ | 
|  | #define __CSADDR_DEFINED__ | 
|  |  | 
|  | typedef struct _SOCKET_ADDRESS { | 
|  | LPSOCKADDR lpSockaddr; | 
|  | INT iSockaddrLength; | 
|  | } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS; | 
|  |  | 
|  | typedef struct _CSADDR_INFO { | 
|  | SOCKET_ADDRESS LocalAddr; | 
|  | SOCKET_ADDRESS RemoteAddr; | 
|  | INT iSocketType; | 
|  | INT iProtocol; | 
|  | } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO; | 
|  | #endif | 
|  |  | 
|  | typedef struct _PROTOCOL_INFOA { | 
|  | DWORD dwServiceFlags; | 
|  | INT iAddressFamily; | 
|  | INT iMaxSockAddr; | 
|  | INT iMinSockAddr; | 
|  | INT iSocketType; | 
|  | INT iProtocol; | 
|  | DWORD dwMessageSize; | 
|  | LPSTR lpProtocol; | 
|  | } PROTOCOL_INFOA,*PPROTOCOL_INFOA,*LPPROTOCOL_INFOA; | 
|  |  | 
|  | typedef struct _PROTOCOL_INFOW { | 
|  | DWORD dwServiceFlags; | 
|  | INT iAddressFamily; | 
|  | INT iMaxSockAddr; | 
|  | INT iMinSockAddr; | 
|  | INT iSocketType; | 
|  | INT iProtocol; | 
|  | DWORD dwMessageSize; | 
|  | LPWSTR lpProtocol; | 
|  | } PROTOCOL_INFOW,*PPROTOCOL_INFOW,*LPPROTOCOL_INFOW; | 
|  | #ifdef UNICODE | 
|  | typedef PROTOCOL_INFOW PROTOCOL_INFO; | 
|  | typedef PPROTOCOL_INFOW PPROTOCOL_INFO; | 
|  | typedef LPPROTOCOL_INFOW LPPROTOCOL_INFO; | 
|  | #else | 
|  | typedef PROTOCOL_INFOA PROTOCOL_INFO; | 
|  | typedef PPROTOCOL_INFOA PPROTOCOL_INFO; | 
|  | typedef LPPROTOCOL_INFOA LPPROTOCOL_INFO; | 
|  | #endif | 
|  |  | 
|  | typedef struct _NETRESOURCE2A { | 
|  | DWORD dwScope; | 
|  | DWORD dwType; | 
|  | DWORD dwUsage; | 
|  | DWORD dwDisplayType; | 
|  | LPSTR lpLocalName; | 
|  | LPSTR lpRemoteName; | 
|  | LPSTR lpComment; | 
|  | NS_INFO ns_info; | 
|  | GUID ServiceType; | 
|  | DWORD dwProtocols; | 
|  | LPINT lpiProtocols; | 
|  | } NETRESOURCE2A,*PNETRESOURCE2A,*LPNETRESOURCE2A; | 
|  |  | 
|  | typedef struct _NETRESOURCE2W { | 
|  | DWORD dwScope; | 
|  | DWORD dwType; | 
|  | DWORD dwUsage; | 
|  | DWORD dwDisplayType; | 
|  | LPWSTR lpLocalName; | 
|  | LPWSTR lpRemoteName; | 
|  | LPWSTR lpComment; | 
|  | NS_INFO ns_info; | 
|  | GUID ServiceType; | 
|  | DWORD dwProtocols; | 
|  | LPINT lpiProtocols; | 
|  | } NETRESOURCE2W,*PNETRESOURCE2W,*LPNETRESOURCE2W; | 
|  | #ifdef UNICODE | 
|  | typedef NETRESOURCE2W NETRESOURCE2; | 
|  | typedef PNETRESOURCE2W PNETRESOURCE2; | 
|  | typedef LPNETRESOURCE2W LPNETRESOURCE2; | 
|  | #else | 
|  | typedef NETRESOURCE2A NETRESOURCE2; | 
|  | typedef PNETRESOURCE2A PNETRESOURCE2; | 
|  | typedef LPNETRESOURCE2A LPNETRESOURCE2; | 
|  | #endif | 
|  |  | 
|  | typedef DWORD (*LPFN_NSPAPI)(VOID); | 
|  |  | 
|  | typedef VOID (*LPSERVICE_CALLBACK_PROC)(LPARAM lParam,HANDLE hAsyncTaskHandle); | 
|  | typedef struct _SERVICE_ASYNC_INFO { | 
|  | LPSERVICE_CALLBACK_PROC lpServiceCallbackProc; | 
|  | LPARAM lParam; | 
|  | HANDLE hAsyncTaskHandle; | 
|  | } SERVICE_ASYNC_INFO,*PSERVICE_ASYNC_INFO,*LPSERVICE_ASYNC_INFO; | 
|  |  | 
|  | #ifdef UNICODE | 
|  | #define EnumProtocols EnumProtocolsW | 
|  | #define GetAddressByName GetAddressByNameW | 
|  | #define GetTypeByName GetTypeByNameW | 
|  | #define GetNameByType GetNameByTypeW | 
|  | #define SetService SetServiceW | 
|  | #define GetService GetServiceW | 
|  | #else | 
|  | #define EnumProtocols EnumProtocolsA | 
|  | #define GetAddressByName GetAddressByNameA | 
|  | #define GetTypeByName GetTypeByNameA | 
|  | #define GetNameByType GetNameByTypeA | 
|  | #define SetService SetServiceA | 
|  | #define GetService GetServiceA | 
|  | #endif | 
|  |  | 
|  | INT WINAPI EnumProtocolsA(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength); | 
|  | INT WINAPI EnumProtocolsW(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength); | 
|  | INT WINAPI GetAddressByNameA(DWORD dwNameSpace,LPGUID lpServiceType,LPSTR lpServiceName,LPINT lpiProtocols,DWORD dwResolution,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPVOID lpCsaddrBuffer,LPDWORD lpdwBufferLength,LPSTR lpAliasBuffer,LPDWORD lpdwAliasBufferLength); | 
|  | INT WINAPI GetAddressByNameW(DWORD dwNameSpace,LPGUID lpServiceType,LPWSTR lpServiceName,LPINT lpiProtocols,DWORD dwResolution,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPVOID lpCsaddrBuffer,LPDWORD lpdwBufferLength,LPWSTR lpAliasBuffer,LPDWORD lpdwAliasBufferLength); | 
|  | INT WINAPI GetTypeByNameA(LPSTR lpServiceName,LPGUID lpServiceType); | 
|  | INT WINAPI GetTypeByNameW(LPWSTR lpServiceName,LPGUID lpServiceType); | 
|  | INT WINAPI GetNameByTypeA(LPGUID lpServiceType,LPSTR lpServiceName,DWORD dwNameLength); | 
|  | INT WINAPI GetNameByTypeW(LPGUID lpServiceType,LPWSTR lpServiceName,DWORD dwNameLength); | 
|  | INT WINAPI SetServiceA(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOA lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags); | 
|  | INT WINAPI SetServiceW(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOW lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags); | 
|  | INT WINAPI GetServiceA(DWORD dwNameSpace,LPGUID lpGuid,LPSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo); | 
|  | INT WINAPI GetServiceW(DWORD dwNameSpace,LPGUID lpGuid,LPWSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  | #endif |