/*++ 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 in precompiled header // then // #include in a single source file // #include 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