Bonjour,
je suis devant un problème de marshaling C/C#que je n'ai pas réussi à résoudre, j'ai besoin d'aide.
J'ai une structure C dans un DLL (dont je n'ai pas le code) qui est déclarée ainsi :
Côté C#, je l'ai marshalée ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
Côté C# un delgate reçoit en paramètre un pointeur sur la structure. La méthode du delegate est déclarée ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Le callback depuis C vers C# se passe bien, la structure est passée via le IntPTr "creds". Lorsque que je marshal la structure, la variable "cred" est coorectement initailisée, tout est ok.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
Mon problème est qu'à ce moment, je dois initialiser les membres "result" et "resultlen" de la structure. Et là je suis coïncé, ça la variable "cred" est une instance marshalée de la structure, or, je dois initialiser l'adresse de "result" afin que la DLL C puisse utiliser ce résultat.
Comment puis-je faire ?
J'ai tenté de calculer exactement les offsets de chaque membre et d'initialiser le membre "result" mais cela abouti à une erreur du typeSi quelqu'un pouvait me tirer de ce mauvais pas...modification de la mémoire protégée...

 

 
		
		 
        

 
			
			


 modifier une struct marshallée en C#
 modifier une struct marshallée en C#
				 Répondre avec citation
  Répondre avec citation

 
   
Partager