Windows XP の SHELL32.DLL の 744と 745 について
744
__interface INTERFACE_UUID("{EC6FE84F-DC14-4FBB-889F-EA50FE27FE0F}") IUIElement : public System::IInterface { virtual HRESULT __stdcall get_Name(_di_IShellItemArray pItemArray, System::WideChar * &bstrName) = 0 ; virtual HRESULT __stdcall get_Icon(_di_IShellItemArray pItemArray, System::WideChar * &bstrName) = 0 ; virtual HRESULT __stdcall get_Tooltip(_di_IShellItemArray pItemArray, System::WideChar * &bstrName) = 0 ; }; |
あたりの処理を行ってる模様
システムトレイのアイコンやツールチップ周りの処理かな ・ω・
745
SHELL32.DLLのベースアドレスになってる。謎い
Windows 7 をみたら、SHUNIMPL.DLL と言う謎の関数にリンクしてた。
恐らく、 SHELL UNIMPLEMENTED の略で未実装関数なんだと思う。
わざわざここを参照するプログラムがあるのは何なんだろう・ω・
同様に未実装の奴が
681
685
686
691-698
704
705
709
716
717
727
728
733
734
735
736
737
738
740
741
745
なんだけど、先日リリースされた、XP向けの zipfldr.dll の中身にこんな記述がある
SUB_L732DE59D: mov edi,edi push ebp mov ebp,esp mov ecx,[ebp+0Ch] push edi xor eax,eax mov edi,ecx stosd stosd stosd add ecx,00000008h stosd push ecx push L732D1F94 stosd call jmp_SHELL32.dll!SHELL32.745 xor eax,eax pop edi pop ebp retn 0008h |
これ、特定処理実行するとクラッシュすると思うんだけどどうしてこうなった?・ω・
なお、lzhfldr.dll (5.0.2600.7) ではこの問題はない
追記:調査に誤りがあったので修正
Windows XP の SHELL32.DLL の 744と 745 について その2
Comments