Bonjour à tous, premier message et premier souci ! 
Je dispose d'un périphérique et d'un code sommaire pour l'utiliser. Sans entrer dans des détails (confidentiel), voici les fichiers dont je dispose
pour l'exemple, ce code sera nommé toto dans la suite de l'explication.
J'ai trois fichiers : toto.h, toto.lib, toto.dll (dll native)
toto.ha la tête suivante :
#ifdef TOTO_EXPORTS
#define TOTO_API __declspec(dllexport)
#else
#define TOTO_API __declspec(dllimport)
#endif
typedef struct _mastruct
{
WORD data1, data2, data3, data4;
} mastruct;
typedef void (WINAPI *TotoCallback) (const mastruct *, int, int);
TOTO_API int RegistCallback(TotoCallback);
Cette fonction me permet d'enregistrer un callback que je code, et qui a la tête suivante :
void WINAPI monCallback(const mastruct *data, int i, int j)
{
//traitement des paramètres, fournis par le périphérique
}
Ce callback est automatiquement appelé lorsque le périphérique détecte une activité.
J'arrive à faire fonctionner le tout avec un programme C++ WIN32, mais j'aimerais exploiter tout cela avec C#/.NET.
J'ai donc 2 questions :
Est-il possible d'enregistrer une méthode C# en tant que callback auprès de la fonction RegistCallback ? (j'en doute)
Dans le cas probable où ce n'est pas possible, je vais donc devoir utiliser ma fonction monCallback(). J'aimerais que cette fonction lève un évènement (grosso-modo, implémente un délégué pour abonner des méthodes C#). Est-ce possible ?
sinon, au pire, comment peut-on appeler une méthode C# depuis du code C++ natif ???
Merci à ceux qui auront lu jusqu'ici !
Partager