Rechercher une page de manuel
AllocSLCallback.3w
Langue: en
Version: Jun 2009 (debian - 07/07/09)
Section: 3 (Bibliothèques de fonctions)
NAME
AllocSLCallback (KERNEL32.@)SYNOPSIS
DWORD AllocSLCallback(
DWORD finalizer,
DWORD callback
)
PARAMS
finalizer [In] Finalizer function.[In] Callback function.
DESCRIPTION
Allocate a 16->32 callback.
NOTES
Win95 uses some structchains for callbacks. It allocates them in blocks of 100 entries, size 32 bytes each, layout:
blockstart:
0: PTR nextblockstart
4: entry *first;
8: WORD sel ( start points to blockstart)
A: WORD unknown
100xentry:
00..17: Code
18: PDB *owning_process;
1C: PTR blockstart.
We ignore this for now. (Just a note for further developers)
FIXME: use this method, so we don't waste selectors...
Following code is then generated by AllocSLCallback. The code is 16 bit, so the 0x66 prefix switches from word->long registers.
665A pop edx
6668x arg2 x pushl <arg2>
6652 push edx
EAx arg1 x jmpf <arg1>.
returns the startaddress of this thunk.
Note, that they look very similar to the ones allocates by THUNK_Alloc.
RETURNS
A segmented pointer to the start of the thunk
IMPLEMENTATION
Not defined in a Wine header. The function is either undocumented, or missing from Wine.
Implemented in "dlls/kernel32/thunk.c".
Debug channel "thunk".
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre