diff options
Diffstat (limited to 'public/sdk/inc/nspapi.h')
-rw-r--r-- | public/sdk/inc/nspapi.h | 690 |
1 files changed, 690 insertions, 0 deletions
diff --git a/public/sdk/inc/nspapi.h b/public/sdk/inc/nspapi.h new file mode 100644 index 000000000..05adcf54c --- /dev/null +++ b/public/sdk/inc/nspapi.h @@ -0,0 +1,690 @@ +/*++ + +Copyright (c) 1991-1996 Microsoft Corporation + +Module Name: + + nspapi.h + +Abstract: + + Name Space Provider API prototypes and manifests. See the + "Windows NT NameSpace Provider Specification" document for + details. + + +Environment: + + User Mode -Win32 + +Notes: + + You must include "basetyps.h" first. Some types should + use definitions from base files rather than redefine here. + Unfortunately, so such base file exists. + +--*/ + +#ifndef _NSPAPI_INCLUDED +#define _NSPAPI_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifndef _tagBLOB_DEFINED +#define _tagBLOB_DEFINED +#define _BLOB_DEFINED +#define _LPBLOB_DEFINED +typedef struct _BLOB { + ULONG cbSize ; +#ifdef MIDL_PASS + [size_is(cbSize)] BYTE *pBlobData; +#else // MIDL_PASS + BYTE *pBlobData ; +#endif // MIDL_PASS +} BLOB, *LPBLOB ; +#endif + +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; +#endif /* GUID_DEFINED */ + +#ifndef __LPGUID_DEFINED__ +#define __LPGUID_DEFINED__ +typedef GUID *LPGUID; +#endif + + +// +// Service categories +// +#define SERVICE_RESOURCE (0x00000001) +#define SERVICE_SERVICE (0x00000002) +#define SERVICE_LOCAL (0x00000004) + +// +// Operation used when calling SetService() +// +#define SERVICE_REGISTER (0x00000001) +#define SERVICE_DEREGISTER (0x00000002) +#define SERVICE_FLUSH (0x00000003) +#define SERVICE_ADD_TYPE (0x00000004) +#define SERVICE_DELETE_TYPE (0x00000005) + +// +// Flags that affect the operations above +// +#define SERVICE_FLAG_DEFER (0x00000001) +#define SERVICE_FLAG_HARD (0x00000002) + +// +// Used as input to GetService() for setting the dwProps parameter +// +#define PROP_COMMENT (0x00000001) +#define PROP_LOCALE (0x00000002) +#define PROP_DISPLAY_HINT (0x00000004) +#define PROP_VERSION (0x00000008) +#define PROP_START_TIME (0x00000010) +#define PROP_MACHINE (0x00000020) +#define PROP_ADDRESSES (0x00000100) +#define PROP_SD (0x00000200) +#define PROP_ALL (0x80000000) + +// +// Flags that describe attributes of Service Addresses +// + +#define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001) +#define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002) +#define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004) + +// +// Name Spaces +// + +#define NS_DEFAULT (0) + +#define NS_SAP (1) +#define NS_NDS (2) +#define NS_PEER_BROWSE (3) + +#define NS_TCPIP_LOCAL (10) +#define NS_TCPIP_HOSTS (11) +#define NS_DNS (12) +#define NS_NETBT (13) +#define NS_WINS (14) + +#define NS_NBP (20) + +#define NS_MS (30) +#define NS_STDA (31) +#define NS_CAIRO (32) + +#define NS_X500 (40) +#define NS_NIS (41) + +#define NS_VNS (50) + +// +// Name space attributes. +// +#define NSTYPE_HIERARCHICAL (0x00000001) +#define NSTYPE_DYNAMIC (0x00000002) +#define NSTYPE_ENUMERABLE (0x00000004) +#define NSTYPE_WORKGROUP (0x00000008) + +// +// Transport attributes. +// +#define XP_CONNECTIONLESS (0x00000001) +#define XP_GUARANTEED_DELIVERY (0x00000002) +#define XP_GUARANTEED_ORDER (0x00000004) +#define XP_MESSAGE_ORIENTED (0x00000008) +#define XP_PSEUDO_STREAM (0x00000010) +#define XP_GRACEFUL_CLOSE (0x00000020) +#define XP_EXPEDITED_DATA (0x00000040) +#define XP_CONNECT_DATA (0x00000080) +#define XP_DISCONNECT_DATA (0x00000100) +#define XP_SUPPORTS_BROADCAST (0x00000200) +#define XP_SUPPORTS_MULTICAST (0x00000400) +#define XP_BANDWIDTH_ALLOCATION (0x00000800) +#define XP_FRAGMENTATION (0x00001000) +#define XP_ENCRYPTS (0x00002000) + +// +// Resolution flags for GetAddressByName(). +// +#define RES_SOFT_SEARCH (0x00000001) +#define RES_FIND_MULTIPLE (0x00000002) +#define RES_SERVICE (0x00000004) + +// +// Well known value names for Service Types +// + +#define SERVICE_TYPE_VALUE_SAPIDA "SapId" +#define SERVICE_TYPE_VALUE_SAPIDW L"SapId" + +#define SERVICE_TYPE_VALUE_CONNA "ConnectionOriented" +#define SERVICE_TYPE_VALUE_CONNW L"ConnectionOriented" + +#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort" +#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" + +#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort" +#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" + +#ifdef UNICODE + +#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW +#define SERVICE_TYPE_VALUE_CONN SERVICE_TYPE_VALUE_CONNW +#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW +#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW + +#else // not UNICODE + +#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA +#define SERVICE_TYPE_VALUE_CONN SERVICE_TYPE_VALUE_CONNA +#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA +#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA + +#endif + + +// +// status flags returned by SetService +// +#define SET_SERVICE_PARTIAL_SUCCESS (0x00000001) + +// +// Name Space Information +// +typedef struct _NS_INFOA { + DWORD dwNameSpace ; + DWORD dwNameSpaceFlags ; + LPSTR lpNameSpace ; +} NS_INFOA, * PNS_INFOA, FAR * LPNS_INFOA; +// +// Name Space Information +// +typedef struct _NS_INFOW { + DWORD dwNameSpace ; + DWORD dwNameSpaceFlags ; + LPWSTR lpNameSpace ; +} NS_INFOW, * PNS_INFOW, FAR * LPNS_INFOW; +#ifdef UNICODE +typedef NS_INFOW NS_INFO; +typedef PNS_INFOW PNS_INFO; +typedef LPNS_INFOW LPNS_INFO; +#else +typedef NS_INFOA NS_INFO; +typedef PNS_INFOA PNS_INFO; +typedef LPNS_INFOA LPNS_INFO; +#endif // UNICODE + +// +// Service Type Values. The structures are used to define named Service +// Type specific values. This structure is self relative and has no pointers. +// +typedef struct _SERVICE_TYPE_VALUE { + DWORD dwNameSpace ; + DWORD dwValueType ; + DWORD dwValueSize ; + DWORD dwValueNameOffset ; + DWORD dwValueOffset ; +} SERVICE_TYPE_VALUE, *PSERVICE_TYPE_VALUE, FAR *LPSERVICE_TYPE_VALUE ; + +// +// An absolute version of above. This structure does contain pointers. +// +typedef struct _SERVICE_TYPE_VALUE_ABSA { + DWORD dwNameSpace ; + DWORD dwValueType ; + DWORD dwValueSize ; + LPSTR lpValueName ; + PVOID lpValue ; +} SERVICE_TYPE_VALUE_ABSA, + *PSERVICE_TYPE_VALUE_ABSA, + FAR *LPSERVICE_TYPE_VALUE_ABSA; +// +// An absolute version of above. This structure does contain pointers. +// +typedef struct _SERVICE_TYPE_VALUE_ABSW { + DWORD dwNameSpace ; + DWORD dwValueType ; + DWORD dwValueSize ; + LPWSTR lpValueName ; + PVOID lpValue ; +} SERVICE_TYPE_VALUE_ABSW, + *PSERVICE_TYPE_VALUE_ABSW, + FAR *LPSERVICE_TYPE_VALUE_ABSW; +#ifdef UNICODE +typedef SERVICE_TYPE_VALUE_ABSW SERVICE_TYPE_VALUE_ABS; +typedef PSERVICE_TYPE_VALUE_ABSW PSERVICE_TYPE_VALUE_ABS; +typedef LPSERVICE_TYPE_VALUE_ABSW LPSERVICE_TYPE_VALUE_ABS; +#else +typedef SERVICE_TYPE_VALUE_ABSA SERVICE_TYPE_VALUE_ABS; +typedef PSERVICE_TYPE_VALUE_ABSA PSERVICE_TYPE_VALUE_ABS; +typedef LPSERVICE_TYPE_VALUE_ABSA LPSERVICE_TYPE_VALUE_ABS; +#endif // UNICODE + +// +// Service Type Information. Contains the name of the Service Type and +// and an array of SERVICE_NS_TYPE_VALUE structures. This structure is self +// relative and has no pointers in it. +// +typedef struct _SERVICE_TYPE_INFO { + DWORD dwTypeNameOffset ; + DWORD dwValueCount ; + SERVICE_TYPE_VALUE Values[1] ; +} SERVICE_TYPE_INFO, *PSERVICE_TYPE_INFO, FAR *LPSERVICE_TYPE_INFO ; + +typedef struct _SERVICE_TYPE_INFO_ABSA { + LPSTR lpTypeName ; + DWORD dwValueCount ; + SERVICE_TYPE_VALUE_ABSA Values[1] ; +} SERVICE_TYPE_INFO_ABSA, + *PSERVICE_TYPE_INFO_ABSA, + FAR *LPSERVICE_TYPE_INFO_ABSA ; +typedef struct _SERVICE_TYPE_INFO_ABSW { + LPWSTR lpTypeName ; + DWORD dwValueCount ; + SERVICE_TYPE_VALUE_ABSW Values[1] ; +} SERVICE_TYPE_INFO_ABSW, + *PSERVICE_TYPE_INFO_ABSW, + FAR *LPSERVICE_TYPE_INFO_ABSW ; +#ifdef UNICODE +typedef SERVICE_TYPE_INFO_ABSW SERVICE_TYPE_INFO_ABS; +typedef PSERVICE_TYPE_INFO_ABSW PSERVICE_TYPE_INFO_ABS; +typedef LPSERVICE_TYPE_INFO_ABSW LPSERVICE_TYPE_INFO_ABS; +#else +typedef SERVICE_TYPE_INFO_ABSA SERVICE_TYPE_INFO_ABS; +typedef PSERVICE_TYPE_INFO_ABSA PSERVICE_TYPE_INFO_ABS; +typedef LPSERVICE_TYPE_INFO_ABSA LPSERVICE_TYPE_INFO_ABS; +#endif // UNICODE + + +// +// A Single Address definition. +// +typedef struct _SERVICE_ADDRESS { + DWORD dwAddressType ; + DWORD dwAddressFlags ; + DWORD dwAddressLength ; + DWORD dwPrincipalLength ; +#ifdef MIDL_PASS + [size_is(dwAddressLength)] BYTE *lpAddress; +#else // MIDL_PASS + BYTE *lpAddress ; +#endif // MIDL_PASS +#ifdef MIDL_PASS + [size_is(dwPrincipalLength)] BYTE *lpPrincipal; +#else // MIDL_PASS + BYTE *lpPrincipal ; +#endif // MIDL_PASS +} SERVICE_ADDRESS, *PSERVICE_ADDRESS, *LPSERVICE_ADDRESS; + +// +// Addresses used by the service. Contains array of SERVICE_ADDRESS. +// +typedef struct _SERVICE_ADDRESSES { + DWORD dwAddressCount ; +#ifdef MIDL_PASS + [size_is(dwAddressCount)] SERVICE_ADDRESS Addressses[*]; +#else // MIDL_PASS + SERVICE_ADDRESS Addresses[1] ; +#endif // MIDL_PASS +} SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES; + + +// +// Service Information. +// +typedef struct _SERVICE_INFOA { + LPGUID lpServiceType ; + LPSTR lpServiceName ; + LPSTR lpComment ; + LPSTR lpLocale ; + DWORD dwDisplayHint ; + DWORD dwVersion ; + DWORD dwTime ; + LPSTR lpMachineName ; + LPSERVICE_ADDRESSES lpServiceAddress ; + BLOB ServiceSpecificInfo ; +} SERVICE_INFOA, *PSERVICE_INFOA, FAR * LPSERVICE_INFOA ; +// +// Service Information. +// +typedef struct _SERVICE_INFOW { + LPGUID lpServiceType ; + LPWSTR lpServiceName ; + LPWSTR lpComment ; + LPWSTR lpLocale ; + DWORD dwDisplayHint ; + DWORD dwVersion ; + DWORD dwTime ; + LPWSTR lpMachineName ; + LPSERVICE_ADDRESSES lpServiceAddress ; + BLOB ServiceSpecificInfo ; +} SERVICE_INFOW, *PSERVICE_INFOW, FAR * LPSERVICE_INFOW ; +#ifdef UNICODE +typedef SERVICE_INFOW SERVICE_INFO; +typedef PSERVICE_INFOW PSERVICE_INFO; +typedef LPSERVICE_INFOW LPSERVICE_INFO; +#else +typedef SERVICE_INFOA SERVICE_INFO; +typedef PSERVICE_INFOA PSERVICE_INFO; +typedef LPSERVICE_INFOA LPSERVICE_INFO; +#endif // UNICODE + + +// +// Name Space & Service Information +// +typedef struct _NS_SERVICE_INFOA { + DWORD dwNameSpace ; + SERVICE_INFOA ServiceInfo ; +} NS_SERVICE_INFOA, *PNS_SERVICE_INFOA, FAR * LPNS_SERVICE_INFOA ; +// +// Name Space & Service Information +// +typedef struct _NS_SERVICE_INFOW { + DWORD dwNameSpace ; + SERVICE_INFOW ServiceInfo ; +} NS_SERVICE_INFOW, *PNS_SERVICE_INFOW, FAR * LPNS_SERVICE_INFOW ; +#ifdef UNICODE +typedef NS_SERVICE_INFOW NS_SERVICE_INFO; +typedef PNS_SERVICE_INFOW PNS_SERVICE_INFO; +typedef LPNS_SERVICE_INFOW LPNS_SERVICE_INFO; +#else +typedef NS_SERVICE_INFOA NS_SERVICE_INFO; +typedef PNS_SERVICE_INFOA PNS_SERVICE_INFO; +typedef LPNS_SERVICE_INFOA LPNS_SERVICE_INFO; +#endif // UNICODE + +#ifndef __CSADDR_DEFINED__ +#define __CSADDR_DEFINED__ + +// +// SockAddr Information +// +typedef struct _SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr ; + INT iSockaddrLength ; +} SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ; + +// +// CSAddr Information +// +typedef struct _CSADDR_INFO { + SOCKET_ADDRESS LocalAddr ; + SOCKET_ADDRESS RemoteAddr ; + INT iSocketType ; + INT iProtocol ; +} CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ; + +#endif + +// +// Protocol Information +// +typedef struct _PROTOCOL_INFOA { + DWORD dwServiceFlags ; + INT iAddressFamily ; + INT iMaxSockAddr ; + INT iMinSockAddr ; + INT iSocketType ; + INT iProtocol ; + DWORD dwMessageSize ; + LPSTR lpProtocol ; +} PROTOCOL_INFOA, *PPROTOCOL_INFOA, FAR * LPPROTOCOL_INFOA ; +// +// Protocol Information +// +typedef struct _PROTOCOL_INFOW { + DWORD dwServiceFlags ; + INT iAddressFamily ; + INT iMaxSockAddr ; + INT iMinSockAddr ; + INT iSocketType ; + INT iProtocol ; + DWORD dwMessageSize ; + LPWSTR lpProtocol ; +} PROTOCOL_INFOW, *PPROTOCOL_INFOW, FAR * LPPROTOCOL_INFOW ; +#ifdef UNICODE +typedef PROTOCOL_INFOW PROTOCOL_INFO; +typedef PPROTOCOL_INFOW PPROTOCOL_INFO; +typedef LPPROTOCOL_INFOW LPPROTOCOL_INFO; +#else +typedef PROTOCOL_INFOA PROTOCOL_INFO; +typedef PPROTOCOL_INFOA PPROTOCOL_INFO; +typedef LPPROTOCOL_INFOA LPPROTOCOL_INFO; +#endif // UNICODE + +// +// NETRESOURCE2 Structure +// +typedef struct _NETRESOURCE2A { + DWORD dwScope ; + DWORD dwType ; + DWORD dwUsage ; + DWORD dwDisplayType ; + LPSTR lpLocalName ; + LPSTR lpRemoteName ; + LPSTR lpComment ; + NS_INFO ns_info ; + GUID ServiceType ; + DWORD dwProtocols ; + LPINT lpiProtocols ; +} NETRESOURCE2A, *PNETRESOURCE2A, FAR * LPNETRESOURCE2A ; +// +// NETRESOURCE2 Structure +// +typedef struct _NETRESOURCE2W { + DWORD dwScope ; + DWORD dwType ; + DWORD dwUsage ; + DWORD dwDisplayType ; + LPWSTR lpLocalName ; + LPWSTR lpRemoteName ; + LPWSTR lpComment ; + NS_INFO ns_info ; + GUID ServiceType ; + DWORD dwProtocols ; + LPINT lpiProtocols ; +} NETRESOURCE2W, *PNETRESOURCE2W, FAR * LPNETRESOURCE2W ; +#ifdef UNICODE +typedef NETRESOURCE2W NETRESOURCE2; +typedef PNETRESOURCE2W PNETRESOURCE2; +typedef LPNETRESOURCE2W LPNETRESOURCE2; +#else +typedef NETRESOURCE2A NETRESOURCE2; +typedef PNETRESOURCE2A PNETRESOURCE2; +typedef LPNETRESOURCE2A LPNETRESOURCE2; +#endif // UNICODE + +typedef DWORD (* LPFN_NSPAPI) (VOID ) ; + +// +// Structures for using the service routines asynchronously. +// +typedef +VOID +(*LPSERVICE_CALLBACK_PROC) ( + IN LPARAM lParam, + IN HANDLE hAsyncTaskHandle + ); + +typedef struct _SERVICE_ASYNC_INFO { + LPSERVICE_CALLBACK_PROC lpServiceCallbackProc; + LPARAM lParam; + HANDLE hAsyncTaskHandle; +} SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, FAR * LPSERVICE_ASYNC_INFO; + +// +// Public NSP API prototypes. +// +INT +APIENTRY +EnumProtocolsA ( + IN LPINT lpiProtocols, + IN OUT LPVOID lpProtocolBuffer, + IN OUT LPDWORD lpdwBufferLength + ); +// +// Public NSP API prototypes. +// +INT +APIENTRY +EnumProtocolsW ( + IN LPINT lpiProtocols, + IN OUT LPVOID lpProtocolBuffer, + IN OUT LPDWORD lpdwBufferLength + ); +#ifdef UNICODE +#define EnumProtocols EnumProtocolsW +#else +#define EnumProtocols EnumProtocolsA +#endif // !UNICODE + +INT +APIENTRY +GetAddressByNameA ( + IN DWORD dwNameSpace, + IN LPGUID lpServiceType, + IN LPSTR lpServiceName OPTIONAL, + IN LPINT lpiProtocols OPTIONAL, + IN DWORD dwResolution, + IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL, + IN OUT LPVOID lpCsaddrBuffer, + IN OUT LPDWORD lpdwBufferLength, + IN OUT LPSTR lpAliasBuffer OPTIONAL, + IN OUT LPDWORD lpdwAliasBufferLength OPTIONAL + ); +INT +APIENTRY +GetAddressByNameW ( + IN DWORD dwNameSpace, + IN LPGUID lpServiceType, + IN LPWSTR lpServiceName OPTIONAL, + IN LPINT lpiProtocols OPTIONAL, + IN DWORD dwResolution, + IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL, + IN OUT LPVOID lpCsaddrBuffer, + IN OUT LPDWORD lpdwBufferLength, + IN OUT LPWSTR lpAliasBuffer OPTIONAL, + IN OUT LPDWORD lpdwAliasBufferLength OPTIONAL + ); +#ifdef UNICODE +#define GetAddressByName GetAddressByNameW +#else +#define GetAddressByName GetAddressByNameA +#endif // !UNICODE + +INT +APIENTRY +GetTypeByNameA ( + IN LPSTR lpServiceName, + IN OUT LPGUID lpServiceType + ); +INT +APIENTRY +GetTypeByNameW ( + IN LPWSTR lpServiceName, + IN OUT LPGUID lpServiceType + ); +#ifdef UNICODE +#define GetTypeByName GetTypeByNameW +#else +#define GetTypeByName GetTypeByNameA +#endif // !UNICODE + +INT +APIENTRY +GetNameByTypeA ( + IN LPGUID lpServiceType, + IN OUT LPSTR lpServiceName, + IN DWORD dwNameLength + ); +INT +APIENTRY +GetNameByTypeW ( + IN LPGUID lpServiceType, + IN OUT LPWSTR lpServiceName, + IN DWORD dwNameLength + ); +#ifdef UNICODE +#define GetNameByType GetNameByTypeW +#else +#define GetNameByType GetNameByTypeA +#endif // !UNICODE + +INT +APIENTRY +SetServiceA ( + IN DWORD dwNameSpace, + IN DWORD dwOperation, + IN DWORD dwFlags, + IN LPSERVICE_INFOA lpServiceInfo, + IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, + IN OUT LPDWORD lpdwStatusFlags + ); +INT +APIENTRY +SetServiceW ( + IN DWORD dwNameSpace, + IN DWORD dwOperation, + IN DWORD dwFlags, + IN LPSERVICE_INFOW lpServiceInfo, + IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo, + IN OUT LPDWORD lpdwStatusFlags + ); +#ifdef UNICODE +#define SetService SetServiceW +#else +#define SetService SetServiceA +#endif // !UNICODE + +INT +APIENTRY +GetServiceA ( + IN DWORD dwNameSpace, + IN LPGUID lpGuid, + IN LPSTR lpServiceName, + IN DWORD dwProperties, + IN OUT LPVOID lpBuffer, + IN OUT LPDWORD lpdwBufferSize, + IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo + ); +INT +APIENTRY +GetServiceW ( + IN DWORD dwNameSpace, + IN LPGUID lpGuid, + IN LPWSTR lpServiceName, + IN DWORD dwProperties, + IN OUT LPVOID lpBuffer, + IN OUT LPDWORD lpdwBufferSize, + IN LPSERVICE_ASYNC_INFO lpServiceAsyncInfo + ); +#ifdef UNICODE +#define GetService GetServiceW +#else +#define GetService GetServiceA +#endif // !UNICODE + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif // _NSPAPI_INCLUDED + + |