home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / C_C++ / BorlandCompiler / freecommandLinetools.exe / Include / nspapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-27  |  18.6 KB  |  693 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1998  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     nspapi.h
  8.  
  9. Abstract:
  10.  
  11.     Name Space Provider API prototypes and manifests. See the
  12.     "Windows NT NameSpace Provider Specification" document for
  13.     details.
  14.  
  15.  
  16. Environment:
  17.  
  18.     User Mode -Win32
  19.  
  20. Notes:
  21.  
  22.     You must include "basetyps.h" first. Some types should
  23.     use definitions from base files rather than redefine here.
  24.     Unfortunately, so such base file exists.
  25.  
  26. --*/
  27.  
  28. #ifndef _NSPAPI_INCLUDED
  29. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  30. #define _NSPAPI_INCLUDED
  31.  
  32. #ifdef __cplusplus
  33. extern "C" {
  34. #endif /* __cplusplus */
  35.  
  36. #ifndef _tagBLOB_DEFINED
  37. #define _tagBLOB_DEFINED
  38. #define _BLOB_DEFINED
  39. #define _LPBLOB_DEFINED
  40. typedef struct _BLOB {
  41.     ULONG cbSize ;
  42. #ifdef MIDL_PASS
  43.     [size_is(cbSize)] BYTE *pBlobData;
  44. #else  // MIDL_PASS
  45.     BYTE *pBlobData ;
  46. #endif // MIDL_PASS
  47. } BLOB, *LPBLOB ;
  48. #endif
  49.  
  50. #ifndef GUID_DEFINED
  51. #define GUID_DEFINED
  52. typedef struct _GUID
  53. {
  54.     unsigned long  Data1;
  55.     unsigned short Data2;
  56.     unsigned short Data3;
  57.     unsigned char  Data4[8];
  58. } GUID;
  59. #endif /* GUID_DEFINED */
  60.  
  61. #ifndef __LPGUID_DEFINED__
  62. #define __LPGUID_DEFINED__
  63. typedef GUID *LPGUID;
  64. #endif
  65.  
  66.  
  67. //
  68. // Service categories
  69. //
  70. #define SERVICE_RESOURCE            (0x00000001)
  71. #define SERVICE_SERVICE             (0x00000002)
  72. #define SERVICE_LOCAL               (0x00000004)
  73.  
  74. //
  75. // Operation used when calling SetService()
  76. //
  77. #define SERVICE_REGISTER            (0x00000001)
  78. #define SERVICE_DEREGISTER          (0x00000002)
  79. #define SERVICE_FLUSH               (0x00000003)
  80. #define SERVICE_ADD_TYPE            (0x00000004)
  81. #define SERVICE_DELETE_TYPE         (0x00000005)
  82.  
  83. //
  84. // Flags that affect the operations above
  85. //
  86. #define SERVICE_FLAG_DEFER          (0x00000001)
  87. #define SERVICE_FLAG_HARD           (0x00000002)
  88.  
  89. //
  90. // Used as input to GetService() for setting the dwProps parameter
  91. //
  92. #define PROP_COMMENT                (0x00000001)
  93. #define PROP_LOCALE                 (0x00000002)
  94. #define PROP_DISPLAY_HINT           (0x00000004)
  95. #define PROP_VERSION                (0x00000008)
  96. #define PROP_START_TIME             (0x00000010)
  97. #define PROP_MACHINE                (0x00000020)
  98. #define PROP_ADDRESSES              (0x00000100)
  99. #define PROP_SD                     (0x00000200)
  100. #define PROP_ALL                    (0x80000000)
  101.  
  102. //
  103. // Flags that describe attributes of Service Addresses
  104. //
  105.  
  106. #define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001)
  107. #define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002)
  108. #define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004)
  109.  
  110. //
  111. // Name Spaces
  112. //
  113.  
  114. #define NS_DEFAULT                  (0)
  115.  
  116. #define NS_SAP                      (1)
  117. #define NS_NDS                      (2)
  118. #define NS_PEER_BROWSE              (3)
  119.  
  120. #define NS_TCPIP_LOCAL              (10)
  121. #define NS_TCPIP_HOSTS              (11)
  122. #define NS_DNS                      (12)
  123. #define NS_NETBT                    (13)
  124. #define NS_WINS                     (14)
  125.  
  126. #define NS_NBP                      (20)
  127.  
  128. #define NS_MS                       (30)
  129. #define NS_STDA                     (31)
  130. #define NS_NTDS                     (32)
  131.  
  132. #define NS_X500                     (40)
  133. #define NS_NIS                      (41)
  134.  
  135. #define NS_VNS                      (50)
  136.  
  137. //
  138. // Name space attributes.
  139. //
  140. #define NSTYPE_HIERARCHICAL         (0x00000001)
  141. #define NSTYPE_DYNAMIC              (0x00000002)
  142. #define NSTYPE_ENUMERABLE           (0x00000004)
  143. #define NSTYPE_WORKGROUP            (0x00000008)
  144.  
  145. //
  146. // Transport attributes.
  147. //
  148. #define XP_CONNECTIONLESS           (0x00000001)
  149. #define XP_GUARANTEED_DELIVERY      (0x00000002)
  150. #define XP_GUARANTEED_ORDER         (0x00000004)
  151. #define XP_MESSAGE_ORIENTED         (0x00000008)
  152. #define XP_PSEUDO_STREAM            (0x00000010)
  153. #define XP_GRACEFUL_CLOSE           (0x00000020)
  154. #define XP_EXPEDITED_DATA           (0x00000040)
  155. #define XP_CONNECT_DATA             (0x00000080)
  156. #define XP_DISCONNECT_DATA          (0x00000100)
  157. #define XP_SUPPORTS_BROADCAST       (0x00000200)
  158. #define XP_SUPPORTS_MULTICAST       (0x00000400)
  159. #define XP_BANDWIDTH_ALLOCATION     (0x00000800)
  160. #define XP_FRAGMENTATION            (0x00001000)
  161. #define XP_ENCRYPTS                 (0x00002000)
  162.  
  163. //
  164. // Resolution flags for GetAddressByName().
  165. //
  166. #define RES_SOFT_SEARCH             (0x00000001)
  167. #define RES_FIND_MULTIPLE           (0x00000002)
  168. #define RES_SERVICE                 (0x00000004)
  169.  
  170. //
  171. // Well known value names for Service Types
  172. //
  173.  
  174. #define SERVICE_TYPE_VALUE_SAPIDA        "SapId"
  175. #define SERVICE_TYPE_VALUE_SAPIDW       L"SapId"
  176.  
  177. #define SERVICE_TYPE_VALUE_CONNA         "ConnectionOriented"
  178. #define SERVICE_TYPE_VALUE_CONNW        L"ConnectionOriented"
  179.  
  180. #define SERVICE_TYPE_VALUE_TCPPORTA      "TcpPort"
  181. #define SERVICE_TYPE_VALUE_TCPPORTW     L"TcpPort"
  182.  
  183. #define SERVICE_TYPE_VALUE_UDPPORTA      "UdpPort"
  184. #define SERVICE_TYPE_VALUE_UDPPORTW     L"UdpPort"
  185.  
  186. #ifdef UNICODE
  187.  
  188. #define SERVICE_TYPE_VALUE_SAPID        SERVICE_TYPE_VALUE_SAPIDW
  189. #define SERVICE_TYPE_VALUE_CONN         SERVICE_TYPE_VALUE_CONNW
  190. #define SERVICE_TYPE_VALUE_TCPPORT      SERVICE_TYPE_VALUE_TCPPORTW
  191. #define SERVICE_TYPE_VALUE_UDPPORT      SERVICE_TYPE_VALUE_UDPPORTW
  192.  
  193. #else // not UNICODE
  194.  
  195. #define SERVICE_TYPE_VALUE_SAPID        SERVICE_TYPE_VALUE_SAPIDA
  196. #define SERVICE_TYPE_VALUE_CONN         SERVICE_TYPE_VALUE_CONNA
  197. #define SERVICE_TYPE_VALUE_TCPPORT      SERVICE_TYPE_VALUE_TCPPORTA
  198. #define SERVICE_TYPE_VALUE_UDPPORT      SERVICE_TYPE_VALUE_UDPPORTA
  199.  
  200. #endif
  201.  
  202.  
  203. //
  204. // status flags returned by SetService
  205. //
  206. #define SET_SERVICE_PARTIAL_SUCCESS  (0x00000001)
  207.  
  208. //
  209. // Name Space Information
  210. //
  211. typedef struct _NS_INFOA {
  212.     DWORD dwNameSpace ;
  213.     DWORD dwNameSpaceFlags ;
  214.     LPSTR   lpNameSpace ;
  215. } NS_INFOA,  * PNS_INFOA, FAR * LPNS_INFOA;
  216. //
  217. // Name Space Information
  218. //
  219. typedef struct _NS_INFOW {
  220.     DWORD dwNameSpace ;
  221.     DWORD dwNameSpaceFlags ;
  222.     LPWSTR  lpNameSpace ;
  223. } NS_INFOW,  * PNS_INFOW, FAR * LPNS_INFOW;
  224. #ifdef UNICODE
  225. typedef NS_INFOW NS_INFO;
  226. typedef PNS_INFOW PNS_INFO;
  227. typedef LPNS_INFOW LPNS_INFO;
  228. #else
  229. typedef NS_INFOA NS_INFO;
  230. typedef PNS_INFOA PNS_INFO;
  231. typedef LPNS_INFOA LPNS_INFO;
  232. #endif // UNICODE
  233.  
  234. //
  235. // Service Type Values. The structures are used to define named Service
  236. // Type specific values. This structure is self relative and has no pointers.
  237. //
  238. typedef struct _SERVICE_TYPE_VALUE {
  239.     DWORD dwNameSpace ;
  240.     DWORD dwValueType ;
  241.     DWORD dwValueSize ;
  242.     DWORD dwValueNameOffset ;
  243.     DWORD dwValueOffset ;
  244. } SERVICE_TYPE_VALUE, *PSERVICE_TYPE_VALUE, FAR *LPSERVICE_TYPE_VALUE ;
  245.  
  246. //
  247. // An absolute version of above. This structure does contain pointers.
  248. //
  249. typedef struct _SERVICE_TYPE_VALUE_ABSA  {
  250.     DWORD dwNameSpace ;
  251.     DWORD dwValueType ;
  252.     DWORD dwValueSize ;
  253.     LPSTR   lpValueName ;
  254.     PVOID lpValue ;
  255. } SERVICE_TYPE_VALUE_ABSA,
  256.   *PSERVICE_TYPE_VALUE_ABSA,
  257.   FAR *LPSERVICE_TYPE_VALUE_ABSA;
  258. //
  259. // An absolute version of above. This structure does contain pointers.
  260. //
  261. typedef struct _SERVICE_TYPE_VALUE_ABSW  {
  262.     DWORD dwNameSpace ;
  263.     DWORD dwValueType ;
  264.     DWORD dwValueSize ;
  265.     LPWSTR  lpValueName ;
  266.     PVOID lpValue ;
  267. } SERVICE_TYPE_VALUE_ABSW,
  268.   *PSERVICE_TYPE_VALUE_ABSW,
  269.   FAR *LPSERVICE_TYPE_VALUE_ABSW;
  270. #ifdef UNICODE
  271. typedef SERVICE_TYPE_VALUE_ABSW SERVICE_TYPE_VALUE_ABS;
  272. typedef PSERVICE_TYPE_VALUE_ABSW PSERVICE_TYPE_VALUE_ABS;
  273. typedef LPSERVICE_TYPE_VALUE_ABSW LPSERVICE_TYPE_VALUE_ABS;
  274. #else
  275. typedef SERVICE_TYPE_VALUE_ABSA SERVICE_TYPE_VALUE_ABS;
  276. typedef PSERVICE_TYPE_VALUE_ABSA PSERVICE_TYPE_VALUE_ABS;
  277. typedef LPSERVICE_TYPE_VALUE_ABSA LPSERVICE_TYPE_VALUE_ABS;
  278. #endif // UNICODE
  279.  
  280. //
  281. // Service Type Information. Contains the name of the Service Type and
  282. // and an array of SERVICE_NS_TYPE_VALUE structures. This structure is self
  283. // relative and has no pointers in it.
  284. //
  285. typedef struct _SERVICE_TYPE_INFO {
  286.     DWORD dwTypeNameOffset ;
  287.     DWORD dwValueCount ;
  288.     SERVICE_TYPE_VALUE Values[1] ;
  289. } SERVICE_TYPE_INFO, *PSERVICE_TYPE_INFO, FAR *LPSERVICE_TYPE_INFO ;
  290.  
  291. typedef struct _SERVICE_TYPE_INFO_ABSA {
  292.     LPSTR   lpTypeName ;
  293.     DWORD dwValueCount ;
  294.     SERVICE_TYPE_VALUE_ABSA Values[1] ;
  295. } SERVICE_TYPE_INFO_ABSA,
  296.   *PSERVICE_TYPE_INFO_ABSA,
  297.   FAR *LPSERVICE_TYPE_INFO_ABSA ;
  298. typedef struct _SERVICE_TYPE_INFO_ABSW {
  299.     LPWSTR  lpTypeName ;
  300.     DWORD dwValueCount ;
  301.     SERVICE_TYPE_VALUE_ABSW Values[1] ;
  302. } SERVICE_TYPE_INFO_ABSW,
  303.   *PSERVICE_TYPE_INFO_ABSW,
  304.   FAR *LPSERVICE_TYPE_INFO_ABSW ;
  305. #ifdef UNICODE
  306. typedef SERVICE_TYPE_INFO_ABSW SERVICE_TYPE_INFO_ABS;
  307. typedef PSERVICE_TYPE_INFO_ABSW PSERVICE_TYPE_INFO_ABS;
  308. typedef LPSERVICE_TYPE_INFO_ABSW LPSERVICE_TYPE_INFO_ABS;
  309. #else
  310. typedef SERVICE_TYPE_INFO_ABSA SERVICE_TYPE_INFO_ABS;
  311. typedef PSERVICE_TYPE_INFO_ABSA PSERVICE_TYPE_INFO_ABS;
  312. typedef LPSERVICE_TYPE_INFO_ABSA LPSERVICE_TYPE_INFO_ABS;
  313. #endif // UNICODE
  314.  
  315.  
  316. //
  317. // A Single Address definition.
  318. //
  319. typedef struct _SERVICE_ADDRESS {
  320.     DWORD   dwAddressType ;
  321.     DWORD   dwAddressFlags ;
  322.     DWORD   dwAddressLength ;
  323.     DWORD   dwPrincipalLength ;
  324. #ifdef MIDL_PASS
  325.     [size_is(dwAddressLength)] BYTE *lpAddress;
  326. #else  // MIDL_PASS
  327.     BYTE   *lpAddress ;
  328. #endif // MIDL_PASS
  329. #ifdef MIDL_PASS
  330.     [size_is(dwPrincipalLength)] BYTE *lpPrincipal;
  331. #else  // MIDL_PASS
  332.     BYTE   *lpPrincipal ;
  333. #endif // MIDL_PASS
  334. } SERVICE_ADDRESS, *PSERVICE_ADDRESS, *LPSERVICE_ADDRESS;
  335.  
  336. //
  337. // Addresses used by the service. Contains array of SERVICE_ADDRESS.
  338. //
  339. typedef struct _SERVICE_ADDRESSES {
  340.     DWORD           dwAddressCount ;
  341. #ifdef MIDL_PASS
  342.     [size_is(dwAddressCount)] SERVICE_ADDRESS Addressses[*];
  343. #else  // MIDL_PASS
  344.     SERVICE_ADDRESS Addresses[1] ;
  345. #endif // MIDL_PASS
  346. } SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
  347.  
  348.  
  349. //
  350. // Service Information.
  351. //
  352. typedef struct _SERVICE_INFOA {
  353.     LPGUID lpServiceType ;
  354.     LPSTR   lpServiceName ;
  355.     LPSTR   lpComment ;
  356.     LPSTR   lpLocale ;
  357.     DWORD dwDisplayHint ;
  358.     DWORD dwVersion ;
  359.     DWORD dwTime ;
  360.     LPSTR   lpMachineName ;
  361.     LPSERVICE_ADDRESSES lpServiceAddress ;
  362.     BLOB ServiceSpecificInfo ;
  363. } SERVICE_INFOA, *PSERVICE_INFOA, FAR * LPSERVICE_INFOA ;
  364. //
  365. // Service Information.
  366. //
  367. typedef struct _SERVICE_INFOW {
  368.     LPGUID lpServiceType ;
  369.     LPWSTR  lpServiceName ;
  370.     LPWSTR  lpComment ;
  371.     LPWSTR  lpLocale ;
  372.     DWORD dwDisplayHint ;
  373.     DWORD dwVersion ;
  374.     DWORD dwTime ;
  375.     LPWSTR  lpMachineName ;
  376.     LPSERVICE_ADDRESSES lpServiceAddress ;
  377.     BLOB ServiceSpecificInfo ;
  378. } SERVICE_INFOW, *PSERVICE_INFOW, FAR * LPSERVICE_INFOW ;
  379. #ifdef UNICODE
  380. typedef SERVICE_INFOW SERVICE_INFO;
  381. typedef PSERVICE_INFOW PSERVICE_INFO;
  382. typedef LPSERVICE_INFOW LPSERVICE_INFO;
  383. #else
  384. typedef SERVICE_INFOA SERVICE_INFO;
  385. typedef PSERVICE_INFOA PSERVICE_INFO;
  386. typedef LPSERVICE_INFOA LPSERVICE_INFO;
  387. #endif // UNICODE
  388.  
  389.  
  390. //
  391. // Name Space & Service Information
  392. //
  393. typedef struct _NS_SERVICE_INFOA {
  394.     DWORD dwNameSpace ;
  395.     SERVICE_INFOA ServiceInfo ;
  396. } NS_SERVICE_INFOA, *PNS_SERVICE_INFOA, FAR * LPNS_SERVICE_INFOA ;
  397. //
  398. // Name Space & Service Information
  399. //
  400. typedef struct _NS_SERVICE_INFOW {
  401.     DWORD dwNameSpace ;
  402.     SERVICE_INFOW ServiceInfo ;
  403. } NS_SERVICE_INFOW, *PNS_SERVICE_INFOW, FAR * LPNS_SERVICE_INFOW ;
  404. #ifdef UNICODE
  405. typedef NS_SERVICE_INFOW NS_SERVICE_INFO;
  406. typedef PNS_SERVICE_INFOW PNS_SERVICE_INFO;
  407. typedef LPNS_SERVICE_INFOW LPNS_SERVICE_INFO;
  408. #else
  409. typedef NS_SERVICE_INFOA NS_SERVICE_INFO;
  410. typedef PNS_SERVICE_INFOA PNS_SERVICE_INFO;
  411. typedef LPNS_SERVICE_INFOA LPNS_SERVICE_INFO;
  412. #endif // UNICODE
  413.  
  414. #ifndef __CSADDR_DEFINED__
  415. #define __CSADDR_DEFINED__
  416.  
  417. //
  418. // SockAddr Information
  419. //
  420. typedef struct _SOCKET_ADDRESS {
  421.     LPSOCKADDR lpSockaddr ;
  422.     INT iSockaddrLength ;
  423. } SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ;
  424.  
  425. //
  426. // CSAddr Information
  427. //
  428. typedef struct _CSADDR_INFO {
  429.     SOCKET_ADDRESS LocalAddr ;
  430.     SOCKET_ADDRESS RemoteAddr ;
  431.     INT iSocketType ;
  432.     INT iProtocol ;
  433. } CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ;
  434.  
  435. #endif
  436.  
  437. //
  438. // Protocol Information
  439. //
  440. typedef struct _PROTOCOL_INFOA {
  441.     DWORD dwServiceFlags ;
  442.     INT iAddressFamily ;
  443.     INT iMaxSockAddr ;
  444.     INT iMinSockAddr ;
  445.     INT iSocketType ;
  446.     INT iProtocol ;
  447.     DWORD dwMessageSize ;
  448.     LPSTR   lpProtocol ;
  449. } PROTOCOL_INFOA, *PPROTOCOL_INFOA, FAR * LPPROTOCOL_INFOA ;
  450. //
  451. // Protocol Information
  452. //
  453. typedef struct _PROTOCOL_INFOW {
  454.     DWORD dwServiceFlags ;
  455.     INT iAddressFamily ;
  456.     INT iMaxSockAddr ;
  457.     INT iMinSockAddr ;
  458.     INT iSocketType ;
  459.     INT iProtocol ;
  460.     DWORD dwMessageSize ;
  461.     LPWSTR  lpProtocol ;
  462. } PROTOCOL_INFOW, *PPROTOCOL_INFOW, FAR * LPPROTOCOL_INFOW ;
  463. #ifdef UNICODE
  464. typedef PROTOCOL_INFOW PROTOCOL_INFO;
  465. typedef PPROTOCOL_INFOW PPROTOCOL_INFO;
  466. typedef LPPROTOCOL_INFOW LPPROTOCOL_INFO;
  467. #else
  468. typedef PROTOCOL_INFOA PROTOCOL_INFO;
  469. typedef PPROTOCOL_INFOA PPROTOCOL_INFO;
  470. typedef LPPROTOCOL_INFOA LPPROTOCOL_INFO;
  471. #endif // UNICODE
  472.  
  473. //
  474. // NETRESOURCE2 Structure
  475. //
  476. typedef struct _NETRESOURCE2A {
  477.     DWORD dwScope ;
  478.     DWORD dwType ;
  479.     DWORD dwUsage ;
  480.     DWORD dwDisplayType ;
  481.     LPSTR   lpLocalName ;
  482.     LPSTR   lpRemoteName ;
  483.     LPSTR   lpComment ;
  484.     NS_INFO ns_info ;
  485.     GUID ServiceType ;
  486.     DWORD dwProtocols ;
  487.     LPINT lpiProtocols ;
  488. } NETRESOURCE2A, *PNETRESOURCE2A, FAR * LPNETRESOURCE2A ;
  489. //
  490. // NETRESOURCE2 Structure
  491. //
  492. typedef struct _NETRESOURCE2W {
  493.     DWORD dwScope ;
  494.     DWORD dwType ;
  495.     DWORD dwUsage ;
  496.     DWORD dwDisplayType ;
  497.     LPWSTR  lpLocalName ;
  498.     LPWSTR  lpRemoteName ;
  499.     LPWSTR  lpComment ;
  500.     NS_INFO ns_info ;
  501.     GUID ServiceType ;
  502.     DWORD dwProtocols ;
  503.     LPINT lpiProtocols ;
  504. } NETRESOURCE2W, *PNETRESOURCE2W, FAR * LPNETRESOURCE2W ;
  505. #ifdef UNICODE
  506. typedef NETRESOURCE2W NETRESOURCE2;
  507. typedef PNETRESOURCE2W PNETRESOURCE2;
  508. typedef LPNETRESOURCE2W LPNETRESOURCE2;
  509. #else
  510. typedef NETRESOURCE2A NETRESOURCE2;
  511. typedef PNETRESOURCE2A PNETRESOURCE2;
  512. typedef LPNETRESOURCE2A LPNETRESOURCE2;
  513. #endif // UNICODE
  514.  
  515. typedef  DWORD (* LPFN_NSPAPI) (VOID ) ;
  516.  
  517. //
  518. // Structures for using the service routines asynchronously.
  519. //
  520. typedef
  521. VOID
  522. (*LPSERVICE_CALLBACK_PROC) (
  523.     IN LPARAM lParam,
  524.     IN HANDLE hAsyncTaskHandle
  525.     );
  526.  
  527. typedef struct _SERVICE_ASYNC_INFO {
  528.     LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
  529.     LPARAM lParam;
  530.     HANDLE hAsyncTaskHandle;
  531. } SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, FAR * LPSERVICE_ASYNC_INFO;
  532.  
  533. //
  534. // Public NSP API prototypes.
  535. //
  536. INT
  537. APIENTRY
  538. EnumProtocolsA (
  539.     IN     LPINT           lpiProtocols,
  540.     IN OUT LPVOID          lpProtocolBuffer,
  541.     IN OUT LPDWORD         lpdwBufferLength
  542.     );
  543. //
  544. // Public NSP API prototypes.
  545. //
  546. INT
  547. APIENTRY
  548. EnumProtocolsW (
  549.     IN     LPINT           lpiProtocols,
  550.     IN OUT LPVOID          lpProtocolBuffer,
  551.     IN OUT LPDWORD         lpdwBufferLength
  552.     );
  553. #ifdef UNICODE
  554. #define EnumProtocols  EnumProtocolsW
  555. #else
  556. #define EnumProtocols  EnumProtocolsA
  557. #endif // !UNICODE
  558.  
  559. INT
  560. APIENTRY
  561. GetAddressByNameA (
  562.     IN     DWORD                dwNameSpace,
  563.     IN     LPGUID               lpServiceType,
  564.     IN     LPSTR              lpServiceName OPTIONAL,
  565.     IN     LPINT                lpiProtocols OPTIONAL,
  566.     IN     DWORD                dwResolution,
  567.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL,
  568.     IN OUT LPVOID               lpCsaddrBuffer,
  569.     IN OUT LPDWORD              lpdwBufferLength,
  570.     IN OUT LPSTR              lpAliasBuffer OPTIONAL,
  571.     IN OUT LPDWORD              lpdwAliasBufferLength OPTIONAL
  572.     );
  573. INT
  574. APIENTRY
  575. GetAddressByNameW (
  576.     IN     DWORD                dwNameSpace,
  577.     IN     LPGUID               lpServiceType,
  578.     IN     LPWSTR              lpServiceName OPTIONAL,
  579.     IN     LPINT                lpiProtocols OPTIONAL,
  580.     IN     DWORD                dwResolution,
  581.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL,
  582.     IN OUT LPVOID               lpCsaddrBuffer,
  583.     IN OUT LPDWORD              lpdwBufferLength,
  584.     IN OUT LPWSTR              lpAliasBuffer OPTIONAL,
  585.     IN OUT LPDWORD              lpdwAliasBufferLength OPTIONAL
  586.     );
  587. #ifdef UNICODE
  588. #define GetAddressByName  GetAddressByNameW
  589. #else
  590. #define GetAddressByName  GetAddressByNameA
  591. #endif // !UNICODE
  592.  
  593. INT
  594. APIENTRY
  595. GetTypeByNameA (
  596.     IN     LPSTR         lpServiceName,
  597.     IN OUT LPGUID          lpServiceType
  598.     );
  599. INT
  600. APIENTRY
  601. GetTypeByNameW (
  602.     IN     LPWSTR         lpServiceName,
  603.     IN OUT LPGUID          lpServiceType
  604.     );
  605. #ifdef UNICODE
  606. #define GetTypeByName  GetTypeByNameW
  607. #else
  608. #define GetTypeByName  GetTypeByNameA
  609. #endif // !UNICODE
  610.  
  611. INT
  612. APIENTRY
  613. GetNameByTypeA (
  614.     IN     LPGUID          lpServiceType,
  615.     IN OUT LPSTR         lpServiceName,
  616.     IN     DWORD           dwNameLength
  617.     );
  618. INT
  619. APIENTRY
  620. GetNameByTypeW (
  621.     IN     LPGUID          lpServiceType,
  622.     IN OUT LPWSTR         lpServiceName,
  623.     IN     DWORD           dwNameLength
  624.     );
  625. #ifdef UNICODE
  626. #define GetNameByType  GetNameByTypeW
  627. #else
  628. #define GetNameByType  GetNameByTypeA
  629. #endif // !UNICODE
  630.  
  631. INT
  632. APIENTRY
  633. SetServiceA (
  634.     IN     DWORD                dwNameSpace,
  635.     IN     DWORD                dwOperation,
  636.     IN     DWORD                dwFlags,
  637.     IN     LPSERVICE_INFOA      lpServiceInfo,
  638.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
  639.     IN OUT LPDWORD              lpdwStatusFlags
  640.     );
  641. INT
  642. APIENTRY
  643. SetServiceW (
  644.     IN     DWORD                dwNameSpace,
  645.     IN     DWORD                dwOperation,
  646.     IN     DWORD                dwFlags,
  647.     IN     LPSERVICE_INFOW      lpServiceInfo,
  648.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
  649.     IN OUT LPDWORD              lpdwStatusFlags
  650.     );
  651. #ifdef UNICODE
  652. #define SetService  SetServiceW
  653. #else
  654. #define SetService  SetServiceA
  655. #endif // !UNICODE
  656.  
  657. INT
  658. APIENTRY
  659. GetServiceA (
  660.     IN     DWORD                dwNameSpace,
  661.     IN     LPGUID               lpGuid,
  662.     IN     LPSTR              lpServiceName,
  663.     IN     DWORD                dwProperties,
  664.     IN OUT LPVOID               lpBuffer,
  665.     IN OUT LPDWORD              lpdwBufferSize,
  666.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
  667.     );
  668. INT
  669. APIENTRY
  670. GetServiceW (
  671.     IN     DWORD                dwNameSpace,
  672.     IN     LPGUID               lpGuid,
  673.     IN     LPWSTR              lpServiceName,
  674.     IN     DWORD                dwProperties,
  675.     IN OUT LPVOID               lpBuffer,
  676.     IN OUT LPDWORD              lpdwBufferSize,
  677.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
  678.     );
  679. #ifdef UNICODE
  680. #define GetService  GetServiceW
  681. #else
  682. #define GetService  GetServiceA
  683. #endif // !UNICODE
  684.  
  685. #ifdef __cplusplus
  686. }
  687. #endif  /* __cplusplus */
  688.  
  689. #pragma option pop /*P_O_Pop*/
  690. #endif  // _NSPAPI_INCLUDED
  691.  
  692.  
  693.