mirror of https://github.com/dahall/Vanara.git
Initial implementation of P2P.dll
parent
b7d0a30276
commit
d214434cda
|
@ -0,0 +1,173 @@
|
|||
## Correlation report for p2p.dll
|
||||
PInvoke API (methods, structures and constants) imported from Windows P2P.dll.
|
||||
|
||||
### Methods (87% complete, 101 of 115 functions)
|
||||
Native Method | Header | Managed Method
|
||||
--- | --- | ---
|
||||
[DllMain](https://www.google.com/search?num=5&q=DllMain+site%3Adocs.microsoft.com) | |
|
||||
[PeerCollabAddContact](https://www.google.com/search?num=5&q=PeerCollabAddContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabAddContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabAddContact)
|
||||
[PeerCollabAsyncInviteContact](https://www.google.com/search?num=5&q=PeerCollabAsyncInviteContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabAsyncInviteContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabAsyncInviteContact)
|
||||
[PeerCollabAsyncInviteEndpoint](https://www.google.com/search?num=5&q=PeerCollabAsyncInviteEndpoint+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabAsyncInviteEndpoint](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabAsyncInviteEndpoint)
|
||||
[PeerCollabCancelInvitation](https://www.google.com/search?num=5&q=PeerCollabCancelInvitation+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabCancelInvitation](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabCancelInvitation)
|
||||
[PeerCollabCloseHandle](https://www.google.com/search?num=5&q=PeerCollabCloseHandle+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabCloseHandle](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabCloseHandle)
|
||||
[PeerCollabDeleteContact](https://www.google.com/search?num=5&q=PeerCollabDeleteContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabDeleteContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabDeleteContact)
|
||||
[PeerCollabDeleteEndpointData](https://www.google.com/search?num=5&q=PeerCollabDeleteEndpointData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabDeleteEndpointData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabDeleteEndpointData)
|
||||
[PeerCollabDeleteObject](https://www.google.com/search?num=5&q=PeerCollabDeleteObject+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabDeleteObject](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabDeleteObject)
|
||||
[PeerCollabEnumApplicationRegistrationInfo](https://www.google.com/search?num=5&q=PeerCollabEnumApplicationRegistrationInfo+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabEnumApplicationRegistrationInfo](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabEnumApplicationRegistrationInfo)
|
||||
[PeerCollabEnumApplications](https://www.google.com/search?num=5&q=PeerCollabEnumApplications+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabEnumApplications](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabEnumApplications)
|
||||
[PeerCollabEnumContacts](https://www.google.com/search?num=5&q=PeerCollabEnumContacts+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabEnumContacts](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabEnumContacts)
|
||||
[PeerCollabEnumEndpoints](https://www.google.com/search?num=5&q=PeerCollabEnumEndpoints+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabEnumEndpoints](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabEnumEndpoints)
|
||||
[PeerCollabEnumObjects](https://www.google.com/search?num=5&q=PeerCollabEnumObjects+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabEnumObjects](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabEnumObjects)
|
||||
[PeerCollabEnumPeopleNearMe](https://www.google.com/search?num=5&q=PeerCollabEnumPeopleNearMe+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabEnumPeopleNearMe](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabEnumPeopleNearMe)
|
||||
[PeerCollabExportContact](https://www.google.com/search?num=5&q=PeerCollabExportContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabExportContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabExportContact)
|
||||
[PeerCollabGetAppLaunchInfo](https://www.google.com/search?num=5&q=PeerCollabGetAppLaunchInfo+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetAppLaunchInfo](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetAppLaunchInfo)
|
||||
[PeerCollabGetApplicationRegistrationInfo](https://www.google.com/search?num=5&q=PeerCollabGetApplicationRegistrationInfo+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetApplicationRegistrationInfo](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetApplicationRegistrationInfo)
|
||||
[PeerCollabGetContact](https://www.google.com/search?num=5&q=PeerCollabGetContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetContact)
|
||||
[PeerCollabGetEndpointName](https://www.google.com/search?num=5&q=PeerCollabGetEndpointName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetEndpointName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetEndpointName)
|
||||
[PeerCollabGetEventData](https://www.google.com/search?num=5&q=PeerCollabGetEventData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetEventData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetEventData)
|
||||
[PeerCollabGetInvitationResponse](https://www.google.com/search?num=5&q=PeerCollabGetInvitationResponse+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetInvitationResponse](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetInvitationResponse)
|
||||
[PeerCollabGetPresenceInfo](https://www.google.com/search?num=5&q=PeerCollabGetPresenceInfo+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetPresenceInfo](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetPresenceInfo)
|
||||
[PeerCollabGetSigninOptions](https://www.google.com/search?num=5&q=PeerCollabGetSigninOptions+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabGetSigninOptions](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabGetSigninOptions)
|
||||
[PeerCollabInviteContact](https://www.google.com/search?num=5&q=PeerCollabInviteContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabInviteContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabInviteContact)
|
||||
[PeerCollabInviteEndpoint](https://www.google.com/search?num=5&q=PeerCollabInviteEndpoint+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabInviteEndpoint](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabInviteEndpoint)
|
||||
[PeerCollabParseContact](https://www.google.com/search?num=5&q=PeerCollabParseContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabParseContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabParseContact)
|
||||
[PeerCollabQueryContactData](https://www.google.com/search?num=5&q=PeerCollabQueryContactData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabQueryContactData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabQueryContactData)
|
||||
[PeerCollabRefreshEndpointData](https://www.google.com/search?num=5&q=PeerCollabRefreshEndpointData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabRefreshEndpointData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabRefreshEndpointData)
|
||||
[PeerCollabRegisterApplication](https://www.google.com/search?num=5&q=PeerCollabRegisterApplication+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabRegisterApplication](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabRegisterApplication)
|
||||
[PeerCollabRegisterEvent](https://www.google.com/search?num=5&q=PeerCollabRegisterEvent+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabRegisterEvent](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabRegisterEvent)
|
||||
[PeerCollabSetEndpointName](https://www.google.com/search?num=5&q=PeerCollabSetEndpointName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabSetEndpointName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabSetEndpointName)
|
||||
[PeerCollabSetObject](https://www.google.com/search?num=5&q=PeerCollabSetObject+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabSetObject](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabSetObject)
|
||||
[PeerCollabSetPresenceInfo](https://www.google.com/search?num=5&q=PeerCollabSetPresenceInfo+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabSetPresenceInfo](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabSetPresenceInfo)
|
||||
[PeerCollabShutdown](https://www.google.com/search?num=5&q=PeerCollabShutdown+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabShutdown](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabShutdown)
|
||||
[PeerCollabSignin](https://www.google.com/search?num=5&q=PeerCollabSignin+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabSignin](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabSignin)
|
||||
[PeerCollabSignout](https://www.google.com/search?num=5&q=PeerCollabSignout+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabSignout](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabSignout)
|
||||
[PeerCollabStartup](https://www.google.com/search?num=5&q=PeerCollabStartup+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabStartup](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabStartup)
|
||||
[PeerCollabSubscribeEndpointData](https://www.google.com/search?num=5&q=PeerCollabSubscribeEndpointData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabSubscribeEndpointData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabSubscribeEndpointData)
|
||||
[PeerCollabUnregisterApplication](https://www.google.com/search?num=5&q=PeerCollabUnregisterApplication+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabUnregisterApplication](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabUnregisterApplication)
|
||||
[PeerCollabUnregisterEvent](https://www.google.com/search?num=5&q=PeerCollabUnregisterEvent+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabUnregisterEvent](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabUnregisterEvent)
|
||||
[PeerCollabUnsubscribeEndpointData](https://www.google.com/search?num=5&q=PeerCollabUnsubscribeEndpointData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabUnsubscribeEndpointData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabUnsubscribeEndpointData)
|
||||
[PeerCollabUpdateContact](https://www.google.com/search?num=5&q=PeerCollabUpdateContact+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCollabUpdateContact](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCollabUpdateContact)
|
||||
[PeerCreatePeerName](https://www.google.com/search?num=5&q=PeerCreatePeerName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerCreatePeerName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerCreatePeerName)
|
||||
[PeerEndEnumeration](https://www.google.com/search?num=5&q=PeerEndEnumeration+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerEndEnumeration](https://github.com/dahall/Vanara/search?l=C%23&q=PeerEndEnumeration)
|
||||
[PeerEnumGroups](https://www.google.com/search?num=5&q=PeerEnumGroups+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerEnumGroups](https://github.com/dahall/Vanara/search?l=C%23&q=PeerEnumGroups)
|
||||
[PeerEnumIdentities](https://www.google.com/search?num=5&q=PeerEnumIdentities+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerEnumIdentities](https://github.com/dahall/Vanara/search?l=C%23&q=PeerEnumIdentities)
|
||||
[PeerFreeData](https://www.google.com/search?num=5&q=PeerFreeData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerFreeData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerFreeData)
|
||||
[PeerGetItemCount](https://www.google.com/search?num=5&q=PeerGetItemCount+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGetItemCount](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGetItemCount)
|
||||
[PeerGetNextItem](https://www.google.com/search?num=5&q=PeerGetNextItem+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGetNextItem](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGetNextItem)
|
||||
[PeerGraphShutdown](https://www.google.com/search?num=5&q=PeerGraphShutdown+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGraphShutdown](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGraphShutdown)
|
||||
[PeerGraphStartup](https://www.google.com/search?num=5&q=PeerGraphStartup+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGraphStartup](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGraphStartup)
|
||||
[PeerGroupAddRecord](https://www.google.com/search?num=5&q=PeerGroupAddRecord+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupAddRecord](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupAddRecord)
|
||||
[PeerGroupClose](https://www.google.com/search?num=5&q=PeerGroupClose+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupClose](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupClose)
|
||||
[PeerGroupCloseDirectConnection](https://www.google.com/search?num=5&q=PeerGroupCloseDirectConnection+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupCloseDirectConnection](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupCloseDirectConnection)
|
||||
[PeerGroupConnect](https://www.google.com/search?num=5&q=PeerGroupConnect+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupConnect](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupConnect)
|
||||
[PeerGroupConnectByAddress](https://www.google.com/search?num=5&q=PeerGroupConnectByAddress+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupConnectByAddress](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupConnectByAddress)
|
||||
[PeerGroupCreate](https://www.google.com/search?num=5&q=PeerGroupCreate+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupCreate](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupCreate)
|
||||
[PeerGroupCreateInvitation](https://www.google.com/search?num=5&q=PeerGroupCreateInvitation+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupCreateInvitation](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupCreateInvitation)
|
||||
[PeerGroupCreatePasswordInvitation](https://www.google.com/search?num=5&q=PeerGroupCreatePasswordInvitation+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupCreatePasswordInvitation](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupCreatePasswordInvitation)
|
||||
[PeerGroupDelete](https://www.google.com/search?num=5&q=PeerGroupDelete+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupDelete](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupDelete)
|
||||
[PeerGroupDeleteRecord](https://www.google.com/search?num=5&q=PeerGroupDeleteRecord+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupDeleteRecord](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupDeleteRecord)
|
||||
[PeerGroupEnumConnections](https://www.google.com/search?num=5&q=PeerGroupEnumConnections+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupEnumConnections](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupEnumConnections)
|
||||
[PeerGroupEnumMembers](https://www.google.com/search?num=5&q=PeerGroupEnumMembers+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupEnumMembers](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupEnumMembers)
|
||||
[PeerGroupEnumRecords](https://www.google.com/search?num=5&q=PeerGroupEnumRecords+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupEnumRecords](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupEnumRecords)
|
||||
[PeerGroupExportConfig](https://www.google.com/search?num=5&q=PeerGroupExportConfig+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupExportConfig](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupExportConfig)
|
||||
[PeerGroupExportDatabase](https://www.google.com/search?num=5&q=PeerGroupExportDatabase+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupExportDatabase](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupExportDatabase)
|
||||
[PeerGroupGetEventData](https://www.google.com/search?num=5&q=PeerGroupGetEventData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupGetEventData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupGetEventData)
|
||||
[PeerGroupGetProperties](https://www.google.com/search?num=5&q=PeerGroupGetProperties+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupGetProperties](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupGetProperties)
|
||||
[PeerGroupGetRecord](https://www.google.com/search?num=5&q=PeerGroupGetRecord+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupGetRecord](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupGetRecord)
|
||||
[PeerGroupGetStatus](https://www.google.com/search?num=5&q=PeerGroupGetStatus+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupGetStatus](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupGetStatus)
|
||||
[PeerGroupHandlePowerEvent](https://www.google.com/search?num=5&q=PeerGroupHandlePowerEvent+site%3Adocs.microsoft.com) | |
|
||||
[PeerGroupImportConfig](https://www.google.com/search?num=5&q=PeerGroupImportConfig+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupImportConfig](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupImportConfig)
|
||||
[PeerGroupImportDatabase](https://www.google.com/search?num=5&q=PeerGroupImportDatabase+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupImportDatabase](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupImportDatabase)
|
||||
[PeerGroupIssueCredentials](https://www.google.com/search?num=5&q=PeerGroupIssueCredentials+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupIssueCredentials](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupIssueCredentials)
|
||||
[PeerGroupJoin](https://www.google.com/search?num=5&q=PeerGroupJoin+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupJoin](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupJoin)
|
||||
[PeerGroupOpen](https://www.google.com/search?num=5&q=PeerGroupOpen+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupOpen](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupOpen)
|
||||
[PeerGroupOpenDirectConnection](https://www.google.com/search?num=5&q=PeerGroupOpenDirectConnection+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupOpenDirectConnection](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupOpenDirectConnection)
|
||||
[PeerGroupParseInvitation](https://www.google.com/search?num=5&q=PeerGroupParseInvitation+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupParseInvitation](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupParseInvitation)
|
||||
[PeerGroupPasswordJoin](https://www.google.com/search?num=5&q=PeerGroupPasswordJoin+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupPasswordJoin](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupPasswordJoin)
|
||||
[PeerGroupPeerTimeToUniversalTime](https://www.google.com/search?num=5&q=PeerGroupPeerTimeToUniversalTime+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupPeerTimeToUniversalTime](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupPeerTimeToUniversalTime)
|
||||
[PeerGroupRegisterEvent](https://www.google.com/search?num=5&q=PeerGroupRegisterEvent+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupRegisterEvent](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupRegisterEvent)
|
||||
[PeerGroupResumePasswordAuthentication](https://www.google.com/search?num=5&q=PeerGroupResumePasswordAuthentication+site%3Adocs.microsoft.com) | |
|
||||
[PeerGroupSearchRecords](https://www.google.com/search?num=5&q=PeerGroupSearchRecords+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupSearchRecords](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupSearchRecords)
|
||||
[PeerGroupSendData](https://www.google.com/search?num=5&q=PeerGroupSendData+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupSendData](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupSendData)
|
||||
[PeerGroupSetProperties](https://www.google.com/search?num=5&q=PeerGroupSetProperties+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupSetProperties](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupSetProperties)
|
||||
[PeerGroupShutdown](https://www.google.com/search?num=5&q=PeerGroupShutdown+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupShutdown](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupShutdown)
|
||||
[PeerGroupStartup](https://www.google.com/search?num=5&q=PeerGroupStartup+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupStartup](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupStartup)
|
||||
[PeerGroupUniversalTimeToPeerTime](https://www.google.com/search?num=5&q=PeerGroupUniversalTimeToPeerTime+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupUniversalTimeToPeerTime](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupUniversalTimeToPeerTime)
|
||||
[PeerGroupUnregisterEvent](https://www.google.com/search?num=5&q=PeerGroupUnregisterEvent+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupUnregisterEvent](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupUnregisterEvent)
|
||||
[PeerGroupUpdateRecord](https://www.google.com/search?num=5&q=PeerGroupUpdateRecord+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerGroupUpdateRecord](https://github.com/dahall/Vanara/search?l=C%23&q=PeerGroupUpdateRecord)
|
||||
[PeerHostNameToPeerName](https://www.google.com/search?num=5&q=PeerHostNameToPeerName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerHostNameToPeerName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerHostNameToPeerName)
|
||||
[PeerIdentityCreate](https://www.google.com/search?num=5&q=PeerIdentityCreate+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityCreate](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityCreate)
|
||||
[PeerIdentityDelete](https://www.google.com/search?num=5&q=PeerIdentityDelete+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityDelete](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityDelete)
|
||||
[PeerIdentityExport](https://www.google.com/search?num=5&q=PeerIdentityExport+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityExport](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityExport)
|
||||
[PeerIdentityGetCert](https://www.google.com/search?num=5&q=PeerIdentityGetCert+site%3Adocs.microsoft.com) | |
|
||||
[PeerIdentityGetCryptKey](https://www.google.com/search?num=5&q=PeerIdentityGetCryptKey+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityGetCryptKey](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityGetCryptKey)
|
||||
[PeerIdentityGetDefault](https://www.google.com/search?num=5&q=PeerIdentityGetDefault+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityGetDefault](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityGetDefault)
|
||||
[PeerIdentityGetFriendlyName](https://www.google.com/search?num=5&q=PeerIdentityGetFriendlyName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityGetFriendlyName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityGetFriendlyName)
|
||||
[PeerIdentityGetXML](https://www.google.com/search?num=5&q=PeerIdentityGetXML+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityGetXML](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityGetXML)
|
||||
[PeerIdentityImport](https://www.google.com/search?num=5&q=PeerIdentityImport+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentityImport](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentityImport)
|
||||
[PeerIdentitySetFriendlyName](https://www.google.com/search?num=5&q=PeerIdentitySetFriendlyName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerIdentitySetFriendlyName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerIdentitySetFriendlyName)
|
||||
[PeerNameToPeerHostName](https://www.google.com/search?num=5&q=PeerNameToPeerHostName+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerNameToPeerHostName](https://github.com/dahall/Vanara/search?l=C%23&q=PeerNameToPeerHostName)
|
||||
[PeerPnrpEndResolve](https://www.google.com/search?num=5&q=PeerPnrpEndResolve+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpGetCloudInfo](https://www.google.com/search?num=5&q=PeerPnrpGetCloudInfo+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpGetEndpoint](https://www.google.com/search?num=5&q=PeerPnrpGetEndpoint+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpRegister](https://www.google.com/search?num=5&q=PeerPnrpRegister+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpResolve](https://www.google.com/search?num=5&q=PeerPnrpResolve+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpShutdown](https://www.google.com/search?num=5&q=PeerPnrpShutdown+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerPnrpShutdown](https://github.com/dahall/Vanara/search?l=C%23&q=PeerPnrpShutdown)
|
||||
[PeerPnrpStartResolve](https://www.google.com/search?num=5&q=PeerPnrpStartResolve+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpStartup](https://www.google.com/search?num=5&q=PeerPnrpStartup+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PeerPnrpStartup](https://github.com/dahall/Vanara/search?l=C%23&q=PeerPnrpStartup)
|
||||
[PeerPnrpUnregister](https://www.google.com/search?num=5&q=PeerPnrpUnregister+site%3Adocs.microsoft.com) | |
|
||||
[PeerPnrpUpdateRegistration](https://www.google.com/search?num=5&q=PeerPnrpUpdateRegistration+site%3Adocs.microsoft.com) | |
|
||||
[PeerSSPAddCredentials](https://www.google.com/search?num=5&q=PeerSSPAddCredentials+site%3Adocs.microsoft.com) | |
|
||||
[PeerSSPRemoveCredentials](https://www.google.com/search?num=5&q=PeerSSPRemoveCredentials+site%3Adocs.microsoft.com) | |
|
||||
### Structures
|
||||
Native Structure | Header | Managed Structure
|
||||
--- | --- | ---
|
||||
[HGRAPH](https://www.google.com/search?num=5&q=HGRAPH+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.P2P.HGRAPH](https://github.com/dahall/Vanara/search?l=C%23&q=HGRAPH)
|
||||
[HGROUP](https://www.google.com/search?num=5&q=HGROUP+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.P2P.HGROUP](https://github.com/dahall/Vanara/search?l=C%23&q=HGROUP)
|
||||
[HPEERENUM](https://www.google.com/search?num=5&q=HPEERENUM+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.P2P.HPEERENUM](https://github.com/dahall/Vanara/search?l=C%23&q=HPEERENUM)
|
||||
[HPEEREVENT](https://www.google.com/search?num=5&q=HPEEREVENT+site%3Adocs.microsoft.com) | | [Vanara.PInvoke.P2P.HPEEREVENT](https://github.com/dahall/Vanara/search?l=C%23&q=HPEEREVENT)
|
||||
[PEER_ADDRESS](https://www.google.com/search?num=5&q=PEER_ADDRESS+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_ADDRESS](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_ADDRESS)
|
||||
[PEER_APP_LAUNCH_INFO](https://www.google.com/search?num=5&q=PEER_APP_LAUNCH_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_APP_LAUNCH_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_APP_LAUNCH_INFO)
|
||||
[PEER_APPLICATION](https://www.google.com/search?num=5&q=PEER_APPLICATION+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_APPLICATION](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_APPLICATION)
|
||||
[PEER_APPLICATION_REGISTRATION_INFO](https://www.google.com/search?num=5&q=PEER_APPLICATION_REGISTRATION_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_APPLICATION_REGISTRATION_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_APPLICATION_REGISTRATION_INFO)
|
||||
[PEER_COLLAB_EVENT_DATA](https://www.google.com/search?num=5&q=PEER_COLLAB_EVENT_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_COLLAB_EVENT_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_COLLAB_EVENT_DATA)
|
||||
[PEER_COLLAB_EVENT_REGISTRATION](https://www.google.com/search?num=5&q=PEER_COLLAB_EVENT_REGISTRATION+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_COLLAB_EVENT_REGISTRATION](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_COLLAB_EVENT_REGISTRATION)
|
||||
[PEER_CONNECTION_INFO](https://www.google.com/search?num=5&q=PEER_CONNECTION_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_CONNECTION_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_CONNECTION_INFO)
|
||||
[PEER_CONTACT](https://www.google.com/search?num=5&q=PEER_CONTACT+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_CONTACT](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_CONTACT)
|
||||
[PEER_CREDENTIAL_INFO](https://www.google.com/search?num=5&q=PEER_CREDENTIAL_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_CREDENTIAL_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_CREDENTIAL_INFO)
|
||||
[PEER_DATA](https://www.google.com/search?num=5&q=PEER_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_DATA)
|
||||
[PEER_ENDPOINT](https://www.google.com/search?num=5&q=PEER_ENDPOINT+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_ENDPOINT](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_ENDPOINT)
|
||||
[PEER_EVENT_APPLICATION_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_APPLICATION_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_APPLICATION_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_APPLICATION_CHANGED_DATA)
|
||||
[PEER_EVENT_CONNECTION_CHANGE_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_CONNECTION_CHANGE_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_CONNECTION_CHANGE_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_CONNECTION_CHANGE_DATA)
|
||||
[PEER_EVENT_ENDPOINT_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_ENDPOINT_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_ENDPOINT_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_ENDPOINT_CHANGED_DATA)
|
||||
[PEER_EVENT_INCOMING_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_INCOMING_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_INCOMING_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_INCOMING_DATA)
|
||||
[PEER_EVENT_MEMBER_CHANGE_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_MEMBER_CHANGE_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_MEMBER_CHANGE_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_MEMBER_CHANGE_DATA)
|
||||
[PEER_EVENT_NODE_CHANGE_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_NODE_CHANGE_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_NODE_CHANGE_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_NODE_CHANGE_DATA)
|
||||
[PEER_EVENT_OBJECT_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_OBJECT_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_OBJECT_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_OBJECT_CHANGED_DATA)
|
||||
[PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA)
|
||||
[PEER_EVENT_PRESENCE_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_PRESENCE_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_PRESENCE_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_PRESENCE_CHANGED_DATA)
|
||||
[PEER_EVENT_RECORD_CHANGE_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_RECORD_CHANGE_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_RECORD_CHANGE_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_RECORD_CHANGE_DATA)
|
||||
[PEER_EVENT_REQUEST_STATUS_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_REQUEST_STATUS_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_REQUEST_STATUS_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_REQUEST_STATUS_CHANGED_DATA)
|
||||
[PEER_EVENT_SYNCHRONIZED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_SYNCHRONIZED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_SYNCHRONIZED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_SYNCHRONIZED_DATA)
|
||||
[PEER_EVENT_WATCHLIST_CHANGED_DATA](https://www.google.com/search?num=5&q=PEER_EVENT_WATCHLIST_CHANGED_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_EVENT_WATCHLIST_CHANGED_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_EVENT_WATCHLIST_CHANGED_DATA)
|
||||
[PEER_GRAPH_EVENT_DATA](https://www.google.com/search?num=5&q=PEER_GRAPH_EVENT_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_GRAPH_EVENT_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_GRAPH_EVENT_DATA)
|
||||
[PEER_GRAPH_EVENT_REGISTRATION](https://www.google.com/search?num=5&q=PEER_GRAPH_EVENT_REGISTRATION+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_GRAPH_EVENT_REGISTRATION](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_GRAPH_EVENT_REGISTRATION)
|
||||
[PEER_GRAPH_PROPERTIES](https://www.google.com/search?num=5&q=PEER_GRAPH_PROPERTIES+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_GRAPH_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_GRAPH_PROPERTIES)
|
||||
[PEER_GROUP_EVENT_DATA](https://www.google.com/search?num=5&q=PEER_GROUP_EVENT_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_GROUP_EVENT_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_GROUP_EVENT_DATA)
|
||||
[PEER_GROUP_EVENT_REGISTRATION](https://www.google.com/search?num=5&q=PEER_GROUP_EVENT_REGISTRATION+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_GROUP_EVENT_REGISTRATION](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_GROUP_EVENT_REGISTRATION)
|
||||
[PEER_GROUP_PROPERTIES](https://www.google.com/search?num=5&q=PEER_GROUP_PROPERTIES+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_GROUP_PROPERTIES](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_GROUP_PROPERTIES)
|
||||
[PEER_INVITATION](https://www.google.com/search?num=5&q=PEER_INVITATION+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_INVITATION](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_INVITATION)
|
||||
[PEER_INVITATION_INFO](https://www.google.com/search?num=5&q=PEER_INVITATION_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_INVITATION_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_INVITATION_INFO)
|
||||
[PEER_INVITATION_RESPONSE](https://www.google.com/search?num=5&q=PEER_INVITATION_RESPONSE+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_INVITATION_RESPONSE](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_INVITATION_RESPONSE)
|
||||
[PEER_MEMBER](https://www.google.com/search?num=5&q=PEER_MEMBER+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_MEMBER](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_MEMBER)
|
||||
[PEER_NAME_PAIR](https://www.google.com/search?num=5&q=PEER_NAME_PAIR+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_NAME_PAIR](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_NAME_PAIR)
|
||||
[PEER_NODE_INFO](https://www.google.com/search?num=5&q=PEER_NODE_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_NODE_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_NODE_INFO)
|
||||
[PEER_OBJECT](https://www.google.com/search?num=5&q=PEER_OBJECT+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_OBJECT](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_OBJECT)
|
||||
[PEER_PEOPLE_NEAR_ME](https://www.google.com/search?num=5&q=PEER_PEOPLE_NEAR_ME+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_PEOPLE_NEAR_ME](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_PEOPLE_NEAR_ME)
|
||||
[PEER_PNRP_CLOUD_INFO](https://www.google.com/search?num=5&q=PEER_PNRP_CLOUD_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_PNRP_CLOUD_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_PNRP_CLOUD_INFO)
|
||||
[PEER_PNRP_ENDPOINT_INFO](https://www.google.com/search?num=5&q=PEER_PNRP_ENDPOINT_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_PNRP_ENDPOINT_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_PNRP_ENDPOINT_INFO)
|
||||
[PEER_PNRP_REGISTRATION_INFO](https://www.google.com/search?num=5&q=PEER_PNRP_REGISTRATION_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_PNRP_REGISTRATION_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_PNRP_REGISTRATION_INFO)
|
||||
[PEER_PRESENCE_INFO](https://www.google.com/search?num=5&q=PEER_PRESENCE_INFO+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_PRESENCE_INFO](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_PRESENCE_INFO)
|
||||
[PEER_RECORD](https://www.google.com/search?num=5&q=PEER_RECORD+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_RECORD](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_RECORD)
|
||||
[PEER_SECURITY_INTERFACE](https://www.google.com/search?num=5&q=PEER_SECURITY_INTERFACE+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_SECURITY_INTERFACE](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_SECURITY_INTERFACE)
|
||||
[PEER_VERSION_DATA](https://www.google.com/search?num=5&q=PEER_VERSION_DATA+site%3Adocs.microsoft.com) | p2p.h | [Vanara.PInvoke.P2P.PEER_VERSION_DATA](https://github.com/dahall/Vanara/search?l=C%23&q=PEER_VERSION_DATA)
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,666 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using Vanara.Extensions;
|
||||
using Vanara.InteropServices;
|
||||
using static Vanara.PInvoke.AdvApi32;
|
||||
using static Vanara.PInvoke.Crypt32;
|
||||
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
|
||||
|
||||
namespace Vanara.PInvoke
|
||||
{
|
||||
/// <summary>Items from the P2P.dll</summary>
|
||||
public static partial class P2P
|
||||
{
|
||||
/// <summary/>
|
||||
public const ushort PEER_COLLAB_VERSION = 0x0001;
|
||||
|
||||
/// <summary/>
|
||||
public const ushort PEER_GRAPH_VERSION = 0x0001;
|
||||
|
||||
/// <summary/>
|
||||
public const ushort PEER_GROUP_VERSION = 0x0101;
|
||||
|
||||
/// <summary/>
|
||||
public const ushort PNRP_VERSION = 0x0002;
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PFNPEER_FREE_SECURITY_DATA</c> callback specifies the function that the Peer Graphing Infrastructure calls to free data
|
||||
/// returned by PFNPEER_SECURE_RECORD and PFNPEER_VALIDATE_RECORD callbacks.
|
||||
/// </summary>
|
||||
/// <param name="hGraph">Specifies the peer graph associated with the specified record.</param>
|
||||
/// <param name="pvContext">
|
||||
/// Pointer to the security context to free. This parameter is set to the value of the <c>pvContext</c> member of the
|
||||
/// PEER_SECURITY_INTERFACE structure passed in PeerGraphCreate or PeerGraphOpen.
|
||||
/// </param>
|
||||
/// <param name="pSecurityData">Pointer to the security data to free.</param>
|
||||
/// <returns>
|
||||
/// <para>If the callback is successful, the return value is S_OK. Otherwise, the callback returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>This callback can be invoked from any of the Peer Graphing API functions involving records, such as PeerGraphUpdateRecord.</remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nc-p2p-pfnpeer_free_security_data PFNPEER_FREE_SECURITY_DATA
|
||||
// PfnpeerFreeSecurityData; HRESULT PfnpeerFreeSecurityData( HGRAPH hGraph, PVOID pvContext, PPEER_DATA pSecurityData ) {...}
|
||||
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NC:p2p.PFNPEER_FREE_SECURITY_DATA")]
|
||||
public delegate HRESULT PFNPEER_FREE_SECURITY_DATA(HGRAPH hGraph, [In, Optional] IntPtr pvContext, in PEER_DATA pSecurityData);
|
||||
|
||||
/// <summary></summary>
|
||||
/// <param name="hGraph">Specifies the peer graph associated with the specified record.</param>
|
||||
/// <param name="pvContext">
|
||||
/// Pointer to the security context. This parameter should point to the <c>pvContext</c> member of the PEER_SECURITY_INTERFACE structure.
|
||||
/// </param>
|
||||
/// <returns>If this callback succeeds, the return value is S_OK; otherwise, the error.</returns>
|
||||
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
||||
[PInvokeData("p2p.h")]
|
||||
public delegate HRESULT PFNPEER_ON_PASSWORD_AUTH_FAILED(HGRAPH hGraph, [In, Optional] IntPtr pvContext);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PFNPEER_SECURE_RECORD</c> callback specifies the function that the Peer Graphing Infrastructure calls to secure records.
|
||||
/// </summary>
|
||||
/// <param name="hGraph">Specifies the peer graph associated with the specified record.</param>
|
||||
/// <param name="pvContext">
|
||||
/// Pointer to the security context. This parameter points to the <c>pvContext</c> member of the PEER_SECURITY_INTERFACE structure.
|
||||
/// </param>
|
||||
/// <param name="pRecord">Pointer to the record to secure.</param>
|
||||
/// <param name="changeType">Specifies the reason the validation must occur. PEER_RECORD_CHANGE_TYPE enumerates the valid values.</param>
|
||||
/// <param name="ppSecurityData"/>
|
||||
/// <returns>If this callback succeeds, the return value is S_OK.</returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// This callback is invoked whenever an application calls any of the methods that modify records, such as PeerGraphAddRecord or
|
||||
/// PeerGraphUpdateRecord. This callback should create data that is specific to this record, such as a small digital signature, and
|
||||
/// return it through the ppSecurityData parameter. This data is then added to the record in the <c>securityData</c> member, and is
|
||||
/// verified by the method specified by the <c>pfnValidateRecord</c> member of the PEER_SECURITY_INTERFACE.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <c>Note</c> This process happens on the local computer as well as any peer connected to the graph when the peer receives the record.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// If the operation specified by the changeType parameter is not allowed, the callback should return a failure code, such as
|
||||
/// PEER_E_NOT_AUTHORIZED, instead of S_OK.
|
||||
/// </para>
|
||||
/// <para>This callback can be invoked from any of the Peer Graphing API functions involving records, such as PeerGraphUpdateRecord.</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nc-p2p-pfnpeer_secure_record PFNPEER_SECURE_RECORD PfnpeerSecureRecord;
|
||||
// HRESULT PfnpeerSecureRecord( HGRAPH hGraph, PVOID pvContext, PPEER_RECORD pRecord, PEER_RECORD_CHANGE_TYPE changeType, PPEER_DATA
|
||||
// *ppSecurityData ) {...}
|
||||
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NC:p2p.PFNPEER_SECURE_RECORD")]
|
||||
public delegate HRESULT PFNPEER_SECURE_RECORD(HGRAPH hGraph, [In, Optional] IntPtr pvContext, in PEER_RECORD pRecord, PEER_RECORD_CHANGE_TYPE changeType, out PEER_DATA ppSecurityData);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PFNPEER_VALIDATE_RECORD</c> callback specifies the function that the Peer Graphing Infrastructure calls to validate records.
|
||||
/// </summary>
|
||||
/// <param name="hGraph">Specifies the peer graph associated with the specified record.</param>
|
||||
/// <param name="pvContext">
|
||||
/// Pointer to the security context. This parameter should point to the <c>pvContext</c> member of the PEER_SECURITY_INTERFACE structure.
|
||||
/// </param>
|
||||
/// <param name="pRecord">Specifies the record to validate.</param>
|
||||
/// <param name="changeType">Specifies the reason the validation must occur. Must be one of the PEER_RECORD_CHANGE_TYPE values.</param>
|
||||
/// <returns>
|
||||
/// <para>If this callback succeeds, the return value is S_OK; otherwise, the function returns one of the following errors:</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_DEFERRED_VALIDATION</term>
|
||||
/// <term>
|
||||
/// The specified record cannot be validated at this time because there is insufficient information to complete the operation.
|
||||
/// Validation is deferred. Call PeerGraphValidateDeferredRecords when sufficient information is obtained.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_INVALID_RECORD</term>
|
||||
/// <term>The specified record is invalid.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// When this callback is called by the Peer Graphing Infrastructure, a PEER_RECORD_CHANGE_TYPE value is passed. This specifies the
|
||||
/// operation just performed on the record. The application must verify the record based on the change type. If the application
|
||||
/// requires more information to verify the record, it can return PEER_E_DEFERRED_VALIDATION and the Peer Graphing Infrastructure
|
||||
/// places the record in a deferred-record list. Once the security mechanism has enough information to validate the record, it calls
|
||||
/// PeerGraphValidateDeferredRecords, and any record in the deferred-record list is re-submitted for validation.
|
||||
/// </para>
|
||||
/// <para>This callback can be invoked from any of the Peer Graphing API functions involving records, such as PeerGraphUpdateRecord.</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nc-p2p-pfnpeer_validate_record PFNPEER_VALIDATE_RECORD
|
||||
// PfnpeerValidateRecord; HRESULT PfnpeerValidateRecord( HGRAPH hGraph, PVOID pvContext, PPEER_RECORD pRecord,
|
||||
// PEER_RECORD_CHANGE_TYPE changeType ) {...}
|
||||
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NC:p2p.PFNPEER_VALIDATE_RECORD")]
|
||||
public delegate HRESULT PFNPEER_VALIDATE_RECORD(HGRAPH hGraph, [In, Optional] IntPtr pvContext, in PEER_RECORD pRecord, PEER_RECORD_CHANGE_TYPE changeType);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerEndEnumeration</c> function releases an enumeration, for example, a record or member enumeration, and deallocates all
|
||||
/// resources associated with the enumeration.
|
||||
/// </summary>
|
||||
/// <param name="hPeerEnum">Handle to the enumeration to be released. This handle is generated by a peer enumeration function.</param>
|
||||
/// <returns>
|
||||
/// <para>Returns <c>S_OK</c> if the operation succeeds. Otherwise, the function returns the following value.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>The parameter is not valid.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerendenumeration NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerEndEnumeration( HPEERENUM hPeerEnum );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerEndEnumeration")]
|
||||
public static extern HRESULT PeerEndEnumeration(HPEERENUM hPeerEnum);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerFreeData</c> function deallocates a block of data and returns it to the memory pool. Use the <c>PeerFreeData</c>
|
||||
/// function to free data that the Peer Identity Manager, Peer Grouping, and Peer Collaboration APIs return.
|
||||
/// </summary>
|
||||
/// <param name="pvData">Pointer to a block of data to be deallocated. This parameter must reference a valid block of memory.</param>
|
||||
/// <returns>There are no return values.</returns>
|
||||
/// <remarks>
|
||||
/// Do not use this function to release memory that the Peer Graphing API returns. Use PeerGraphFreeData for memory that the Peer
|
||||
/// Graphing API returns.
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerfreedata NOT_BUILD_WINDOWS_DEPRECATE VOID PeerFreeData( LPCVOID
|
||||
// pvData );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerFreeData")]
|
||||
public static extern void PeerFreeData(IntPtr pvData);
|
||||
|
||||
/// <summary>The <c>PeerGetItemCount</c> function returns a count of the items in a peer enumeration.</summary>
|
||||
/// <param name="hPeerEnum">
|
||||
/// Handle to the peer enumeration on which a count is performed. A peer enumeration function generates this handle.
|
||||
/// </param>
|
||||
/// <param name="pCount">Returns the total number of items in a peer enumeration.</param>
|
||||
/// <returns>
|
||||
/// <para>Returns <c>S_OK</c> if the operation succeeds. Otherwise, the function returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peergetitemcount NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerGetItemCount( HPEERENUM hPeerEnum, ULONG *pCount );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerGetItemCount")]
|
||||
public static extern HRESULT PeerGetItemCount(HPEERENUM hPeerEnum, out uint pCount);
|
||||
|
||||
/// <summary>The <c>PeerGetNextItem</c> function returns a specific number of items from a peer enumeration.</summary>
|
||||
/// <param name="hPeerEnum">
|
||||
/// Handle to the peer enumeration from which items are retrieved. This handle is generated by a peer enumeration function.
|
||||
/// </param>
|
||||
/// <param name="pCount">
|
||||
/// Pointer to an integer that specifies the number of items to be retrieved from the peer enumeration. When returned, it contains
|
||||
/// the number of items in ppvItems. This parameter cannot be <c>NULL</c>.
|
||||
/// </param>
|
||||
/// <param name="pppvItems">
|
||||
/// Receives a pointer to an array of pointers to the next pCount items in the peer enumeration. The data, for example, a record or
|
||||
/// member information block, depends on the actual peer enumeration type.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>Returns <c>S_OK</c> if the operation succeeds. Otherwise, the function returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform a specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>The <c>PeerGetNextItem</c> function returns the following:</para>
|
||||
/// <list type="bullet">
|
||||
/// <item>
|
||||
/// <term>Items that are equal to or less than the amount specified in pCount.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>A list of items that are less than the amount specified when the amount is greater than the number of items available.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// <para>
|
||||
/// <c>Note</c> For example, when the inbound value of pCount is 10 and the remainder of the enumeration is 5 items, only 5 items
|
||||
/// are returned and the value pointed to by pCount is set to 5.
|
||||
/// </para>
|
||||
/// <para>All items returned must be freed by passing a pointer to the array of pointers to the PeerFreeData function.</para>
|
||||
/// <para>The end of an enumeration is indicated when the function returns with the pCount parameter set to zero (0).</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peergetnextitem NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerGetNextItem( HPEERENUM hPeerEnum, ULONG *pCount, PVOID **pppvItems );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerGetNextItem")]
|
||||
public static extern HRESULT PeerGetNextItem([In] HPEERENUM hPeerEnum, ref uint pCount, out SafePeerData pppvItems);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerGraphShutdown</c> function cleans up any resources allocated by the call to PeerGraphStartup. There must be a call to
|
||||
/// <c>PeerGraphShutdown</c> for each call to <c>PeerGraphStartup</c>.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <para>
|
||||
/// Returns S_OK if the operation succeeds; otherwise, the function returns the one of the standard error codes defined in
|
||||
/// WinError.h, or the function returns the following value:
|
||||
/// </para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_INITIALIZED</term>
|
||||
/// <term>The peer graph must be initialized with a call to PeerGraphStartup before using this function.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// When the last <c>PeerGraphShutdown</c> is called for a peer graph, all the opened peer graphs, outstanding enumeration handles,
|
||||
/// and outstanding event registration handles are automatically released.
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peergraphshutdown NOT_BUILD_WINDOWS_DEPRECATE HRESULT PeerGraphShutdown();
|
||||
[DllImport(Lib_P2PGraph, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerGraphShutdown")]
|
||||
public static extern HRESULT PeerGraphShutdown();
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerGraphStartup</c> function indicates to the Peer Graphing Infrastructure what version of the Peer protocols the
|
||||
/// calling application requires. <c>PeerGraphStartup</c> must be called before any other peer graphing functions. It must be
|
||||
/// matched by a call to PeerGraphShutdown.
|
||||
/// </summary>
|
||||
/// <param name="wVersionRequested">Specify PEER_GRAPH_VERSION.</param>
|
||||
/// <param name="pVersionData">
|
||||
/// Pointer to a PEER_VERSION_DATA structure that receives the version of the Peer Infrastructure installed on the local computer.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>Returns S_OK if the operation succeeds; otherwise, the function returns one of the following values:</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_UNSUPPORTED_VERSION</term>
|
||||
/// <term>The version requested is not supported by the Peer Infrastructure .dll installed on the local computer.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peergraphstartup NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerGraphStartup( WORD wVersionRequested, PPEER_VERSION_DATA pVersionData );
|
||||
[DllImport(Lib_P2PGraph, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerGraphStartup")]
|
||||
public static extern HRESULT PeerGraphStartup(ushort wVersionRequested, out PEER_VERSION_DATA pVersionData);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerHostNameToPeerName</c> function decodes a host name returned by PeerNameToPeerHostName into the peer name string it represents.
|
||||
/// </summary>
|
||||
/// <param name="pwzHostName">Pointer to a zero-terminated Unicode string that contains the host name to decode.</param>
|
||||
/// <param name="ppwzPeerName">
|
||||
/// Pointer to the address of the zero-terminated Unicode string that contains the decoded peer name. The returned string must be
|
||||
/// released with PeerFreeData.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerhostnametopeername NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerHostNameToPeerName( PCWSTR pwzHostName, PWSTR *ppwzPeerName );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerHostNameToPeerName")]
|
||||
public static extern HRESULT PeerHostNameToPeerName([MarshalAs(UnmanagedType.LPWStr)] string pwzHostName,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzPeerName);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerNameToPeerHostName</c> function encodes the supplied peer name as a format that can be used with a subsequent call to
|
||||
/// the getaddrinfo Windows Sockets function.
|
||||
/// </summary>
|
||||
/// <param name="pwzPeerName">Pointer to a zero-terminated Unicode string that contains the peer name to encode as a host name.</param>
|
||||
/// <param name="ppwzHostName">
|
||||
/// Pointer to the address of the zero-terminated Unicode string that contains the encoded host name. This string can be passed to
|
||||
/// getaddrinfo_v2 to obtain network information about the peer.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peernametopeerhostname NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerNameToPeerHostName( PCWSTR pwzPeerName, PWSTR *ppwzHostName );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerNameToPeerHostName")]
|
||||
public static extern HRESULT PeerNameToPeerHostName([MarshalAs(UnmanagedType.LPWStr)] string pwzPeerName,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzHostName);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerPnrpShutdown</c> function shuts down a running instance of the Peer Name Resolution Protocol (PNRP) service and
|
||||
/// releases all resources associated with it.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_INITIALIZED</term>
|
||||
/// <term>The Windows Peer infrastructure is not initialized. Calling the relevant initialization function is required.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerpnrpshutdown NOT_BUILD_WINDOWS_DEPRECATE HRESULT PeerPnrpShutdown();
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerPnrpShutdown")]
|
||||
public static extern HRESULT PeerPnrpShutdown();
|
||||
|
||||
/// <summary>The <c>PeerPnrpStartup</c> function starts the Peer Name Resolution Protocol (PNRP) service for the calling peer.</summary>
|
||||
/// <param name="wVersionRequested">The version of PNRP to use for this service instance. The default value is PNRP_VERSION (2).</param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_UNSUPPORTED_VERSION</term>
|
||||
/// <term>The provided version is unsupported.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_SERVICE_NOT_AVAILABLE</term>
|
||||
/// <term>
|
||||
/// The Peer Collaboration infrastructure, which includes People Near Me, is not available. This code will also be returned whenever
|
||||
/// an attempt is made to utilize the Collaboration infrastructure from an elevated process.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>To shutdown the PNRP service for the calling peer and release all resources associated with it, call PeerPnrpShutdown.</remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerpnrpstartup NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerPnrpStartup( WORD wVersionRequested );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerPnrpStartup")]
|
||||
public static extern HRESULT PeerPnrpStartup(ushort wVersionRequested = PNRP_VERSION);
|
||||
|
||||
private static IEnumerable<T> PeerEnum<T, TIn>(TIn p1, Func<TIn, SafeHPEERENUM> setup) where T : struct where TIn : struct =>
|
||||
PeerEnum<T>(() => setup(p1));
|
||||
|
||||
private static IEnumerable<T> PeerEnum<T>(Func<SafeHPEERENUM> setup) where T : struct
|
||||
{
|
||||
using var hEnum = setup();
|
||||
if (hEnum.IsInvalid) return new T[0];
|
||||
PeerGetItemCount(hEnum, out var count).ThrowIfFailed();
|
||||
if (count == 0) return new T[0];
|
||||
PeerGetNextItem(hEnum, ref count, out var items).ThrowIfFailed();
|
||||
using (items)
|
||||
return items.DangerousGetHandle().ToArray<T>((int)count);
|
||||
}
|
||||
|
||||
/// <summary>Provides a handle to a peer enumeration.</summary>
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct HPEERENUM : IHandle
|
||||
{
|
||||
private IntPtr handle;
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="HPEERENUM"/> struct.</summary>
|
||||
/// <param name="preexistingHandle">An <see cref="IntPtr"/> object that represents the pre-existing handle to use.</param>
|
||||
public HPEERENUM(IntPtr preexistingHandle) => handle = preexistingHandle;
|
||||
|
||||
/// <summary>Returns an invalid handle by instantiating a <see cref="HPEERENUM"/> object with <see cref="IntPtr.Zero"/>.</summary>
|
||||
public static HPEERENUM NULL => new HPEERENUM(IntPtr.Zero);
|
||||
|
||||
/// <summary>Gets a value indicating whether this instance is a null handle.</summary>
|
||||
public bool IsNull => handle == IntPtr.Zero;
|
||||
|
||||
/// <summary>Performs an explicit conversion from <see cref="HPEERENUM"/> to <see cref="IntPtr"/>.</summary>
|
||||
/// <param name="h">The handle.</param>
|
||||
/// <returns>The result of the conversion.</returns>
|
||||
public static explicit operator IntPtr(HPEERENUM h) => h.handle;
|
||||
|
||||
/// <summary>Performs an implicit conversion from <see cref="IntPtr"/> to <see cref="HPEERENUM"/>.</summary>
|
||||
/// <param name="h">The pointer to a handle.</param>
|
||||
/// <returns>The result of the conversion.</returns>
|
||||
public static implicit operator HPEERENUM(IntPtr h) => new HPEERENUM(h);
|
||||
|
||||
/// <summary>Implements the operator !=.</summary>
|
||||
/// <param name="h1">The first handle.</param>
|
||||
/// <param name="h2">The second handle.</param>
|
||||
/// <returns>The result of the operator.</returns>
|
||||
public static bool operator !=(HPEERENUM h1, HPEERENUM h2) => !(h1 == h2);
|
||||
|
||||
/// <summary>Implements the operator ==.</summary>
|
||||
/// <param name="h1">The first handle.</param>
|
||||
/// <param name="h2">The second handle.</param>
|
||||
/// <returns>The result of the operator.</returns>
|
||||
public static bool operator ==(HPEERENUM h1, HPEERENUM h2) => h1.Equals(h2);
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override bool Equals(object obj) => obj is HPEERENUM h && handle == h.handle;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override int GetHashCode() => handle.GetHashCode();
|
||||
|
||||
/// <inheritdoc/>
|
||||
public IntPtr DangerousGetHandle() => handle;
|
||||
}
|
||||
|
||||
/// <summary>Provides a <see cref="SafeHandle"/> for <see cref="HPEERENUM"/> that is disposed using <see cref="PeerEndEnumeration"/>.</summary>
|
||||
public class SafeHPEERENUM : SafeHANDLE
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="SafeHPEERENUM"/> class and assigns an existing handle.</summary>
|
||||
/// <param name="preexistingHandle">An <see cref="IntPtr"/> object that represents the pre-existing handle to use.</param>
|
||||
/// <param name="ownsHandle">
|
||||
/// <see langword="true"/> to reliably release the handle during the finalization phase; otherwise, <see langword="false"/> (not recommended).
|
||||
/// </param>
|
||||
public SafeHPEERENUM(IntPtr preexistingHandle, bool ownsHandle = true) : base(preexistingHandle, ownsHandle) { }
|
||||
|
||||
/// <summary>Initializes a new instance of the <see cref="SafeHPEERENUM"/> class.</summary>
|
||||
private SafeHPEERENUM() : base() { }
|
||||
|
||||
/// <summary>Performs an implicit conversion from <see cref="SafeHPEERENUM"/> to <see cref="HPEERENUM"/>.</summary>
|
||||
/// <param name="h">The safe handle instance.</param>
|
||||
/// <returns>The result of the conversion.</returns>
|
||||
public static implicit operator HPEERENUM(SafeHPEERENUM h) => h.handle;
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override bool InternalReleaseHandle() => PeerEndEnumeration(handle).Succeeded;
|
||||
}
|
||||
|
||||
/// <summary>Provides a <see cref="SafeHandle"/> for data that is disposed using <see cref="PeerFreeData"/>.</summary>
|
||||
public class SafePeerData : SafeHANDLE
|
||||
{
|
||||
/// <summary>Initializes a new instance of the <see cref="SafePeerData"/> class.</summary>
|
||||
protected SafePeerData() : base() { }
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override bool InternalReleaseHandle() { PeerFreeData(handle); return true; }
|
||||
}
|
||||
|
||||
internal class PeerStringMarshaler : ICustomMarshaler
|
||||
{
|
||||
internal PeerStringMarshaler()
|
||||
{
|
||||
}
|
||||
|
||||
public static ICustomMarshaler GetInstance(string _) => new PeerStringMarshaler();
|
||||
|
||||
/// <summary>Performs necessary cleanup of the managed data when it is no longer needed.</summary>
|
||||
/// <param name="ManagedObj">The managed object to be destroyed.</param>
|
||||
public void CleanUpManagedData(object ManagedObj) { }
|
||||
|
||||
/// <summary>Performs necessary cleanup of the unmanaged data when it is no longer needed.</summary>
|
||||
/// <param name="pNativeData">A pointer to the unmanaged data to be destroyed.</param>
|
||||
public void CleanUpNativeData(IntPtr pNativeData) => PeerFreeData(pNativeData);
|
||||
|
||||
/// <summary>Returns the size of the native data to be marshaled.</summary>
|
||||
/// <returns>The size in bytes of the native data.</returns>
|
||||
public int GetNativeDataSize() => -1;
|
||||
|
||||
/// <summary>Converts the managed data to unmanaged data.</summary>
|
||||
/// <param name="ManagedObj">The managed object to be converted.</param>
|
||||
/// <returns>Returns the COM view of the managed object.</returns>
|
||||
public IntPtr MarshalManagedToNative(object ManagedObj) => throw new NotImplementedException();
|
||||
|
||||
/// <summary>Converts the unmanaged data to managed data.</summary>
|
||||
/// <param name="pNativeData">A pointer to the unmanaged data to be wrapped.</param>
|
||||
/// <returns>Returns the managed view of the COM data.</returns>
|
||||
public object MarshalNativeToManaged(IntPtr pNativeData) => Marshal.PtrToStringUni(pNativeData);
|
||||
}
|
||||
|
||||
internal class PeerStructMarshaler<T> : ICustomMarshaler where T : struct
|
||||
{
|
||||
internal PeerStructMarshaler()
|
||||
{
|
||||
}
|
||||
|
||||
public static ICustomMarshaler GetInstance(string _) => new PeerStructMarshaler<T>();
|
||||
|
||||
/// <summary>Performs necessary cleanup of the managed data when it is no longer needed.</summary>
|
||||
/// <param name="ManagedObj">The managed object to be destroyed.</param>
|
||||
public void CleanUpManagedData(object ManagedObj) { }
|
||||
|
||||
/// <summary>Performs necessary cleanup of the unmanaged data when it is no longer needed.</summary>
|
||||
/// <param name="pNativeData">A pointer to the unmanaged data to be destroyed.</param>
|
||||
public void CleanUpNativeData(IntPtr pNativeData) => PeerFreeData(pNativeData);
|
||||
|
||||
/// <summary>Returns the size of the native data to be marshaled.</summary>
|
||||
/// <returns>The size in bytes of the native data.</returns>
|
||||
public int GetNativeDataSize() => -1;
|
||||
|
||||
/// <summary>Converts the managed data to unmanaged data.</summary>
|
||||
/// <param name="ManagedObj">The managed object to be converted.</param>
|
||||
/// <returns>Returns the COM view of the managed object.</returns>
|
||||
public IntPtr MarshalManagedToNative(object ManagedObj) => throw new NotImplementedException();
|
||||
|
||||
/// <summary>Converts the unmanaged data to managed data.</summary>
|
||||
/// <param name="pNativeData">A pointer to the unmanaged data to be wrapped.</param>
|
||||
/// <returns>Returns the managed view of the COM data.</returns>
|
||||
public object MarshalNativeToManaged(IntPtr pNativeData) => Marshal.PtrToStructure(pNativeData, typeof(T));
|
||||
}
|
||||
|
||||
/*
|
||||
PeerPnrpEndResolve
|
||||
PeerPnrpGetCloudInfo
|
||||
PeerPnrpGetEndpoint
|
||||
PeerPnrpRegister
|
||||
PeerPnrpResolve
|
||||
PeerPnrpStartResolve
|
||||
PeerPnrpUnregister
|
||||
PeerPnrpUpdateRegistration
|
||||
PeerGraphAddRecord
|
||||
PeerGraphClose
|
||||
PeerGraphCloseDirectConnection
|
||||
PeerGraphConnect
|
||||
PeerGraphCreate
|
||||
PeerGraphDelete
|
||||
PeerGraphDeleteRecord
|
||||
PeerGraphEndEnumeration
|
||||
PeerGraphEnumConnections
|
||||
PeerGraphEnumNodes
|
||||
PeerGraphEnumRecords
|
||||
PeerGraphExportDatabase
|
||||
PeerGraphFreeData
|
||||
PeerGraphGetEventData
|
||||
PeerGraphGetItemCount
|
||||
PeerGraphGetNextItem
|
||||
PeerGraphGetNodeInfo
|
||||
PeerGraphGetProperties
|
||||
PeerGraphGetRecord
|
||||
PeerGraphGetStatus
|
||||
PeerGraphImportDatabase
|
||||
PeerGraphListen
|
||||
PeerGraphOpen
|
||||
PeerGraphOpenDirectConnection
|
||||
PeerGraphPeerTimeToUniversalTime
|
||||
PeerGraphRegisterEvent
|
||||
PeerGraphSearchRecords
|
||||
PeerGraphSendData
|
||||
PeerGraphSetNodeAttributes
|
||||
PeerGraphSetPresence
|
||||
PeerGraphSetProperties
|
||||
PeerGraphUniversalTimeToPeerTime
|
||||
PeerGraphUnregisterEvent
|
||||
PeerGraphUpdateRecord
|
||||
PeerGraphValidateDeferredRecords
|
||||
*/
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,616 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using Vanara.Extensions;
|
||||
using Vanara.InteropServices;
|
||||
using static Vanara.PInvoke.AdvApi32;
|
||||
using static Vanara.PInvoke.Crypt32;
|
||||
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
|
||||
|
||||
namespace Vanara.PInvoke
|
||||
{
|
||||
/// <summary>Items from the P2P.dll</summary>
|
||||
public static partial class P2P
|
||||
{
|
||||
/// <summary>
|
||||
/// The <c>PeerCreatePeerName</c> function creates a new name based on the existing name of the specified peer identity and
|
||||
/// classifier. However, a new identity is not created by a call to <c>PeerCreatePeerName</c>.
|
||||
/// </summary>
|
||||
/// <param name="pwzIdentity">
|
||||
/// <para>
|
||||
/// Specifies the identity to use as the basis for the new peer name. If pwzIdentity is <c>NULL</c>, the name created is not based
|
||||
/// on any peer identity, and is therefore an unsecured name.
|
||||
/// </para>
|
||||
/// <para>This parameter can only be <c>NULL</c> if pwzClassifier is not <c>NULL</c>.</para>
|
||||
/// </param>
|
||||
/// <param name="pwzClassifier">
|
||||
/// <para>
|
||||
/// Pointer to the Unicode string that contains the new classifier. This classifier is appended to the existing authority portion of
|
||||
/// the peer name of the specified identity. This string is 150 characters long, including the <c>NULL</c> terminator. Specify
|
||||
/// <c>NULL</c> to return the peer name of the identity.
|
||||
/// </para>
|
||||
/// <para>This parameter can only be <c>NULL</c> if pwzIdentity is not <c>NULL</c>.</para>
|
||||
/// </param>
|
||||
/// <param name="ppwzPeerName">
|
||||
/// Pointer that receives a pointer to the new peer name. When this string is not required anymore, free it by calling PeerFreeData.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>The parameter ppwzPeername must be set to null before the <c>PeerCreatePeerName</c> function is called.</remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peercreatepeername NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerCreatePeerName( PCWSTR pwzIdentity, PCWSTR pwzClassifier, PWSTR *ppwzPeerName );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerCreatePeerName")]
|
||||
public static extern HRESULT PeerCreatePeerName([Optional, MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity, [Optional, MarshalAs(UnmanagedType.LPWStr)] string pwzClassifier,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzPeerName);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerEnumGroups</c> function creates and returns a peer enumeration handle used to enumerate all the peer groups
|
||||
/// associated with a specific peer identity.
|
||||
/// </summary>
|
||||
/// <param name="pwzIdentity">Specifies the peer identity to enumerate groups for.</param>
|
||||
/// <param name="phPeerEnum">
|
||||
/// Receives a handle to the peer enumeration that contains the list of peer groups that the specified identity is a member of, with
|
||||
/// each item represented as a pointer to a PEER_NAME_PAIR structure. Pass this handle to PeerGetNextItem to retrieve the items;
|
||||
/// when finished, call PeerEndEnumeration release the memory.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is S_OK. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>The specified peer identity cannot be found.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Once the application has obtained the enumeration handle, use PeerGetNextItem and PeerGetItemCount to enumerate the peer groups.
|
||||
/// </para>
|
||||
/// <para>When enumerating peer groups, PeerGetNextItem returns an array of pointers to PEER_NAME_PAIR structures.</para>
|
||||
/// <para>Call PeerEndEnumeration to free the peer enumeration handle when it is no longer required.</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerenumgroups NOT_BUILD_WINDOWS_DEPRECATE HRESULT PeerEnumGroups(
|
||||
// PCWSTR pwzIdentity, HPEERENUM *phPeerEnum );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerEnumGroups")]
|
||||
public static extern HRESULT PeerEnumGroups([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity, out SafeHPEERENUM phPeerEnum);
|
||||
|
||||
/// <summary>The <c>PeerEnumGroups</c> function enumerates all the peer groups associated with a specific peer identity.</summary>
|
||||
/// <param name="pwzIdentity">Specifies the peer identity to enumerate groups for.</param>
|
||||
/// <returns>
|
||||
/// The peer enumeration that contains the list of peer groups that the specified identity is a member of, with each item
|
||||
/// represented as a pointer to a PEER_NAME_PAIR structure.
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerenumgroups NOT_BUILD_WINDOWS_DEPRECATE HRESULT PeerEnumGroups(
|
||||
// PCWSTR pwzIdentity, HPEERENUM *phPeerEnum );
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerEnumGroups")]
|
||||
public static IEnumerable<PEER_NAME_PAIR> PeerEnumGroups([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity) =>
|
||||
PeerEnum<PEER_NAME_PAIR>(() => { PeerEnumGroups(pwzIdentity, out var h).ThrowIfFailed(); return h; });
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerEnumIdentities</c> function creates and returns a peer enumeration handle used to enumerate all the peer identities
|
||||
/// that belong to a specific user.
|
||||
/// </summary>
|
||||
/// <param name="phPeerEnum">
|
||||
/// Receives a handle to the peer enumeration that contains the list of peer identities, with each item represented as a pointer to
|
||||
/// a PEER_NAME_PAIR structure. Pass this handle to PeerGetNextItem to retrieve the items; when finished, call PeerEndEnumeration to
|
||||
/// release the memory.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is S_OK. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Once the application has obtained the peer enumeration handle, use PeerGetNextItem and PeerGetItemCount to enumerate the peer identities.
|
||||
/// </para>
|
||||
/// <para>When enumerating peer identities, PeerGetNextItem returns an array of pointers to PEER_NAME_PAIR structures.</para>
|
||||
/// <para>Call PeerEndEnumeration to free the enumeration handle when it is no longer required.</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerenumidentities NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerEnumIdentities( HPEERENUM *phPeerEnum );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerEnumIdentities")]
|
||||
public static extern HRESULT PeerEnumIdentities(out SafeHPEERENUM phPeerEnum);
|
||||
|
||||
/// <summary>The <c>PeerEnumIdentities</c> function enumerates all the peer identities that belong to a specific user.</summary>
|
||||
/// <returns>
|
||||
/// The peer enumeration that contains the list of peer identities, with each item represented as a pointer to a PEER_NAME_PAIR
|
||||
/// structure. ///
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peerenumidentities NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerEnumIdentities( HPEERENUM *phPeerEnum );
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerEnumIdentities")]
|
||||
public static IEnumerable<PEER_NAME_PAIR> PeerEnumIdentities() =>
|
||||
PeerEnum<PEER_NAME_PAIR>(() => { PeerEnumIdentities(out var h).ThrowIfFailed(); return h; });
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerIdentityCreate</c> function creates a new peer identity and returns its name. The name of the peer identity must be
|
||||
/// passed in all subsequent calls to the Peer Identity Manager, Peer Grouping, or PNRP functions that operate on behalf of the peer
|
||||
/// identity. The peer identity name specifies which peer identity is being used.
|
||||
/// </summary>
|
||||
/// <param name="pwzClassifier">
|
||||
/// Specifies the classifier to append to the published peer identity name. This string is a Unicode string, and can be <c>NULL</c>.
|
||||
/// This string can only be 150 characters long, including the <c>NULL</c> terminator.
|
||||
/// </param>
|
||||
/// <param name="pwzFriendlyName">
|
||||
/// Specifies the friendly name of the peer identity. This is a Unicode string, and can be <c>NULL</c>. This string can only be 256
|
||||
/// characters long, including the <c>NULL</c> terminator. If pwzFriendlyName is <c>NULL</c>, the name of the identity is the
|
||||
/// friendly name. The friendly name is optional, and it does not have to be unique.
|
||||
/// </param>
|
||||
/// <param name="hCryptProv">
|
||||
/// <para>
|
||||
/// Handle to the cryptographic service provider (CSP) that contains an AT_KEYEXCHANGE key pair of at least 1024 bits in length.
|
||||
/// This key pair is used as the basis for a new peer identity. If hCryptProv is zero (0), a new key pair is generated for the peer identity.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// <c>Note</c> The Identity Manager API does not support a CSP that has user protected keys. If a CSP that has user protected keys
|
||||
/// is used, <c>PeerIdentityCreate</c> returns <c>E_INVALIDARG</c>.
|
||||
/// </para>
|
||||
/// </param>
|
||||
/// <param name="ppwzIdentity">
|
||||
/// Receives a pointer to the name of an peer identity that is created. This name must be used in all subsequent calls to the Peer
|
||||
/// Identity Manager, Peer Grouping, or PNRP functions that operate on behalf of the peer identity. Returns <c>NULL</c> if the peer
|
||||
/// identity cannot be created.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>ERROR_INVALID_HANDLE</term>
|
||||
/// <term>The handle to the key specified by hCryptProv is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_ALREADY_EXISTS</term>
|
||||
/// <term>The peer identity already exists. Only occurs if an peer identity based on the specified key and classifier already exists.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NO_KEY_ACCESS</term>
|
||||
/// <term>
|
||||
/// Access to the peer identity or peer group keys is denied. Typically, this is caused by an incorrect access control list (ACL)
|
||||
/// for the folder that contains the user or computer keys. This can happen when the ACL has been reset manually.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_TOO_MANY_IDENTITIES</term>
|
||||
/// <term>The peer identity cannot be created because there are too many peer identities.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// The key pair and the classifier are used to generate the peer name of a new peer identity. After an peer identity is created, it
|
||||
/// is automatically stored on the disk.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// The name of the identity should be freed by using PeerFreeData. This does not delete the peer identity. To delete the identity,
|
||||
/// use PeerIdentityDelete function.
|
||||
/// </para>
|
||||
/// <para>If hCryptProv is not <c>NULL</c>, it can be released by using CryptReleaseContext after the call returns.</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitycreate NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityCreate( PCWSTR pwzClassifier, PCWSTR pwzFriendlyName, HCRYPTPROV hCryptProv, PWSTR *ppwzIdentity );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityCreate")]
|
||||
public static extern HRESULT PeerIdentityCreate([Optional, MarshalAs(UnmanagedType.LPWStr)] string pwzClassifier,
|
||||
[Optional, MarshalAs(UnmanagedType.LPWStr)] string pwzFriendlyName, [In, Optional] HCRYPTPROV hCryptProv,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzIdentity);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerIdentityDelete</c> function permanently deletes a peer identity. This includes removing all certificates, private
|
||||
/// keys, and all group information associated with a specified peer identity.
|
||||
/// </summary>
|
||||
/// <param name="pwzIdentity">Specifies a peer identity to delete.</param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>The parameter is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_GROUPS_EXIST</term>
|
||||
/// <term>
|
||||
/// The peer identity cannot be deleted because it has peer groups associated with it. All peer groups associated with the specified
|
||||
/// identity must be deleted by using PeerGroupDelete before a call to PeerIdentityDelete can succeed.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>A peer identity that matches the specified name cannot be found.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitydelete NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityDelete( PCWSTR pwzIdentity );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityDelete")]
|
||||
public static extern HRESULT PeerIdentityDelete([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerIdentityExport</c> function allows a user to export one peer identity. The user can then transfer the peer identity
|
||||
/// to a different computer.
|
||||
/// </summary>
|
||||
/// <param name="pwzIdentity">Specifies the peer identity to export. This parameter is required and does not have a default value.</param>
|
||||
/// <param name="pwzPassword">
|
||||
/// Specifies the password to use to encrypt the peer identity. This parameter cannot be <c>NULL</c>. This password must also be
|
||||
/// used to import the peer identity, or the import operation fails.
|
||||
/// </param>
|
||||
/// <param name="ppwzExportXML">
|
||||
/// Receives a pointer to the exported peer identity in XML format. If the export operation is successful, the application must free
|
||||
/// ppwzExportXML by calling PeerFreeData.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NO_KEY_ACCESS</term>
|
||||
/// <term>
|
||||
/// Access to the peer identity or peer group keys was denied. This is typically caused by an incorrect access control list (ACL)
|
||||
/// for the folder that contains the user or computer keys. This can happen when the ACL has been manually reset.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>The specified peer identity does not exist.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// Peer-to-peer group membership credentials are not exported. Only one peer identity is exported. An exported peer identity can be
|
||||
/// imported on another computer by using PeerIdentityImport.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// Exporting a peer identity does not remove it from a local ccmputer, it makes a copy of it. The copy can be used to backup and
|
||||
/// restore a peer identity.
|
||||
/// </para>
|
||||
/// <para>The XML fragment used by <c>PeerIdentityExport</c> is as follows:</para>
|
||||
/// <para>
|
||||
/// <code><PEERIDENTITYEXPORT VERSION="1.0"> <PEERNAME> <!-- UTF-8 encoded peer name of the identity --> </PEERNAME> <DATA xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64"> <!-- base64 encoded / PFX encoded and encrypted IDC with the private key --> </DATA> </PEERIDENTITYEXPORT></code>
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentityexport NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityExport( PCWSTR pwzIdentity, PCWSTR pwzPassword, PWSTR *ppwzExportXML );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityExport")]
|
||||
public static extern HRESULT PeerIdentityExport([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity, [MarshalAs(UnmanagedType.LPWStr)] string pwzPassword,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzExportXML);
|
||||
|
||||
/// <summary>The <c>PeerIdentityGetCryptKey</c> function retrieves a handle to a cryptographic service provider (CSP).</summary>
|
||||
/// <param name="pwzIdentity">Specifies the peer identity to retrieve the key pair for.</param>
|
||||
/// <param name="phCryptProv">
|
||||
/// Receives a pointer to the handle of the cryptographic service provider (CSP) that contains an AT_KEYEXCHANGE RSA key pair.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NO_KEY_ACCESS</term>
|
||||
/// <term>
|
||||
/// Access to the peer identity or peer group keys is denied. Typically, this is caused by an incorrect access control list (ACL)
|
||||
/// for the folder that contains the user or computer keys. This can happen when the ACL has been manually reset.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>An identity that matches the specified name cannot be found.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>The key can be retrieved by calling CryptGetUserKey.</para>
|
||||
/// <para>When the handle is not required anymore, the application is responsible for releasing the handle by using <see cref="CryptReleaseContext"/>.</para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitygetcryptkey NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityGetCryptKey( PCWSTR pwzIdentity, HCRYPTPROV *phCryptProv );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityGetCryptKey")]
|
||||
public static extern HRESULT PeerIdentityGetCryptKey([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity, out SafeHCRYPTPROV phCryptProv);
|
||||
|
||||
/// <summary>The <c>PeerIdentityGetDefault</c> function retrieves the default peer name set for the current user.</summary>
|
||||
/// <param name="ppwzPeerName">
|
||||
/// Pointer to the address of a zero-terminated Unicode string that contains the default name of the current user.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>A peer identity that matches the specified name cannot be found.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitygetdefault NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityGetDefault( PWSTR *ppwzPeerName );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityGetDefault")]
|
||||
public static extern HRESULT PeerIdentityGetDefault([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzPeerName);
|
||||
|
||||
/// <summary>The <c>PeerIdentityGetFriendlyName</c> function returns the friendly name of the peer identity.</summary>
|
||||
/// <param name="pwzIdentity">Specifies the peer identity to obtain a friendly name.</param>
|
||||
/// <param name="ppwzFriendlyName">
|
||||
/// Receives a pointer to the friendly name. When ppwzFriendlyName is not required anymore, the application is responsible for
|
||||
/// freeing this string by calling PeerFreeData.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NO_KEY_ACCESS</term>
|
||||
/// <term>
|
||||
/// Access to the peer identity or peer group keys is denied. Typically, this is caused by an incorrect access control list (ACL)
|
||||
/// for the folder that contains the user or computer keys. This can happen when the ACL has been reset manually.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>A peer identity that matches the specified name cannot be found.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitygetfriendlyname NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityGetFriendlyName( PCWSTR pwzIdentity, PWSTR *ppwzFriendlyName );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityGetFriendlyName")]
|
||||
public static extern HRESULT PeerIdentityGetFriendlyName([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzFriendlyName);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerIdentityGetXML</c> function returns a description of the peer identity, which can then be passed to third parties and
|
||||
/// used to invite a peer identity into a peer group. This information is returned as an XML fragment.
|
||||
/// </summary>
|
||||
/// <param name="pwzIdentity">
|
||||
/// Specifies the peer identity to retrieve peer identity information for. When this parameter is passed as <c>NULL</c>, a "default"
|
||||
/// identity will be generated for the user by the peer infrastructure.
|
||||
/// </param>
|
||||
/// <param name="ppwzIdentityXML">
|
||||
/// Pointer to a pointer to a Unicode string that contains the XML fragment. When ppwzIdentityXML is no longer required, the
|
||||
/// application is responsible for freeing this string by calling PeerFreeData.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is S_OK. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_HANDLE</term>
|
||||
/// <term>The handle to the identity is invalid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>The XML fragment returned has the following structure:</para>
|
||||
/// <para>
|
||||
/// <code><PEERIDENTITYINFO VERSION="1.0"> <IDC xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64"> Base 64 encoded certificate. </IDC> </PEERIDENTITYINFO></code>
|
||||
/// </para>
|
||||
/// <para>This XML fragment is used when creating an invitation to join a group.</para>
|
||||
/// <para>
|
||||
/// Applications are not allowed to add tags within the <c>PEERIDENTITYINFO</c> tag or modify this XML fragment in any way.
|
||||
/// Applications are allowed to incorporate this XML fragment into other XML documents, but must strip out all application-specific
|
||||
/// XML before passing this fragment to the PeerGroupCreateInvitation.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitygetxml NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityGetXML( PCWSTR pwzIdentity, PWSTR *ppwzIdentityXML );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityGetXML")]
|
||||
public static extern HRESULT PeerIdentityGetXML([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzIdentityXML);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerIdentityImport</c> function imports one peer identity. If the peer identity exists on a computer,
|
||||
/// <c>PEER_E_ALREADY_EXISTS</c> is returned.
|
||||
/// </summary>
|
||||
/// <param name="pwzImportXML">
|
||||
/// Pointer to the XML format peer identity to import, which is returned by PeerIdentityExport. This binary data must match the
|
||||
/// exported data byte-for-byte. The XML must remain valid XML with no extra characters.
|
||||
/// </param>
|
||||
/// <param name="pwzPassword">
|
||||
/// Specifies the password to use to de-crypt a peer identity. The password must be identical to the password supplied to
|
||||
/// PeerIdentityExport. This parameter cannot be <c>NULL</c>.
|
||||
/// </param>
|
||||
/// <param name="ppwzIdentity">
|
||||
/// Pointer to a string that represents a peer identity that is imported. If the import operation is successful, the application
|
||||
/// must free ppwzIdentity by calling PeerFreeData.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid, or the XML data in ppwzImportXML has been tampered with.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_ALREADY_EXISTS</term>
|
||||
/// <term>The peer identity already exists on this computer.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NO_KEY_ACCESS</term>
|
||||
/// <term>
|
||||
/// Access to the peer identity or peer group keys is denied. Typically, this is caused by an incorrect access control list (ACL)
|
||||
/// for the folder that contains the user or computer keys. This can happen when the ACL has been reset manually.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
/// <remarks>
|
||||
/// <para>The XML fragment used by <c>PeerIdentityImport</c> is as follows:</para>
|
||||
/// <para>
|
||||
/// <code><PEERIDENTITYEXPORT VERSION="1.0"> <IDENTITY> <!-- UTF-8 encoded peer name of the identity --> </IDENTITY> <IDENTITYDATA xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64"> <!-- base64 encoded / PFX encoded and encrypted IDC with the private key --> </IDENTTYDATA> </PEERIDENTITYEXPORT></code>
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentityimport NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentityImport( PCWSTR pwzImportXML, PCWSTR pwzPassword, PWSTR *ppwzIdentity );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentityImport")]
|
||||
public static extern HRESULT PeerIdentityImport([MarshalAs(UnmanagedType.LPWStr)] string pwzImportXML, [MarshalAs(UnmanagedType.LPWStr)] string pwzPassword,
|
||||
[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(PeerStringMarshaler))] out string ppwzIdentity);
|
||||
|
||||
/// <summary>
|
||||
/// The <c>PeerIdentitySetFriendlyName</c> function modifies the friendly name for a specified peer identity. The friendly name is
|
||||
/// the human-readable name.
|
||||
/// </summary>
|
||||
/// <param name="pwzIdentity">Specifies a peer identity to modify.</param>
|
||||
/// <param name="pwzFriendlyName">
|
||||
/// Specifies a new friendly name. Specify <c>NULL</c> or an empty string to reset a friendly name to the default value, which is
|
||||
/// the Unicode version of the peer name.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>If the function call succeeds, the return value is <c>S_OK</c>. Otherwise, it returns one of the following values.</para>
|
||||
/// <list type="table">
|
||||
/// <listheader>
|
||||
/// <term>Return code</term>
|
||||
/// <term>Description</term>
|
||||
/// </listheader>
|
||||
/// <item>
|
||||
/// <term>E_INVALIDARG</term>
|
||||
/// <term>One of the parameters is not valid.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>E_OUTOFMEMORY</term>
|
||||
/// <term>There is not enough memory to perform the specified operation.</term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NO_KEY_ACCESS</term>
|
||||
/// <term>
|
||||
/// Access to the peer identity or peer group keys is denied. Typically, this is caused by an incorrect access control list (ACL)
|
||||
/// for the folder that contains the user or computer keys. This can happen when the ACL has been reset manually.
|
||||
/// </term>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term>PEER_E_NOT_FOUND</term>
|
||||
/// <term>A peer identity that matches a specified name cannot be found.</term>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </returns>
|
||||
// https://docs.microsoft.com/en-us/windows/win32/api/p2p/nf-p2p-peeridentitysetfriendlyname NOT_BUILD_WINDOWS_DEPRECATE HRESULT
|
||||
// PeerIdentitySetFriendlyName( PCWSTR pwzIdentity, PCWSTR pwzFriendlyName );
|
||||
[DllImport(Lib_P2P, SetLastError = false, ExactSpelling = true)]
|
||||
[PInvokeData("p2p.h", MSDNShortId = "NF:p2p.PeerIdentitySetFriendlyName")]
|
||||
public static extern HRESULT PeerIdentitySetFriendlyName([MarshalAs(UnmanagedType.LPWStr)] string pwzIdentity, [Optional, MarshalAs(UnmanagedType.LPWStr)] string pwzFriendlyName);
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<ProjectExtensions>
|
||||
<SupportedDlls>P2P.dll</SupportedDlls>
|
||||
</ProjectExtensions>
|
||||
<PropertyGroup>
|
||||
<Description>PInvoke API (methods, structures and constants) imported from Windows P2P.dll.</Description>
|
||||
<AssemblyTitle>$(AssemblyName)</AssemblyTitle>
|
||||
<TargetFrameworks>net20;net35;net40;net45;netstandard2.0;netcoreapp2.0;netcoreapp2.1;netcoreapp3.0;netcoreapp3.1</TargetFrameworks>
|
||||
<AssemblyName>Vanara.PInvoke.P2P</AssemblyName>
|
||||
<PackageId>$(AssemblyName)</PackageId>
|
||||
<PackageTags>pinvoke;vanara;net-extensions;interop;P2P</PackageTags>
|
||||
<PackageReleaseNotes>Currently implements:
|
||||
|
||||
Functions
|
||||
DllMain, PeerCollabAddContact, PeerCollabAsyncInviteContact, PeerCollabAsyncInviteEndpoint, PeerCollabCancelInvitation, PeerCollabCloseHandle, PeerCollabDeleteContact, PeerCollabDeleteEndpointData, PeerCollabDeleteObject, PeerCollabEnumApplicationRegistrationInfo, PeerCollabEnumApplications, PeerCollabEnumContacts, PeerCollabEnumEndpoints, PeerCollabEnumObjects, PeerCollabEnumPeopleNearMe, PeerCollabExportContact, PeerCollabGetAppLaunchInfo, PeerCollabGetApplicationRegistrationInfo, PeerCollabGetContact, PeerCollabGetEndpointName, PeerCollabGetEventData, PeerCollabGetInvitationResponse, PeerCollabGetPresenceInfo, PeerCollabGetSigninOptions, PeerCollabInviteContact, PeerCollabInviteEndpoint, PeerCollabParseContact, PeerCollabQueryContactData, PeerCollabRefreshEndpointData, PeerCollabRegisterApplication, PeerCollabRegisterEvent, PeerCollabSetEndpointName, PeerCollabSetObject, PeerCollabSetPresenceInfo, PeerCollabShutdown, PeerCollabSignin, PeerCollabSignout, PeerCollabStartup, PeerCollabSubscribeEndpointData, PeerCollabUnregisterApplication, PeerCollabUnregisterEvent, PeerCollabUnsubscribeEndpointData, PeerCollabUpdateContact, PeerCreatePeerName, PeerEndEnumeration, PeerEnumGroups, PeerEnumIdentities, PeerFreeData, PeerGetItemCount, PeerGetNextItem, PeerGraphShutdown, PeerGraphStartup, PeerGroupAddRecord, PeerGroupClose, PeerGroupCloseDirectConnection, PeerGroupConnect, PeerGroupConnectByAddress, PeerGroupCreate, PeerGroupCreateInvitation, PeerGroupCreatePasswordInvitation, PeerGroupDelete, PeerGroupDeleteRecord, PeerGroupEnumConnections, PeerGroupEnumMembers, PeerGroupEnumRecords, PeerGroupExportConfig, PeerGroupExportDatabase, PeerGroupGetEventData, PeerGroupGetProperties, PeerGroupGetRecord, PeerGroupGetStatus, PeerGroupHandlePowerEvent, PeerGroupImportConfig, PeerGroupImportDatabase, PeerGroupIssueCredentials, PeerGroupJoin, PeerGroupOpen, PeerGroupOpenDirectConnection, PeerGroupParseInvitation, PeerGroupPasswordJoin, PeerGroupPeerTimeToUniversalTime, PeerGroupRegisterEvent, PeerGroupResumePasswordAuthentication, PeerGroupSearchRecords, PeerGroupSendData, PeerGroupSetProperties, PeerGroupShutdown, PeerGroupStartup, PeerGroupUniversalTimeToPeerTime, PeerGroupUnregisterEvent, PeerGroupUpdateRecord, PeerHostNameToPeerName, PeerIdentityCreate, PeerIdentityDelete, PeerIdentityExport, PeerIdentityGetCert, PeerIdentityGetCryptKey, PeerIdentityGetDefault, PeerIdentityGetFriendlyName, PeerIdentityGetXML, PeerIdentityImport, PeerIdentitySetFriendlyName, PeerNameToPeerHostName, PeerPnrpEndResolve, PeerPnrpGetCloudInfo, PeerPnrpGetEndpoint, PeerPnrpRegister, PeerPnrpResolve, PeerPnrpShutdown, PeerPnrpStartResolve, PeerPnrpStartup, PeerPnrpUnregister, PeerPnrpUpdateRegistration, PeerSSPAddCredentials, PeerSSPRemoveCredentials
|
||||
|
||||
Structures
|
||||
HPEEREVENT, HGRAPH, PEER_ADDRESS, PEER_APP_LAUNCH_INFO, PEER_APPLICATION, PEER_APPLICATION_REGISTRATION_INFO, PEER_COLLAB_EVENT_DATA, PEER_COLLAB_EVENT_REGISTRATION, PEER_CONNECTION_INFO, PEER_CONTACT, PEER_CREDENTIAL_INFO, PEER_DATA, PEER_ENDPOINT, PEER_EVENT_APPLICATION_CHANGED_DATA, PEER_EVENT_CONNECTION_CHANGE_DATA, PEER_EVENT_ENDPOINT_CHANGED_DATA, PEER_EVENT_INCOMING_DATA, PEER_EVENT_MEMBER_CHANGE_DATA, PEER_EVENT_NODE_CHANGE_DATA, PEER_EVENT_OBJECT_CHANGED_DATA, PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA, PEER_EVENT_PRESENCE_CHANGED_DATA, PEER_EVENT_RECORD_CHANGE_DATA, PEER_EVENT_REQUEST_STATUS_CHANGED_DATA, PEER_EVENT_SYNCHRONIZED_DATA, PEER_EVENT_WATCHLIST_CHANGED_DATA, PEER_GRAPH_EVENT_DATA, PEER_GRAPH_EVENT_REGISTRATION, PEER_GRAPH_PROPERTIES, PEER_GROUP_EVENT_DATA, PEER_GROUP_EVENT_REGISTRATION, PEER_GROUP_PROPERTIES, PEER_INVITATION, PEER_INVITATION_INFO, PEER_INVITATION_RESPONSE, PEER_MEMBER, PEER_NAME_PAIR, PEER_NODE_INFO, PEER_OBJECT, PEER_PEOPLE_NEAR_ME, PEER_PNRP_CLOUD_INFO, PEER_PNRP_ENDPOINT_INFO, PEER_PNRP_REGISTRATION_INFO, PEER_PRESENCE_INFO, PEER_RECORD, PEER_SECURITY_INTERFACE, PEER_VERSION_DATA, HPEERENUM, HGROUP
|
||||
|
||||
</PackageReleaseNotes>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Core\Vanara.Core.csproj" />
|
||||
<ProjectReference Include="..\Cryptography\Vanara.PInvoke.Cryptography.csproj" />
|
||||
<ProjectReference Include="..\Security\Vanara.PInvoke.Security.csproj" />
|
||||
<ProjectReference Include="..\Shared\Vanara.PInvoke.Shared.csproj" />
|
||||
<ProjectReference Include="..\Ws2_32\Vanara.PInvoke.Ws2_32.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -9004,6 +9004,257 @@ namespace Vanara.PInvoke
|
|||
/// <summary>The directory being processed is not empty</summary>
|
||||
public const int COPYENGINE_E_DIR_NOT_EMPTY = unchecked((int)0x8027003D);
|
||||
|
||||
/// <summary>The IPv6 protocol is not installed.</summary>
|
||||
public const int PEER_E_IPV6_NOT_INSTALLED = unchecked((int)0x80630001);
|
||||
|
||||
/// <summary>The component has not been initialized.</summary>
|
||||
public const int PEER_E_NOT_INITIALIZED = unchecked((int)0x80630002);
|
||||
|
||||
/// <summary>The required service cannot be started.</summary>
|
||||
public const int PEER_E_CANNOT_START_SERVICE = unchecked((int)0x80630003);
|
||||
|
||||
/// <summary>The P2P protocol is not licensed to run on this OS.</summary>
|
||||
public const int PEER_E_NOT_LICENSED = unchecked((int)0x80630004);
|
||||
|
||||
/// <summary>The graph handle is invalid.</summary>
|
||||
public const int PEER_E_INVALID_GRAPH = unchecked((int)0x80630010);
|
||||
|
||||
/// <summary>The graph database name has changed.</summary>
|
||||
public const int PEER_E_DBNAME_CHANGED = unchecked((int)0x80630011);
|
||||
|
||||
/// <summary>A graph with the same ID already exists.</summary>
|
||||
public const int PEER_E_DUPLICATE_GRAPH = unchecked((int)0x80630012);
|
||||
|
||||
/// <summary>The graph is not ready.</summary>
|
||||
public const int PEER_E_GRAPH_NOT_READY = unchecked((int)0x80630013);
|
||||
|
||||
/// <summary>The graph is shutting down.</summary>
|
||||
public const int PEER_E_GRAPH_SHUTTING_DOWN = unchecked((int)0x80630014);
|
||||
|
||||
/// <summary>The graph is still in use.</summary>
|
||||
public const int PEER_E_GRAPH_IN_USE = unchecked((int)0x80630015);
|
||||
|
||||
/// <summary>The graph database is corrupt.</summary>
|
||||
public const int PEER_E_INVALID_DATABASE = unchecked((int)0x80630016);
|
||||
|
||||
/// <summary>Too many attributes have been used.</summary>
|
||||
public const int PEER_E_TOO_MANY_ATTRIBUTES = unchecked((int)0x80630017);
|
||||
|
||||
/// <summary>The connection can not be found.</summary>
|
||||
public const int PEER_E_CONNECTION_NOT_FOUND = unchecked((int)0x80630103);
|
||||
|
||||
/// <summary>The peer attempted to connect to itself.</summary>
|
||||
public const int PEER_E_CONNECT_SELF = unchecked((int)0x80630106);
|
||||
|
||||
/// <summary>The peer is already listening for connections.</summary>
|
||||
public const int PEER_E_ALREADY_LISTENING = unchecked((int)0x80630107);
|
||||
|
||||
/// <summary>The node was not found.</summary>
|
||||
public const int PEER_E_NODE_NOT_FOUND = unchecked((int)0x80630108);
|
||||
|
||||
/// <summary>The Connection attempt failed.</summary>
|
||||
public const int PEER_E_CONNECTION_FAILED = unchecked((int)0x80630109);
|
||||
|
||||
/// <summary>The peer connection could not be authenticated.</summary>
|
||||
public const int PEER_E_CONNECTION_NOT_AUTHENTICATED = unchecked((int)0x8063010A);
|
||||
|
||||
/// <summary>The connection was refused.</summary>
|
||||
public const int PEER_E_CONNECTION_REFUSED = unchecked((int)0x8063010B);
|
||||
|
||||
/// <summary>The peer name classifier is too long.</summary>
|
||||
public const int PEER_E_CLASSIFIER_TOO_LONG = unchecked((int)0x80630201);
|
||||
|
||||
/// <summary>The maximum number of identities have been created.</summary>
|
||||
public const int PEER_E_TOO_MANY_IDENTITIES = unchecked((int)0x80630202);
|
||||
|
||||
/// <summary>Unable to access a key.</summary>
|
||||
public const int PEER_E_NO_KEY_ACCESS = unchecked((int)0x80630203);
|
||||
|
||||
/// <summary>The group already exists.</summary>
|
||||
public const int PEER_E_GROUPS_EXIST = unchecked((int)0x80630204);
|
||||
|
||||
/// <summary>The requested record could not be found.</summary>
|
||||
public const int PEER_E_RECORD_NOT_FOUND = unchecked((int)0x80630301);
|
||||
|
||||
/// <summary>Access to the database was denied.</summary>
|
||||
public const int PEER_E_DATABASE_ACCESSDENIED = unchecked((int)0x80630302);
|
||||
|
||||
/// <summary>The Database could not be initialized.</summary>
|
||||
public const int PEER_E_DBINITIALIZATION_FAILED = unchecked((int)0x80630303);
|
||||
|
||||
/// <summary>The record is too big.</summary>
|
||||
public const int PEER_E_MAX_RECORD_SIZE_EXCEEDED = unchecked((int)0x80630304);
|
||||
|
||||
/// <summary>The database already exists.</summary>
|
||||
public const int PEER_E_DATABASE_ALREADY_PRESENT = unchecked((int)0x80630305);
|
||||
|
||||
/// <summary>The database could not be found.</summary>
|
||||
public const int PEER_E_DATABASE_NOT_PRESENT = unchecked((int)0x80630306);
|
||||
|
||||
/// <summary>The identity could not be found.</summary>
|
||||
public const int PEER_E_IDENTITY_NOT_FOUND = unchecked((int)0x80630401);
|
||||
|
||||
/// <summary>The event handle could not be found.</summary>
|
||||
public const int PEER_E_EVENT_HANDLE_NOT_FOUND = unchecked((int)0x80630501);
|
||||
|
||||
/// <summary>Invalid search.</summary>
|
||||
public const int PEER_E_INVALID_SEARCH = unchecked((int)0x80630601);
|
||||
|
||||
/// <summary>The search attributes are invalid.</summary>
|
||||
public const int PEER_E_INVALID_ATTRIBUTES = unchecked((int)0x80630602);
|
||||
|
||||
/// <summary>The invitation is not trusted.</summary>
|
||||
public const int PEER_E_INVITATION_NOT_TRUSTED = unchecked((int)0x80630701);
|
||||
|
||||
/// <summary>The certchain is too long.</summary>
|
||||
public const int PEER_E_CHAIN_TOO_LONG = unchecked((int)0x80630703);
|
||||
|
||||
/// <summary>The time period is invalid.</summary>
|
||||
public const int PEER_E_INVALID_TIME_PERIOD = unchecked((int)0x80630705);
|
||||
|
||||
/// <summary>A circular cert chain was detected.</summary>
|
||||
public const int PEER_E_CIRCULAR_CHAIN_DETECTED = unchecked((int)0x80630706);
|
||||
|
||||
/// <summary>The certstore is corrupted.</summary>
|
||||
public const int PEER_E_CERT_STORE_CORRUPTED = unchecked((int)0x80630801);
|
||||
|
||||
/// <summary>The specified PNRP cloud does not exist.</summary>
|
||||
public const int PEER_E_NO_CLOUD = unchecked((int)0x80631001);
|
||||
|
||||
/// <summary>The cloud name is ambiguous.</summary>
|
||||
public const int PEER_E_CLOUD_NAME_AMBIGUOUS = unchecked((int)0x80631005);
|
||||
|
||||
/// <summary>The record is invalid.</summary>
|
||||
public const int PEER_E_INVALID_RECORD = unchecked((int)0x80632010);
|
||||
|
||||
/// <summary>Not authorized.</summary>
|
||||
public const int PEER_E_NOT_AUTHORIZED = unchecked((int)0x80632020);
|
||||
|
||||
/// <summary>The password does not meet policy requirements.</summary>
|
||||
public const int PEER_E_PASSWORD_DOES_NOT_MEET_POLICY = unchecked((int)0x80632021);
|
||||
|
||||
/// <summary>The record validation has been deferred.</summary>
|
||||
public const int PEER_E_DEFERRED_VALIDATION = unchecked((int)0x80632030);
|
||||
|
||||
/// <summary>The group properties are invalid.</summary>
|
||||
public const int PEER_E_INVALID_GROUP_PROPERTIES = unchecked((int)0x80632040);
|
||||
|
||||
/// <summary>The peername is invalid.</summary>
|
||||
public const int PEER_E_INVALID_PEER_NAME = unchecked((int)0x80632050);
|
||||
|
||||
/// <summary>The classifier is invalid.</summary>
|
||||
public const int PEER_E_INVALID_CLASSIFIER = unchecked((int)0x80632060);
|
||||
|
||||
/// <summary>The friendly name is invalid.</summary>
|
||||
public const int PEER_E_INVALID_FRIENDLY_NAME = unchecked((int)0x80632070);
|
||||
|
||||
/// <summary>Invalid role property.</summary>
|
||||
public const int PEER_E_INVALID_ROLE_PROPERTY = unchecked((int)0x80632071);
|
||||
|
||||
/// <summary>Invalid classifier property.</summary>
|
||||
public const int PEER_E_INVALID_CLASSIFIER_PROPERTY = unchecked((int)0x80632072);
|
||||
|
||||
/// <summary>Invalid record expiration.</summary>
|
||||
public const int PEER_E_INVALID_RECORD_EXPIRATION = unchecked((int)0x80632080);
|
||||
|
||||
/// <summary>Invalid credential info.</summary>
|
||||
public const int PEER_E_INVALID_CREDENTIAL_INFO = unchecked((int)0x80632081);
|
||||
|
||||
/// <summary>Invalid credential.</summary>
|
||||
public const int PEER_E_INVALID_CREDENTIAL = unchecked((int)0x80632082);
|
||||
|
||||
/// <summary>Invalid record size.</summary>
|
||||
public const int PEER_E_INVALID_RECORD_SIZE = unchecked((int)0x80632083);
|
||||
|
||||
/// <summary>Unsupported version.</summary>
|
||||
public const int PEER_E_UNSUPPORTED_VERSION = unchecked((int)0x80632090);
|
||||
|
||||
/// <summary>The group is not ready.</summary>
|
||||
public const int PEER_E_GROUP_NOT_READY = unchecked((int)0x80632091);
|
||||
|
||||
/// <summary>The group is still in use.</summary>
|
||||
public const int PEER_E_GROUP_IN_USE = unchecked((int)0x80632092);
|
||||
|
||||
/// <summary>The group is invalid.</summary>
|
||||
public const int PEER_E_INVALID_GROUP = unchecked((int)0x80632093);
|
||||
|
||||
/// <summary>No members were found.</summary>
|
||||
public const int PEER_E_NO_MEMBERS_FOUND = unchecked((int)0x80632094);
|
||||
|
||||
/// <summary>There are no member connections.</summary>
|
||||
public const int PEER_E_NO_MEMBER_CONNECTIONS = unchecked((int)0x80632095);
|
||||
|
||||
/// <summary>Unable to listen.</summary>
|
||||
public const int PEER_E_UNABLE_TO_LISTEN = unchecked((int)0x80632096);
|
||||
|
||||
/// <summary>The identity does not exist.</summary>
|
||||
public const int PEER_E_IDENTITY_DELETED = unchecked((int)0x806320A0);
|
||||
|
||||
/// <summary>The service is not available.</summary>
|
||||
public const int PEER_E_SERVICE_NOT_AVAILABLE = unchecked((int)0x806320A1);
|
||||
|
||||
/// <summary>THe contact could not be found.</summary>
|
||||
public const int PEER_E_CONTACT_NOT_FOUND = unchecked((int)0x80636001);
|
||||
|
||||
/// <summary>The graph data was created.</summary>
|
||||
public const int PEER_S_GRAPH_DATA_CREATED = unchecked((int)0x00630001);
|
||||
|
||||
/// <summary>There is not more event data.</summary>
|
||||
public const int PEER_S_NO_EVENT_DATA = unchecked((int)0x00630002);
|
||||
|
||||
/// <summary>The graph is already connect.</summary>
|
||||
public const int PEER_S_ALREADY_CONNECTED = unchecked((int)0x00632000);
|
||||
|
||||
/// <summary>The subscription already exists.</summary>
|
||||
public const int PEER_S_SUBSCRIPTION_EXISTS = unchecked((int)0x00636000);
|
||||
|
||||
/// <summary>No connectivity.</summary>
|
||||
public const int PEER_S_NO_CONNECTIVITY = unchecked((int)0x00630005);
|
||||
|
||||
/// <summary>Already a member.</summary>
|
||||
public const int PEER_S_ALREADY_A_MEMBER = unchecked((int)0x00630006);
|
||||
|
||||
/// <summary>The peername could not be converted to a DNS pnrp name.</summary>
|
||||
public const int PEER_E_CANNOT_CONVERT_PEER_NAME = unchecked((int)0x80634001);
|
||||
|
||||
/// <summary>Invalid peer host name.</summary>
|
||||
public const int PEER_E_INVALID_PEER_HOST_NAME = unchecked((int)0x80634002);
|
||||
|
||||
/// <summary>No more data could be found.</summary>
|
||||
public const int PEER_E_NO_MORE = unchecked((int)0x80634003);
|
||||
|
||||
/// <summary>The existing peer name is already registered.</summary>
|
||||
public const int PEER_E_PNRP_DUPLICATE_PEER_NAME = unchecked((int)0x80634005);
|
||||
|
||||
/// <summary>The app invite request was cancelled by the user.</summary>
|
||||
public const int PEER_E_INVITE_CANCELLED = unchecked((int)0x80637000);
|
||||
|
||||
/// <summary>No response of the invite was received.</summary>
|
||||
public const int PEER_E_INVITE_RESPONSE_NOT_AVAILABLE = unchecked((int)0x80637001);
|
||||
|
||||
/// <summary>User is not signed into serverless presence.</summary>
|
||||
public const int PEER_E_NOT_SIGNED_IN = unchecked((int)0x80637003);
|
||||
|
||||
/// <summary>The user declined the privacy policy prompt.</summary>
|
||||
public const int PEER_E_PRIVACY_DECLINED = unchecked((int)0x80637004);
|
||||
|
||||
/// <summary>A timeout occurred.</summary>
|
||||
public const int PEER_E_TIMEOUT = unchecked((int)0x80637005);
|
||||
|
||||
/// <summary>The address is invalid.</summary>
|
||||
public const int PEER_E_INVALID_ADDRESS = unchecked((int)0x80637007);
|
||||
|
||||
/// <summary>A required firewall exception is disabled.</summary>
|
||||
public const int PEER_E_FW_EXCEPTION_DISABLED = unchecked((int)0x80637008);
|
||||
|
||||
/// <summary>The service is blocked by a firewall policy.</summary>
|
||||
public const int PEER_E_FW_BLOCKED_BY_POLICY = unchecked((int)0x80637009);
|
||||
|
||||
/// <summary>Firewall exceptions are disabled.</summary>
|
||||
public const int PEER_E_FW_BLOCKED_BY_SHIELDS_UP = unchecked((int)0x8063700A);
|
||||
|
||||
/// <summary>The user declined to enable the firewall exceptions.</summary>
|
||||
public const int PEER_E_FW_DECLINED = unchecked((int)0x8063700B);
|
||||
|
||||
/// <summary>The IAudioClient object is already initialized.</summary>
|
||||
public static readonly HRESULT AUDCLNT_E_ALREADY_INITIALIZED = AUDCLNT_ERR(0x002);
|
||||
|
|
|
@ -70,6 +70,7 @@ ntdsapi.dll | [Vanara.PInvoke.NTDSApi](https://github.com/dahall/Vanara/blob/mas
|
|||
ole32.dll, oleaut32.dll, propsys.dll | [Vanara.PInvoke.Ole](https://github.com/dahall/Vanara/blob/master/PInvoke/Ole/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/82%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.Ole?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.Ole?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.Ole)
|
||||
oleacc.dll | [Vanara.PInvoke.Accessibility](https://github.com/dahall/Vanara/blob/master/PInvoke/Accessibility/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/100%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.Accessibility?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.Accessibility?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.Accessibility)
|
||||
opcservices.dll | [Vanara.PInvoke.Opc](https://github.com/dahall/Vanara/blob/master/PInvoke/Opc/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/100%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.Opc?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.Opc?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.Opc)
|
||||
P2P.dll | [Vanara.PInvoke.P2P](https://github.com/dahall/Vanara/blob/master/PInvoke/P2P/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/87%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.P2P?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.P2P?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.P2P)
|
||||
pdh.dll | [Vanara.PInvoke.Pdh](https://github.com/dahall/Vanara/blob/master/PInvoke/Pdh/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/100%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.Pdh?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.Pdh?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.Pdh)
|
||||
powrprof.dll | [Vanara.PInvoke.PowrProf](https://github.com/dahall/Vanara/blob/master/PInvoke/PowrProf/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/100%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.PowrProf?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.PowrProf?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.PowrProf)
|
||||
ProjectedFSLib.dll | [Vanara.PInvoke.ProjectedFSLib](https://github.com/dahall/Vanara/blob/master/PInvoke/ProjectedFSLib/CorrelationReport.md) | ![Coverage](https://img.shields.io/badge/100%25-green.svg?style=flat-square) | [![Nuget](https://img.shields.io/nuget/v/Vanara.PInvoke.ProjectedFSLib?label=%20&logo=nuget&style=flat-square)![Nuget](https://img.shields.io/nuget/dt/Vanara.PInvoke.ProjectedFSLib?label=%20&style=flat-square)](https://www.nuget.org/packages/Vanara.PInvoke.ProjectedFSLib)
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="16.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<AssemblyName>UnitTest.PInvoke.P2P</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Core\Vanara.Core.csproj">
|
||||
<Project>{241f73ee-9298-45c9-b869-a045dff94c03}</Project>
|
||||
<Name>Vanara.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\PInvoke\P2P\Vanara.PInvoke.P2P.csproj">
|
||||
<Project>{200d7e57-452a-4a43-a96d-386f7c49e7ba}</Project>
|
||||
<Name>Vanara.PInvoke.P2P</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\PInvoke\Shared\Vanara.PInvoke.Shared.csproj">
|
||||
<Project>{a5e519e9-feba-4fe3-93a5-b8269bef72f4}</Project>
|
||||
<Name>Vanara.PInvoke.Shared</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\CSharpRunner\Shared.csproj">
|
||||
<Project>{a96cff10-0967-429a-8700-4a86c97c5603}</Project>
|
||||
<Name>Shared</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NUnit">
|
||||
<Version>3.12.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NUnit3TestAdapter">
|
||||
<Version>3.16.1</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="P2PTests.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,43 @@
|
|||
using NUnit.Framework;
|
||||
using NUnit.Framework.Internal;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using static Vanara.PInvoke.P2P;
|
||||
|
||||
namespace Vanara.PInvoke.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class P2PTests
|
||||
{
|
||||
[OneTimeSetUp]
|
||||
public void _Setup()
|
||||
{
|
||||
//PeerCollabStartup().ThrowIfFailed();
|
||||
//PeerPnrpStartup().ThrowIfFailed();
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public void _TearDown()
|
||||
{
|
||||
//PeerPnrpShutdown();
|
||||
//PeerCollabShutdown();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PeerCollabEnumApplicationsTest()
|
||||
{
|
||||
var e = PeerCollabEnumApplications();
|
||||
Assert.NotNull(e);
|
||||
e.WriteValues();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EndpointNameTest()
|
||||
{
|
||||
Assert.That(PeerCollabGetEndpointName(out var name), ResultIs.Successful);
|
||||
const string bogusName = "aksjdhflkajsdfkjahsdfkjhsdf";
|
||||
Assert.That(PeerCollabSetEndpointName(bogusName), ResultIs.Successful);
|
||||
Assert.That(PeerCollabSetEndpointName(name), ResultIs.Successful);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -42,6 +42,7 @@
|
|||
<dependency id="Vanara.PInvoke.NTDSApi" version="3.2.15" />
|
||||
<dependency id="Vanara.PInvoke.Ole" version="3.2.15" />
|
||||
<dependency id="Vanara.PInvoke.Opc" version="3.2.15" />
|
||||
<dependency id="Vanara.PInvoke.P2P" version="3.2.15" />
|
||||
<dependency id="Vanara.PInvoke.Pdh" version="3.2.15" />
|
||||
<dependency id="Vanara.PInvoke.PowrProf" version="3.2.15" />
|
||||
<dependency id="Vanara.PInvoke.Printing" version="3.2.15" />
|
||||
|
|
16
Vanara.sln
16
Vanara.sln
|
@ -239,6 +239,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vanara.PInvoke.DbgHelp", "P
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbgHelp", "UnitTests\PInvoke\DbgHelp\DbgHelp.csproj", "{F2C94926-224F-43AB-B351-C20C9B2D8656}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vanara.PInvoke.P2P", "PInvoke\P2P\Vanara.PInvoke.P2P.csproj", "{200D7E57-452A-4A43-A96D-386F7C49E7BA}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P2P", "UnitTests\PInvoke\P2P\P2P.csproj", "{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -765,6 +769,16 @@ Global
|
|||
{F2C94926-224F-43AB-B351-C20C9B2D8656}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F2C94926-224F-43AB-B351-C20C9B2D8656}.DebugNoTests|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F2C94926-224F-43AB-B351-C20C9B2D8656}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA}.DebugNoTests|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA}.DebugNoTests|Any CPU.Build.0 = Debug|Any CPU
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D}.DebugNoTests|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -867,6 +881,8 @@ Global
|
|||
{E753F3A4-2A0B-49E2-9611-4F35534B5F72} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
|
||||
{69604ECE-B123-4328-BEC3-996CCF22DB90} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
|
||||
{F2C94926-224F-43AB-B351-C20C9B2D8656} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
|
||||
{200D7E57-452A-4A43-A96D-386F7C49E7BA} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
|
||||
{BBA10B94-658F-4BD7-A3DD-AA39CDF9A68D} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {543FAC75-2AF1-4EF1-9609-B242B63FEED4}
|
||||
|
|
Loading…
Reference in New Issue