begin process at 2012 02 10 09:41:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

ActiveX / COM

 > 

Récupération des données d'une fonction d'une dll native


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupération des données d'une fonction d'une dll native

jeudi 19 février 2009 à 15:52:41 | Récupération des données d'une fonction d'une dll native

maladebe

Salut,

Je dois récupérer d'une fonction, dans une dll écrite en C/C++, un pointeur sur une structure. Je pensais avoir trouvé comment récupérer les informations du pointeur renvoyé par la fonction décrite ci-dessous:

[

DllImport ( @"MADLL.dll" , EntryPoint = "InitImage" , SetLastError = true , CharSet = CharSet .Auto)]

public static extern unsafe IntPtr InitImage( IntPtr ptrRaw, int width, int height, int resolution, int rank, out IntPtr ptrOut);

Ci-dessous, la structure queje dois récupérer :

[

StructLayout ( LayoutKind .Sequential)]

class

ErrorContext

{

[

MarshalAs ( UnmanagedType .I4)]

public T__FPQC_Returned_Code returnedCode;

[

MarshalAs ( UnmanagedType .LPStr, SizeConst = 100)]

public String errorMessage;

[

MarshalAs ( UnmanagedType .LPStr, SizeConst = 256)]

public String errorFile;

[

MarshalAs ( UnmanagedType .U4)]

public UInt32 errorLine;

}

Mais lors de l'exécution des instructions suivantes :

IntPtr

ptrErr = Marshal .AllocHGlobal( Marshal .SizeOf( typeof ( ErrorContext )));

ptrErr = FPQC_InitFingerprintImage(ptrRaw, bmp.Width, bmp.Height, 500, 1,

out ptrOut);

ErrorContext

eContext = newErrorContext();

Marshal .PtrToStructure(ptrErr, eContext);

j'ai une exception de type " Attempted to read or write protected memory" qui se génère à la dernière ligne.
Je n'arrive donc pas à récupérer les informations contenues dans eContext.

Merci d'avance pour vos éclaircissements!!!
jeudi 19 février 2009 à 16:19:36 | Re : Récupération des données d'une fonction d'une dll native

Lutinore

Administrateur CodeS-SourceS
Salut, faudrait voir le prototype de ta struct en C, je pense que que les chaines de caractères sont des tableaux inline et non des pointeurs.
jeudi 19 février 2009 à 16:29:45 | Re : Récupération des données d'une fonction d'une dll native

maladebe

Salut Lutinore,

Voici le prototype de la structure :

typedef

struct {

T__FPQC_Returned_Codes m__errorcode;

T__Char m__errormessage[150];

T__Char m__errorfile[256];

T__UInt32 m__errorline;

}T__FPQC_Struct_Error_Context;

Alors oui, ce sont bien des tableaux de char mais avec
MarshalAs(UnmanagedType.LPStr, SizeConst = 256)], il devrait pas poser de souci? Enfin je pense.

jeudi 19 février 2009 à 18:33:57 | Re : Récupération des données d'une fonction d'une dll native

Lutinore

Administrateur CodeS-SourceS
 				
[ MarshalAs( UnmanagedType.ByValArray, SizeConst = 256  ) ]
public char[ ] str1; // Attention au CharSet de la struct.
jeudi 19 février 2009 à 18:38:39 | Re : Récupération des données d'une fonction d'une dll native

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !
quoi que ça, c'est mieux :

[ MarshalAs( UnmanagedType.ByValTStr, SizeConst= 256 ) ]
public String str1;
vendredi 20 février 2009 à 07:50:10 | Re : Récupération des données d'une fonction d'une dll native

maladebe

Merci beaucoup Lutinore. Ca marche comme je voulais!!!
Grace à :
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst= 256 ) ]
public String str1;


Cette discussion est classée dans : fonction, récupérer, public, dll, intptr


Répondre à ce message

Sujets en rapport avec ce message

Récupérer l'adresse en mémoire de la dll chargée [ par pcayrol ] Bonjour, Je charge une dll (C++) dynamiquement (avec [U]LoadLibrary[/U]) dans mon programme C#. J'arrive à invoquer des méthodes, etc, etc... J'aimera Perte d'information IntPtr [ par ScRunCHy ] Salut à tous,J'ai quelques petites difficultés à manipuler ces IntPtr... Dans une classe je déclare un IntPtr :private IntPtr monPtr = IntPtr.Zero;[.. Paramètrage entre deux projets différents [ par dorras7 ] Bonjour, j'ai développé un DLL en c# qui implémente une fonction (par exemple M1(typeofobject val)) puis j'ai testé cette fonction dans un autre proje Appel d'une dll avec tableau & structure [ par Morgan_2956 ] Bonjour à tous, Malgré toutes mes recherches et essais, je n'arrive décidément pas à passer des tableaux dans une structure provenant d'une dll. Je do Passer une structure à une DLL en C [ par dark_naruto25 ] Salut à tous ! Voilà mon souci, pour le boulot je dispose d'un DLL (conçu en C) que je dois initialisé depuis mon code C#. Ma structure ressemble à q probléme avec les tableaux [ par don1 ] salut le forum. J'ai développé un usercontrol et maintenant lors de l'utilisation d'une des fonction de ce composants dans mon application j'ai le mes Dll et Pointeurs de fonctions [ par phantom_2005 ] Bonjour à tous, j'ai un problème concernant l'appel d'une fonction dans une dll. Cette fonction prend comme argument un pointeur vers une fonction. PaintEventArgs [ par orfanik ] Je souhaite toujours dessiner un rectangle parceque c'est beau, jolie, esthetique et agréable à regarder. J'ai cherché dans la documentation MSDN et j import DLL struct Attempted to read or write protected memory. This is often an indication that other memory is corrupt dll [ par anbariota ] Bonjour, J'ai un Outil C# qui importe une DLL C. En effet, j'ai une exception "Attempted to read or write protected memory. This is often an indicatio Problem de Controle invisible [ par sheppertizer ] Bonjour a tous voila je suis en train de tester plusieurs système de transparence sur une form , le probleme est que mes controles (ProgressBar et Co


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,574 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales