Delegate et Pointeur de fonction
Bonjour à tous,
J'ai un souci de cast, semble t-il.
mon but est de 'faire rentrer' une adresse de fonction dans un pointeur : créer un pointeur de fonction. pour adresser la fonction, j'ai bien cru comprendre qu'il faut utiliser un delegate... et je ne parviens pas à le caster ensuite en IntPtr.
voici un extrait de code, pour illustrer un peu le contexte:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public delegate IntPtr MyFunction(IntPtr hInstance, IntPtr lpTemplateName,
IntPtr hWndParent, IntPtr lpDialogFunc, IntPtr dwInitParam);
public static void Hook()
{
byte[] TmpBytes = new byte[5];
MyFunction myFct = new MyFunction(MyNewFunction);
MoveMemory((IntPtr)TmpBytes[1], (IntPtr)myFct, 4); /* ... pb de cast avec myFct*/
}
static IntPtr MyNewFunction(IntPtr hInstance, IntPtr lpTemplateName,
IntPtr hWndParent, IntPtr lpDialogFunc, IntPtr dwInitParam)
{
} |
ça coince au second argument de MoveMemory, où l'api attend nominalement un IntPtr.
comment convertir myFct en IntPtr ?
faut-il vraiment utiliser un delegate? j'ai bloqué de la même façon avec des pointeurs 'unsafe'. rapide et brutal :aie:. dans d'autres languages, ce genre de truc est super facile à faire...
je fais assez peu de c#.net, et je ne sais plus trop comment faire, là, en fait..
je pige plus.8O
merci pour votre aide ou vos conseils...
++