home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / msinc.pak / NSPAPI.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  19KB  |  685 lines

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