Bonjour,

j'utilise une dll c++ en c# et celle-ci appelle un callback définit comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
typedef VOID (CALLBACK* FONCTION_CALLBACK)(
     int NumServ,
     DWORD hGroup,
     DWORD count,
     DWORD *hItem,
     VARIANT *values,
     WORD *quality,
     FILETIME *time);
remarque: hItem, values, et quality sont des tableaux de taille count.

j'ai déclaré ce callback de la manière suivante en c# :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public unsafe delegate void FONCTION_CALLBACK(
     int NumServ, 
     Int32 hGroup, 
     Int32 count, 
     Int32 *hItem, 
     object[] values, 
     UInt16 *quality, 
     FILETIME *time);
Seulement, lorsque la méthode est appelée, le tableau de valeurs values est de taille 1, alors que le nombre d'items (count) est bien supérieur. Par contre, les tableaux hItem et quality sont bien respectés.

Je supprose que c'est à cause de la déclaration avec [] du tableau values mais c'est le seul moyen que j'ai trouvé pour convertir les variant.

Une idée? merci à tous.