Description de la fonction here.Appel PeerGroupCreateInvitation de C#
Je me bats pour obtenir ce droit d'appeler cette fonction de C#. Je suis à un stade où je l'appelle mais il retourne E_INVALIDARG.
Je l'ai établi comme suit ...
[DllImport("p2p.dll", CharSet=CharSet.Unicode)]
internal static extern uint PeerGroupCreateInvitation(IntPtr hGroup, string pwzIdentityInfo, IntPtr pftExpiration, int cRoles, IntPtr pRoles, out string ppwzInvitation);
Ma meilleure estimation est le 5ème paramètre, « prolos ». Je suis censé lui envoyer un pointeur vers un ou deux GUID représentant le type de rôle.
PEER_GROUP_ROLE_ADMIN
PEER_GROUP_ROLE_MEMBER
Je n'ai aucune idée actuellement comment faire cela à partir de C#.
En C ce paramètre ressemble à ceci lorsque vous appelez la fonction ...
..., (PEER_ROLE_ID*) &PEER_GROUP_ROLE_MEMBER, ...
PEER_ROLE_ID ressemble à un type System.Guid. PEER_GROUP_ROLE_MEMBER ressemble au GUID réel. (Puis-je l'obtenir à partir du fichier p2p.dll?)
Toute aide serait grandement appréciée ... d'autant plus qu'il y a près de ZERO info sur cette fonction sur internet.
Solution de travail après les commentaires de tous.
Déclaration:
[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);
Appel:
uint hr = PeerGroupCreateInvitation(hGroup, identityInfo, 0, 1, ref PEER_GROUP_ROLE_MEMBER, out pInvitation);
... où PEER_GROUP_ROLE_MEMBER est le System.Guid pour ce rôle.
Obtenir l'invitation:
string invitation = Marshal.PtrToStringAuto(pInvitation);
sont paramètre que vous cRoles au nombre de GUIDs prolo? Et les pRoles ne devraient pas être une liste d'entiers pour représenter les guids. –