I have 2 questions on Callback.h, from CVS:
Line-31 (char)0x83, (char)0xc4, (char)0x10, // sub esp, 0x0c (restore the stack)
byte code "0x83, 0xc4, 0x10" is correct, means "add esp, 0x10" but not "sub esp, 0x0c".
Line-34 (char)0xc3, // ret
According to the stack cleanup rule of "CALLBACK", it should be "ret ??" (?? filled in "CreateCallBack"), but "ret" really works?