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:
ça coince au second argument de MoveMemory, où l'api attend nominalement un IntPtr.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) { }
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 . 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.
merci pour votre aide ou vos conseils...
++
Partager