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 12extern "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