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

Signaler
Messages postés
1
Date d'inscription
vendredi 8 février 2002
Statut
Membre
Dernière intervention
17 septembre 2009
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
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 ?