Microsoft のドキュメントにある DEVMGR_SHOW_DETAILS のコード実装が Windows 2000にあるか調べてみた
【これは酷い】色々なサイトに掲載されている DEVMGR_SHOW_DETAILS は Windows XP SP1以外では設定を削除されていることが判明
Windows 2000に設定は存在しないものの機能自体はあることになってるデバイスマネージャーの詳細タブ。
Device Manager Details Tab | Microsoft Docs
設定は有効にならないことは判明したものの、コード実装はされてるのでは?
と言うことで調べてみました
L72A9E10C: xor eax,eax L72A9E10E: test eax,eax mov byte ptr [ebp-04h],06h jz L72A9E144 push [ebp+08h] mov ecx,eax mov [ebp-18h],eax call SUB_L72A9B602 mov esi,eax test esi,esi jz L72A9E144 push FFFFFFFFh push esi mov ecx,ebx call SUB_L72A99F12 test eax,eax jz L72A9E13D and dword ptr [ebp-18h],00000000h jmp L72A9E144 L72A9E13D: push esi call [L72AAF410] // DestroyPropertySheetPage L72A9E144: push 00000104h lea eax,[ebp-000005FCh] push eax push SWC72AAE6C8_DEVMGR_SHOW_DETAILS call [KERNEL32.dll!GetEnvironmentVariableW] test eax,eax jz L72A9E1E9 cmp eax,00000001h ja L72A9E17E push L72AAE6C4 lea eax,[ebp-000005FCh] push eax call [KERNEL32.dll!lstrcmpW] test eax,eax jz L72A9E1E9 L72A9E17E: and dword ptr [ebp+10h],00000000h push 00000054h mov byte ptr [ebp-04h],08h call SUB_L72A91C01 // malloc : :詳細タブ処理 : L72A9E1CF: push esi call [L72AAF410] // DestroyPropertySheetPage L72A9E1D6: cmp dword ptr [ebp+10h],00000000h mov byte ptr [ebp-04h],06h jz L72A9E1E9 mov ecx,[ebp+10h] mov eax,[ecx] push 00000001h call [eax] L72A9E1E9: mov ecx,[ebp+08h] call SUB_L72A9EFE3 test eax,eax jz L72A9E213 test byte ptr [ebp-1Fh],20h jnz L72A9E213 mov eax,[ebp+08h] push ebx push 00000001h push L72A9AEFB add eax,00000080h push eax mov ecx,edi call SUB_L72AA0A18 |
XPSP1のコードがこんな感じ、赤字が判定処理
L723EF292: xor eax,eax L723EF294: mov [ebp-14h],eax mov [eax+4Ch],ebx mov [eax+24h],eax add eax,00000008h push eax mov byte ptr [ebp-04h],04h call [COMCTL32.dll!CreatePropertySheetPageW] mov edi,eax test edi,edi jz L723EF2CD mov ecx,[ebp+08h] push FFFFFFFFh push edi & nbsp; call SUB_L723EBED5 test eax,eax jz L723EF2C6 and dword ptr [ebp-14h],00000000h jmp L723EF2CD L723EF2C6: push edi call [COMCTL32.dll!DestroyPropertySheetPage] L723EF2CD: mov ecx,ebx call SUB_L723F16AF test eax,eax jz L723EF2F4 test byte ptr [ebp+11h],20h jnz L723EF2F4 push [ebp+08h] mov ecx,[esi+0Ch] lea eax,[ebx+7Ch] push 00000001h push L723ED93D push eax call SUB_L723F2DEE L723EF2F4: |
Windows 2000 SP4
すっぽり処理がない!?
ちなみに、詳細ダイアログ関連の処理自体も全くありませんでした
つまり、仕様で実装していると書いてるにもかかわらず、実装されてないということが判明・ω・
これ、メインストリーム中に指摘したら修正されたレベルのバグですね。
Comments