Attempted to read or write protected memory. This is often an indication that ot

damzz Messages postés 1 Date d'inscription vendredi 8 février 2002 Statut Membre Dernière intervention 17 septembre 2009 - 17 sept. 2009 à 16:55
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 17 sept. 2009 à 23:52
Bonjour,

J'ai créé une dll en C# (.NET 2.0 et 3.5) qui fait appel à des méthodes venant d'une librairie développée en C/C++.

Cette dernière est utilisée pour échanger des données à travers le web.

J'ai rendu la dll visible pour pouvoir l'instancier en VB6.

Lors de l'utilisation d'une des méthodes de la librairie, j'ai le message suivant:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.


Le problème se produit sous Vista

J'ai testé toute une série de choses:

* Ajout de la balise [SecurityPermission(SecurityAction.Assert, Unrestricted = true)]
* Supprimé toutes les optimisations de compilation
* Passé d'une version .NET 2 à 3.5


Voilà le code:

/// <summary>
/// Retourne le nom du fichier réponse
/// </summary>
/// 


/// <returns></returns>
[DllImport("CIS_Module.dll", EntryPoint = "cis_getResponseDocument")]
[SecurityPermission(SecurityAction.Assert, Unrestricted = true)]
private static extern string cis_getResponseDocument(IntPtr hdleConnection);



Existerait-il une bonne âme qui a déjà eu le même problème et qui aurait trouvé une solution, ou qui aurait un tuyau (ou plusieurs), une direction à me donner?

Merci pour votre aide.


Damzz

1 réponse

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 sept. 2009 à 23:52
Salut, il faudrait voir le prototype C++ il y a peut être une incohérence entre les types de la fonction C++ et ceux de la fonction managée.

Quel est le type de la chaine retournée par la fonction ? ANSI ou UNICODE sur 2 octets ?
0
Rejoignez-nous