cs_Arkael
Messages postés4Date d'inscriptionmercredi 26 décembre 2007StatutMembreDernière intervention25 juillet 2008
-
24 juil. 2008 à 11:51
cs_Arkael
Messages postés4Date d'inscriptionmercredi 26 décembre 2007StatutMembreDernière intervention25 juillet 2008
-
25 juil. 2008 à 09:37
Bonjour à tous.
J'ai un souci actuellement sur un de mes programmes professionels. Je vous expose le maximum d'information en esperant qu'un dieu du C/c++ puisse me dépanner.
J'ai une DLL dev sous Visual Studio 6 qui comporte une fonction :
int nNumberAdaptersFound = m_pfn_ds_get_adapters(m_cAdapters, MAX_ADAPTERS);
CString test = cAdapters[0];
ODS("lecture tableau : %s", test); // permet l'affichage dans un ptit logiciel de la valeur du tableau [0]
for (int cmpt = 0; cmpt < MAX_ADAPTERS; cmpt++)
free(m_cAdapters[cmpt]);
return nNumberAdaptersFind;
}
La fonction : m_pfn_ds_get_adapters fait appel a une DLL dvp sur visual studio 2005, qui elle même sert de Wrapper pour intégrer une Lib fournit par une société extérieure.
nNumberAdaptersFounf retourne le nombre de carte Wifi présent sur le poste : cette variable est bien récupéré comme il faut.
Le probleme se situant lorsque je souhaite affiché la première ligne du tableau récupéré qui normalement devrait retourné une chaine de caractère ressemblant à : {4345JGREE-FR5678-FR544554-565666}
Lors de l'affichage moi je récupère qq chose ressemblant à : IP³ (ou P est en fait à l'envers et tout noir)
voici l'entrée dans la Dll :
INT WINAPI ds_get_adaptersExp(char *adapters[], int max_adapter)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CChWps CChWps;
int Res = CChWps.get_adapters(m_adapters, max_adapter);
for (int i = 0; i < Res; i++){
adapters[i] = m_adapters[i];
} // remplissage du tableau passé en paramètre de sortie
for (int i = 0; i < 4; i++)
free(m_adapters[i]);
return Res;
}
La fonction get_adapters est la suivante et ressemble bcp à la précédente :
int CChWps::get_adapters(char *adapters[], int max_adapter)
{
char *m_adapters[MAX_ADAPTERS];
memset(m_adapters, 0, sizeof(m_adapters));
int Res = ds_get_adapters(m_adapters, max_adapter);
for (int i = 0; i < Res; i++){
adapters[i] = m_adapters[i];
}
for (int i = 0; i < max_adapter; i++)
free(m_adapters[i]);
return Res;
}
la fonction ds_get_adapters(char* adapters[], int max_adapter) est celle provenant de la lib compillée dans la DLL. Sachant qu'elle fonctionne correctement et retourne la bonne valeur dans le tableau.
Je n'arrive pas à comprends la bourde que j'ai pu faire qui doit se situer dans le remplissage de mon second tableau passé en paramètre de sortie de mes fonctions, et qui me permet de transiter le tableau jusqu'à l'endroit voulu.
Est ce que quelqu'un aurait une idée à me formuler pour résoudre ce probleme qui me bloque depuis 4 heures déjà !
Merci d'avance.
A voir également:
Tableau de caractères, problème de récupération de valeurs