bonjour,

voila j'ai une dll qui a une fonction avec la signature suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
DWORD CAPI_GET_MESSAGE ( DWORD ApplID,PVOID * ppCAPIMessage);
ou ppCAPIMessage est un emplacement ou je dois trouver un array de char (allouer par la dll)

j'ai aussi plusieurs structures, de longeur differentes en csharp.

dans cette array of byte, le 2 et 3 ieme me dit quelle est la structure qui est représenter par cette array of byte.


Ce que j'aimerais savoir c'est
1) en quoi je dois changer pvoid * pour le csharp (j'ai essayer ref intptr, mais ca marche po).

secondement comment changer ce ptr en array of byte et pis comment changer ce array of byte en structure.

merci

voici (en code )ce que j'essaie de faire

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 IntPtr ptr = IntPtr.Zero;
          UInt32 code = CapiDLLImport.CAPI_GET_MESSAGE(applID,ref ptr);
 
          st_connect_conf cr = MessageFactory.Instance().ConnectConf();
          Marshal.PtrToStructure(ptr,cr);
.....
.....
[DllImport(DLLPATH, CharSet = CharSet.Ansi, ExactSpelling = true)]
        public static extern UInt32 CAPI_GET_MESSAGE(UInt32 ApplID, ref IntPtr ptr);