home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / RTLWIN32.PAK / NSPAPI.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  18.6 KB  |  693 lines

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