VirtualAllocについて
このサイトでわからくなったので質問させていただきます。
http://mentai.2ch.net/prog/kako/957/957341074.html
このサイトの79番目で
void makeClass(char *WinClassName)
{
cb=(WNDPROC)VirtualAlloc(NULL,10+5 , MEM_COMMIT, PAGE_EXECUTE_READWRITE);
char *b=(char*)cb; //コールバックゲートをこしらえる
*b++= 0xC7; *b++= 0x05; //MOV [adr],xxxx
*((int *)b)++=(int)(&callbackSelf); //メモリアドレス
*((int *)b)++=(int)this; //オブジェクトアドレス
*b++= 0xE9; //jump long xxxx
*((int *)b)= ((int)WndProcGate)-(4+(int)b);//ジャンプ先
WNDCLASS wndclass= { 0/*CS_SAVEBITS*/ ,//UINT style;
cb, //WNDPROC lpfnWndProc;
0,0, //int cbClsExtra,cbWndExtra;
0, //HANDLE hInstance;
LoadIcon(NULL,IDI_APPLICATION),//HICON hIcon;
LoadCursor(NULL,IDC_ARROW), //HCURSOR hCursor;
(HBRUSH) GetStockObject(WHITE_BRUSH), //HBRUSH hbrBackground;
NULL, //LPCTSTR lpszMenuName;
WinClassName, }; //LPCTSTR lpszClassName;
RegisterClass( &wndclass );
}
の、
cb=(WNDPROC)VirtualAlloc(NULL,10+5 , MEM_COMMIT, PAGE_EXECUTE_READWRITE);
char *b=(char*)cb; //コールバックゲートをこしらえる
*b++= 0xC7; *b++= 0x05; //MOV [adr],xxxx
*((int *)b)++=(int)(&callbackSelf); //メモリアドレス
*((int *)b)++=(int)this; //オブジェクトアドレス
*b++= 0xE9; //jump long xxxx
*((int *)b)= ((int)WndProcGate)-(4+(int)b);//ジャンプ先
の処理がどういう処理を行っているのかわからないので1つ1つわかりやすくご教授ください。
お礼
ご回答ありがとうございます。 このとおり、試してみましたが、ダメでした…。 NO.1さんのお礼にも書きましたが、IE8をとりあえずアンインストールしました。これで、モヤモヤは解決できたかと思いきや、IE7を立ち上げたときの「設定の変更」ページのみがエラーになります。 なんとか頑張ります。。。