1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _NSPAPI_INCLUDED 7 #define _NSPAPI_INCLUDED 8 9 #include <_mingw_unicode.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #ifndef _tagBLOB_DEFINED 16 #define _tagBLOB_DEFINED 17 #define _BLOB_DEFINED 18 #define _LPBLOB_DEFINED 19 typedef struct _BLOB { 20 ULONG cbSize; 21 BYTE *pBlobData; 22 } BLOB,*LPBLOB; 23 #endif 24 25 #ifndef GUID_DEFINED 26 #define GUID_DEFINED 27 typedef struct _GUID { 28 unsigned __LONG32 Data1; 29 unsigned short Data2; 30 unsigned short Data3; 31 unsigned char Data4[8]; 32 } GUID; 33 #endif 34 35 #ifndef __LPGUID_DEFINED__ 36 #define __LPGUID_DEFINED__ 37 typedef GUID *LPGUID; 38 #endif 39 40 #define SERVICE_RESOURCE (0x00000001) 41 #define SERVICE_SERVICE (0x00000002) 42 #define SERVICE_LOCAL (0x00000004) 43 44 #define SERVICE_REGISTER (0x00000001) 45 #define SERVICE_DEREGISTER (0x00000002) 46 #define SERVICE_FLUSH (0x00000003) 47 #define SERVICE_ADD_TYPE (0x00000004) 48 #define SERVICE_DELETE_TYPE (0x00000005) 49 50 #define SERVICE_FLAG_DEFER (0x00000001) 51 #define SERVICE_FLAG_HARD (0x00000002) 52 53 #define PROP_COMMENT (0x00000001) 54 #define PROP_LOCALE (0x00000002) 55 #define PROP_DISPLAY_HINT (0x00000004) 56 #define PROP_VERSION (0x00000008) 57 #define PROP_START_TIME (0x00000010) 58 #define PROP_MACHINE (0x00000020) 59 #define PROP_ADDRESSES (0x00000100) 60 #define PROP_SD (0x00000200) 61 #define PROP_ALL (0x80000000) 62 63 #define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001) 64 #define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002) 65 #define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004) 66 67 #define NS_DEFAULT (0) 68 69 #define NS_SAP (1) 70 #define NS_NDS (2) 71 #define NS_PEER_BROWSE (3) 72 73 #define NS_TCPIP_LOCAL (10) 74 #define NS_TCPIP_HOSTS (11) 75 #define NS_DNS (12) 76 #define NS_NETBT (13) 77 #define NS_WINS (14) 78 #define NS_NLA (15) 79 #if (_WIN32_WINNT >= 0x0600) 80 #define NS_BTH (16) 81 #endif 82 83 #define NS_NBP (20) 84 85 #define NS_MS (30) 86 #define NS_STDA (31) 87 #define NS_NTDS (32) 88 89 #if (_WIN32_WINNT >= 0x0600) 90 #define NS_EMAIL (37) 91 #define NS_PNRPNAME (38) 92 #define NS_PNRPCLOUD (39) 93 #endif 94 95 #define NS_X500 (40) 96 #define NS_NIS (41) 97 98 #define NS_VNS (50) 99 100 #define NSTYPE_HIERARCHICAL (0x00000001) 101 #define NSTYPE_DYNAMIC (0x00000002) 102 #define NSTYPE_ENUMERABLE (0x00000004) 103 #define NSTYPE_WORKGROUP (0x00000008) 104 105 #define XP_CONNECTIONLESS (0x00000001) 106 #define XP_GUARANTEED_DELIVERY (0x00000002) 107 #define XP_GUARANTEED_ORDER (0x00000004) 108 #define XP_MESSAGE_ORIENTED (0x00000008) 109 #define XP_PSEUDO_STREAM (0x00000010) 110 #define XP_GRACEFUL_CLOSE (0x00000020) 111 #define XP_EXPEDITED_DATA (0x00000040) 112 #define XP_CONNECT_DATA (0x00000080) 113 #define XP_DISCONNECT_DATA (0x00000100) 114 #define XP_SUPPORTS_BROADCAST (0x00000200) 115 #define XP_SUPPORTS_MULTICAST (0x00000400) 116 #define XP_BANDWIDTH_ALLOCATION (0x00000800) 117 #define XP_FRAGMENTATION (0x00001000) 118 #define XP_ENCRYPTS (0x00002000) 119 120 #define RES_SOFT_SEARCH (0x00000001) 121 #define RES_FIND_MULTIPLE (0x00000002) 122 #define RES_SERVICE (0x00000004) 123 124 #define SERVICE_TYPE_VALUE_SAPIDA "SapId" 125 #define SERVICE_TYPE_VALUE_SAPIDW L"SapId" 126 127 #define SERVICE_TYPE_VALUE_CONNA "ConnectionOriented" 128 #define SERVICE_TYPE_VALUE_CONNW L"ConnectionOriented" 129 130 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort" 131 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" 132 133 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort" 134 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" 135 136 #define SERVICE_TYPE_VALUE_SAPID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_SAPID) 137 #define SERVICE_TYPE_VALUE_CONN __MINGW_NAME_AW(SERVICE_TYPE_VALUE_CONN) 138 #define SERVICE_TYPE_VALUE_TCPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_TCPPORT) 139 #define SERVICE_TYPE_VALUE_UDPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_UDPPORT) 140 141 #define SET_SERVICE_PARTIAL_SUCCESS (0x00000001) 142 143 typedef struct _NS_INFOA { 144 DWORD dwNameSpace; 145 DWORD dwNameSpaceFlags; 146 LPSTR lpNameSpace; 147 } NS_INFOA,*PNS_INFOA,*LPNS_INFOA; 148 149 typedef struct _NS_INFOW { 150 DWORD dwNameSpace; 151 DWORD dwNameSpaceFlags; 152 LPWSTR lpNameSpace; 153 } NS_INFOW,*PNS_INFOW,*LPNS_INFOW; 154 155 __MINGW_TYPEDEF_AW(NS_INFO) 156 __MINGW_TYPEDEF_AW(PNS_INFO) 157 __MINGW_TYPEDEF_AW(LPNS_INFO) 158 159 typedef struct _SERVICE_TYPE_VALUE { 160 DWORD dwNameSpace; 161 DWORD dwValueType; 162 DWORD dwValueSize; 163 DWORD dwValueNameOffset; 164 DWORD dwValueOffset; 165 } SERVICE_TYPE_VALUE,*PSERVICE_TYPE_VALUE,*LPSERVICE_TYPE_VALUE; 166 167 typedef struct _SERVICE_TYPE_VALUE_ABSA { 168 DWORD dwNameSpace; 169 DWORD dwValueType; 170 DWORD dwValueSize; 171 LPSTR lpValueName; 172 PVOID lpValue; 173 } SERVICE_TYPE_VALUE_ABSA,*PSERVICE_TYPE_VALUE_ABSA,*LPSERVICE_TYPE_VALUE_ABSA; 174 175 typedef struct _SERVICE_TYPE_VALUE_ABSW { 176 DWORD dwNameSpace; 177 DWORD dwValueType; 178 DWORD dwValueSize; 179 LPWSTR lpValueName; 180 PVOID lpValue; 181 } SERVICE_TYPE_VALUE_ABSW,*PSERVICE_TYPE_VALUE_ABSW,*LPSERVICE_TYPE_VALUE_ABSW; 182 183 __MINGW_TYPEDEF_AW(SERVICE_TYPE_VALUE_ABS) 184 __MINGW_TYPEDEF_AW(PSERVICE_TYPE_VALUE_ABS) 185 __MINGW_TYPEDEF_AW(LPSERVICE_TYPE_VALUE_ABS) 186 187 typedef struct _SERVICE_TYPE_INFO { 188 DWORD dwTypeNameOffset; 189 DWORD dwValueCount; 190 SERVICE_TYPE_VALUE Values[1]; 191 } SERVICE_TYPE_INFO,*PSERVICE_TYPE_INFO,*LPSERVICE_TYPE_INFO; 192 193 typedef struct _SERVICE_TYPE_INFO_ABSA { 194 LPSTR lpTypeName; 195 DWORD dwValueCount; 196 SERVICE_TYPE_VALUE_ABSA Values[1]; 197 } SERVICE_TYPE_INFO_ABSA,*PSERVICE_TYPE_INFO_ABSA,*LPSERVICE_TYPE_INFO_ABSA; 198 typedef struct _SERVICE_TYPE_INFO_ABSW { 199 LPWSTR lpTypeName; 200 DWORD dwValueCount; 201 SERVICE_TYPE_VALUE_ABSW Values[1]; 202 } SERVICE_TYPE_INFO_ABSW,*PSERVICE_TYPE_INFO_ABSW,*LPSERVICE_TYPE_INFO_ABSW; 203 204 __MINGW_TYPEDEF_AW(SERVICE_TYPE_INFO_ABS) 205 __MINGW_TYPEDEF_AW(PSERVICE_TYPE_INFO_ABS) 206 __MINGW_TYPEDEF_AW(LPSERVICE_TYPE_INFO_ABS) 207 208 typedef struct _SERVICE_ADDRESS { 209 DWORD dwAddressType; 210 DWORD dwAddressFlags; 211 DWORD dwAddressLength; 212 DWORD dwPrincipalLength; 213 BYTE *lpAddress; 214 BYTE *lpPrincipal; 215 } SERVICE_ADDRESS,*PSERVICE_ADDRESS,*LPSERVICE_ADDRESS; 216 217 typedef struct _SERVICE_ADDRESSES { 218 DWORD dwAddressCount; 219 SERVICE_ADDRESS Addresses[1]; 220 } SERVICE_ADDRESSES,*PSERVICE_ADDRESSES,*LPSERVICE_ADDRESSES; 221 222 typedef struct _SERVICE_INFOA { 223 LPGUID lpServiceType; 224 LPSTR lpServiceName; 225 LPSTR lpComment; 226 LPSTR lpLocale; 227 DWORD dwDisplayHint; 228 DWORD dwVersion; 229 DWORD dwTime; 230 LPSTR lpMachineName; 231 LPSERVICE_ADDRESSES lpServiceAddress; 232 BLOB ServiceSpecificInfo; 233 } SERVICE_INFOA,*PSERVICE_INFOA,*LPSERVICE_INFOA; 234 235 typedef struct _SERVICE_INFOW { 236 LPGUID lpServiceType; 237 LPWSTR lpServiceName; 238 LPWSTR lpComment; 239 LPWSTR lpLocale; 240 DWORD dwDisplayHint; 241 DWORD dwVersion; 242 DWORD dwTime; 243 LPWSTR lpMachineName; 244 LPSERVICE_ADDRESSES lpServiceAddress; 245 BLOB ServiceSpecificInfo; 246 } SERVICE_INFOW,*PSERVICE_INFOW,*LPSERVICE_INFOW; 247 248 __MINGW_TYPEDEF_AW(SERVICE_INFO) 249 __MINGW_TYPEDEF_AW(PSERVICE_INFO) 250 __MINGW_TYPEDEF_AW(LPSERVICE_INFO) 251 252 typedef struct _NS_SERVICE_INFOA { 253 DWORD dwNameSpace; 254 SERVICE_INFOA ServiceInfo; 255 } NS_SERVICE_INFOA,*PNS_SERVICE_INFOA,*LPNS_SERVICE_INFOA; 256 257 typedef struct _NS_SERVICE_INFOW { 258 DWORD dwNameSpace; 259 SERVICE_INFOW ServiceInfo; 260 } NS_SERVICE_INFOW,*PNS_SERVICE_INFOW,*LPNS_SERVICE_INFOW; 261 262 __MINGW_TYPEDEF_AW(NS_SERVICE_INFO) 263 __MINGW_TYPEDEF_AW(PNS_SERVICE_INFO) 264 __MINGW_TYPEDEF_AW(LPNS_SERVICE_INFO) 265 266 #ifndef __CSADDR_DEFINED__ 267 #define __CSADDR_DEFINED__ 268 269 typedef struct _SOCKET_ADDRESS { 270 LPSOCKADDR lpSockaddr; 271 INT iSockaddrLength; 272 } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS; 273 274 typedef struct _CSADDR_INFO { 275 SOCKET_ADDRESS LocalAddr; 276 SOCKET_ADDRESS RemoteAddr; 277 INT iSocketType; 278 INT iProtocol; 279 } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO; 280 #endif 281 282 typedef struct _PROTOCOL_INFOA { 283 DWORD dwServiceFlags; 284 INT iAddressFamily; 285 INT iMaxSockAddr; 286 INT iMinSockAddr; 287 INT iSocketType; 288 INT iProtocol; 289 DWORD dwMessageSize; 290 LPSTR lpProtocol; 291 } PROTOCOL_INFOA,*PPROTOCOL_INFOA,*LPPROTOCOL_INFOA; 292 293 typedef struct _PROTOCOL_INFOW { 294 DWORD dwServiceFlags; 295 INT iAddressFamily; 296 INT iMaxSockAddr; 297 INT iMinSockAddr; 298 INT iSocketType; 299 INT iProtocol; 300 DWORD dwMessageSize; 301 LPWSTR lpProtocol; 302 } PROTOCOL_INFOW,*PPROTOCOL_INFOW,*LPPROTOCOL_INFOW; 303 304 __MINGW_TYPEDEF_AW(PROTOCOL_INFO) 305 __MINGW_TYPEDEF_AW(PPROTOCOL_INFO) 306 __MINGW_TYPEDEF_AW(LPPROTOCOL_INFO) 307 308 typedef struct _NETRESOURCE2A { 309 DWORD dwScope; 310 DWORD dwType; 311 DWORD dwUsage; 312 DWORD dwDisplayType; 313 LPSTR lpLocalName; 314 LPSTR lpRemoteName; 315 LPSTR lpComment; 316 NS_INFO ns_info; 317 GUID ServiceType; 318 DWORD dwProtocols; 319 LPINT lpiProtocols; 320 } NETRESOURCE2A,*PNETRESOURCE2A,*LPNETRESOURCE2A; 321 322 typedef struct _NETRESOURCE2W { 323 DWORD dwScope; 324 DWORD dwType; 325 DWORD dwUsage; 326 DWORD dwDisplayType; 327 LPWSTR lpLocalName; 328 LPWSTR lpRemoteName; 329 LPWSTR lpComment; 330 NS_INFO ns_info; 331 GUID ServiceType; 332 DWORD dwProtocols; 333 LPINT lpiProtocols; 334 } NETRESOURCE2W,*PNETRESOURCE2W,*LPNETRESOURCE2W; 335 336 __MINGW_TYPEDEF_AW(NETRESOURCE2) 337 __MINGW_TYPEDEF_AW(PNETRESOURCE2) 338 __MINGW_TYPEDEF_AW(LPNETRESOURCE2) 339 340 typedef DWORD (*LPFN_NSPAPI)(VOID); 341 342 typedef VOID (*LPSERVICE_CALLBACK_PROC)(LPARAM lParam,HANDLE hAsyncTaskHandle); 343 typedef struct _SERVICE_ASYNC_INFO { 344 LPSERVICE_CALLBACK_PROC lpServiceCallbackProc; 345 LPARAM lParam; 346 HANDLE hAsyncTaskHandle; 347 } SERVICE_ASYNC_INFO,*PSERVICE_ASYNC_INFO,*LPSERVICE_ASYNC_INFO; 348 349 #define EnumProtocols __MINGW_NAME_AW(EnumProtocols) 350 #define GetAddressByName __MINGW_NAME_AW(GetAddressByName) 351 #define GetTypeByName __MINGW_NAME_AW(GetTypeByName) 352 #define GetNameByType __MINGW_NAME_AW(GetNameByType) 353 #define SetService __MINGW_NAME_AW(SetService) 354 #define GetService __MINGW_NAME_AW(GetService) 355 356 INT WINAPI EnumProtocolsA(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength); 357 INT WINAPI EnumProtocolsW(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength); 358 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); 359 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); 360 INT WINAPI GetTypeByNameA(LPSTR lpServiceName,LPGUID lpServiceType); 361 INT WINAPI GetTypeByNameW(LPWSTR lpServiceName,LPGUID lpServiceType); 362 INT WINAPI GetNameByTypeA(LPGUID lpServiceType,LPSTR lpServiceName,DWORD dwNameLength); 363 INT WINAPI GetNameByTypeW(LPGUID lpServiceType,LPWSTR lpServiceName,DWORD dwNameLength); 364 INT WINAPI SetServiceA(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOA lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags); 365 INT WINAPI SetServiceW(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOW lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags); 366 INT WINAPI GetServiceA(DWORD dwNameSpace,LPGUID lpGuid,LPSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo); 367 INT WINAPI GetServiceW(DWORD dwNameSpace,LPGUID lpGuid,LPWSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo); 368 369 #ifdef __cplusplus 370 } 371 #endif 372 #endif 373