mirror of https://github.com/UMSKT/xpmgr.git
147 lines
4.5 KiB
C
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
|
|
|