691 lines
18 KiB
C
691 lines
18 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1991-1998 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_NTDS (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
|
||
|
|
||
|
|