nspapi.h 11 KB

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