[C# 1.1] Caractère null dans une DLL non-managée
Bonjour à vous,
Je développe sous C# 1.1.
Voici mon problème :
J'ai une DLL non managée programmée en C dont je n'ai pas le code source. J'ai reçu avec cette DLL une liste de toutes les fonctions disponibles dans cette DLL.
Grâce à cette liste, je peux effectuer un DLLimport d'une des fonctions disponibles.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
[DllImport("NomDll.dll")]
private static extern UInt16 Fonction(
ref IntPtr Var1,
ref IntPtr Var2,
[MarshalAs(UnmanagedType.LPStr)] ref string sCommand,
[MarshalAs(UnmanagedType.LPTStr)] out string Var4,
out UInt16 Var5);
string sCommand = "Exemple" + Chr(0) + "Bonjour";
nReturn = Fonction(ref var1,ref var2, ref sCommand, out var4,out var5); |
J'ai debuggué et après avoir exécuté la fonction, en retour de sCommand, j'ai : "Exemple".
J'ai effectué des recherches sur le fait que le [MarshalAs(UnmanagedType.LPStr)] a, comme caractère par défaut, le null pour terminer une chaîne et le chr(0) est un caractère null.
Comment faire passer ce caractère null ? (En changeant le marshal ? mais par lequel ?)
J'ai effectué des tests en mettant la fonction dans une DLL visual basic 6 en l'appelant du .NET et cela fonctionne parfaitement car j'ai comme valeur de retour pour sCommand la valeur de départ ("Exemple\0Bonjour").
Avez-vous une solution ?
D'avance, merci.
[C#] Passage de paramètre et NULL