Appel API, pointeur char[] [Résolu]

Messages postés
11
Date d'inscription
jeudi 28 août 2003
Dernière intervention
16 juin 2011
- - Dernière réponse : QuentinBl
Messages postés
1
Date d'inscription
mercredi 6 août 2014
Dernière intervention
6 août 2014
- 6 août 2014 à 13:05
Bonjour,
Je dois intégrer en c# un appel à une API dont voici le prototype du .h :
typedef unsigned short  (API_ENTRY _DLL_PTR T_Lec_InformationsAPI)
            (   IN      unsigned char FARPTR    pcChemin,
IN_OUT  unsigned short FARPTR   pusLgInformations,
                OUT     char FARPTR             szInformations,
                OUT     unsigned short FARPTR   pusCodeErreur);


j'en ai fait la déclaration suivante :
[DllImport("api_lec.dll")]
unsafe public static extern ushort Lec_InformationsAPI(
                       char[] pcChemin,
                       out ushort pusLgInformations,
                       out char[] szInformations,
                       out ushort pusCodeErreur);


et l'appel :
char[] pcChemin = (GalssDirectory + "\").ToCharArray();
ushort pusLgInformations = 640;
char[] szInformations = new char[pusLgInformations];
ushort pusCodeErreur;

ushort lReturned = API.Lec_InformationsAPI(pcChemin, out pusLgInformations, out szInformations, out pusCodeErreur);


L'application s'arrête sur ce dernier appel avec une erreur 0xc0000409 non significative.
Par ailleurs, d'autres fonctions fonctionnent bien avec des retours sur des entiers.

Sauriez vous me dire si je fais quelque chose d'incorrect dans le type de données ou l'initialisation de szInformations ?
Merci.

contexte : sous Windows 7 64bits (compilation 32bits), Visual Studio 2008.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
11
Date d'inscription
jeudi 28 août 2003
Dernière intervention
16 juin 2011
2
Merci
bonjour,
Je fournis le projet complet à qui le demande (par message privé, si j'ai bien compris le principe).
Je ne traite pas la CPS, j'ai quelques blocages de paramétrage du GALSS.

Merci edurand1 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

QuentinBl
Messages postés
1
Date d'inscription
mercredi 6 août 2014
Dernière intervention
6 août 2014
-
Bonjour edurand1,
je déterre le post... car je suis actuellement sur ce même projet, Sesam n'ayant toujours pas développé leur api_lec.dll en x64.
Si tu as toujours ton projet, je suis intéressé !
Merci
Commenter la réponse de edurand1
Messages postés
11
Date d'inscription
jeudi 28 août 2003
Dernière intervention
16 juin 2011
1
Merci
Je pensais avoir déjà fourni la réponse à mon problème, mais non... donc la voici :
-> La solution est d'utiliser des StringBuilder pour récupérer des chaînes de caractères.

[DllImport("api_lec.dll")]
        unsafe public static extern ushort Lec_InformationsAPI(
                                          char[] pcChemin,
                                          out ushort pusLgInformations,
                                          StringBuilder szInformations,
                                          out ushort pusCodeErreur);


bon code.
Commenter la réponse de edurand1
Messages postés
1
Date d'inscription
dimanche 23 novembre 2008
Dernière intervention
17 février 2011
0
Merci
Bonjour,

Je butte également sur les appels aux API de la carte Vitale que je dois écrire en C#

Avez-vous réussi depuis à appeler les fonctions T_Lec_LectureVitale et T_Lec_InformationsAPI ? Si oui, avec quelle déclaration C# ?

Merci d'avance pour vos informations !
Commenter la réponse de gaggy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.