xpmgr/BuildTools/Include/pnrpns.h

147 lines
4.5 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
pnrpns.h
Abstract:
The PNRP interface participates as a WinSock 2.0 Name Space Provider (NSP)
The actual functions are defined in winsock2.h of the platform SDK
This header file defines the specific structures and data used for PNRP.
--*/
#ifndef _PNRPNS_H_
#define _PNRPNS_H_
#include "pnrpdef.h"
// Namespaces
#ifndef NS_PNRPNAME
#define NS_PNRPNAME (38)
#endif
#ifndef NS_PNRPCLOUD
#define NS_PNRPCLOUD (39)
#endif
//
// Bit values used for dwFlags in PNRPINFO
//
#define PNRPINFO_HINT 0x00000001 // set if Hint valid
//
// PNRP specific data that is referenced by the lpBlob pointer of WSAQUERYSET
//
#pragma warning(push)
#pragma warning(disable:4201) // nameless struct/union
typedef struct _PNRPINFO_V1
{
DWORD dwSize; // size of this struct
LPWSTR lpwszIdentity; // identity name string
DWORD nMaxResolve; // number of desired resolutions
DWORD dwTimeout; // time in seconds to wait for responses
DWORD dwLifetime; // time in seconds for validity
PNRP_RESOLVE_CRITERIA enResolveCriteria; // type of matching for resolves
DWORD dwFlags; // set of flags
SOCKET_ADDRESS saHint; // service location part of an ID
PNRP_REGISTERED_ID_STATE enNameState; // state of registered name
} PNRPINFO_V1, * PPNRPINFO_V1;
typedef struct _PNRPINFO_V2
{
DWORD dwSize; // size of this struct
LPWSTR lpwszIdentity; // identity name string
DWORD nMaxResolve; // number of desired resolutions
DWORD dwTimeout; // time in seconds to wait for responses
DWORD dwLifetime; // time in seconds for validity
PNRP_RESOLVE_CRITERIA enResolveCriteria; // type of matching for resolves
DWORD dwFlags; // set of flags
SOCKET_ADDRESS saHint; // service location part of an ID
PNRP_REGISTERED_ID_STATE enNameState; // state of registered name
PNRP_EXTENDED_PAYLOAD_TYPE enExtendedPayloadType;
union {
BLOB blobPayload;
PWSTR pwszPayload;
};
} PNRPINFO_V2, * PPNRPINFO_V2;
#if defined(PNRP_USE_V1_API)
typedef PNRPINFO_V1 PNRPINFO;
typedef PPNRPINFO_V1 PPNRPINFO;
#else
typedef PNRPINFO_V2 PNRPINFO;
typedef PPNRPINFO_V2 PPNRPINFO;
#endif
//
// Cloud specific data that is referenced by the lpBlob pointer of WSAQUERYSET
//
typedef struct _PNRPCLOUDINFO
{
DWORD dwSize; // size of this struct
PNRP_CLOUD_ID Cloud; // network cloud information
PNRP_CLOUD_STATE enCloudState; // state of cloud
PNRP_CLOUD_FLAGS enCloudFlags; // flags for cloud
// PNRP_CLOUD_NAME_LOCAL - not a network name
} PNRPCLOUDINFO, * PPNRPCLOUDINFO;
#pragma warning(pop)
#endif // _PNRPNS_H_
/////////////////////////////////////////////////////////////////////////////
//
// These GUIDs are outside conditional includes so you can
// #include <pnrpns.h> in precompiled header
// then
// #include <initguid.h> in a single source file
// #include <pnrpns.h> in that source file a second time to instantiate the GUIDs
#ifdef DEFINE_GUID
// NSP Provider GUID
DEFINE_GUID(NS_PROVIDER_PNRPNAME, 0x03fe89cd, 0x766d, 0x4976, 0xb9, 0xc1, 0xbb, 0x9b, 0xc4, 0x2c, 0x7b, 0x4d);
DEFINE_GUID(NS_PROVIDER_PNRPCLOUD, 0x03fe89ce, 0x766d, 0x4976, 0xb9, 0xc1, 0xbb, 0x9b, 0xc4, 0x2c, 0x7b, 0x4d);
// Service Class GUID (specific to PNRP)
DEFINE_GUID(SVCID_PNRPCLOUD, 0xc2239ce6, 0x00c0, 0x4fbf, 0xba, 0xd6, 0x18, 0x13, 0x93, 0x85, 0xa4, 0x9a);
DEFINE_GUID(SVCID_PNRPNAME_V1, 0xc2239ce5, 0x00c0, 0x4fbf, 0xba, 0xd6, 0x18, 0x13, 0x93, 0x85, 0xa4, 0x9a);
DEFINE_GUID(SVCID_PNRPNAME_V2, 0xc2239ce7, 0x00c0, 0x4fbf, 0xba, 0xd6, 0x18, 0x13, 0x93, 0x85, 0xa4, 0x9a);
#if defined(PNRP_USE_V2_API)
#define SVCID_PNRPNAME SVCID_PNRPNAME_V2
#else
#define SVCID_PNRPNAME SVCID_PNRPNAME_V1
#endif
#endif // DEFINE_GUID