功能说明在这里。
我正在努力从 c# 中正确调用此函数。我正处于调用它的阶段,但它正在返回 E_INVALIDARG。
我已经设置如下...
[DllImport("p2p.dll", CharSet=CharSet.Unicode)]
internal static extern uint PeerGroupCreateInvitation(IntPtr hGroup, string pwzIdentityInfo, IntPtr pftExpiration, int cRoles, IntPtr pRoles, out string ppwzInvitation);
我最好的猜测是第 5 个参数“pRoles”。我应该向它发送一个指向代表角色类型的一两个 GUID 的指针。
PEER_GROUP_ROLE_ADMIN
PEER_GROUP_ROLE_MEMBER
我目前不知道如何从 c# 执行此操作。
在 C 中,这个参数在调用函数时看起来像这样......
..., (PEER_ROLE_ID*) &PEER_GROUP_ROLE_MEMBER, ...
PEER_ROLE_ID 看起来像 System.Guid 类型。PEER_GROUP_ROLE_MEMBER 看起来像实际的 GUID。(我可以从 p2p.dll 文件中得到这个吗?)
任何帮助将不胜感激......特别是因为互联网上此功能的信息接近零。
每个人的评论后的工作解决方案。
宣言:
[DllImport("p2p.dll")]
public static extern uint PeerGroupCreateInvitation(IntPtr hGroup, [MarshalAs(UnmanagedType.BStr)] string pwzIdentityInfo, int pftExpiration, int cRoles, ref Guid pRoles, out IntPtr ppwzInvitation);
来电:
uint hr = PeerGroupCreateInvitation(hGroup, identityInfo, 0, 1, ref PEER_GROUP_ROLE_MEMBER, out pInvitation);
...其中 PEER_GROUP_ROLE_MEMBER 是该角色的 System.Guid。
获得邀请:
string invitation = Marshal.PtrToStringAuto(pInvitation);