cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 21 déc. 2006 à 11:37
Salut,
L'attribut Out spécifie que le marshalling ne doit se faire qu'en retour de la méthode (de l'appelé vers l'appelant).
Si ton paramètre est un paramètre d'entrée, spécifie le en In (de l'appelant vers l'appelé).
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 21 déc. 2006 à 11:49
Salut, ce serait mieux de voir le prototype en C. La fonction s'appelle Get.. on peut imaginer que le premier paramètre est en entrée et le second en sortie ? Dans ce cas pour les chaines en sortie c'est un StringBuilder qui doit être initialisé avant l'appel.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 21 déc. 2006 à 13:13
Essaie plutôt, en spécifiant un Charset Unicode sur l'attribut DllImport :
extern public static void GetProcessEnvVar(
long ProcessPID,
[In] string VarName,
[Out] StringBuilder VarVal
);
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 21 déc. 2006 à 13:45
haha quel ane je fais, je ne l'avais pas vu celui là, pourtant je le connais ce fameux problème de la confusion entre long "C++" (32 bits) et long "C#" (64 bits, System.Int64) -_-