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
すっぽり処理がない!?

ちなみに、詳細ダイアログ関連の処理自体も全くありませんでした

つまり、仕様で実装していると書いてるにもかかわらず、実装されてないということが判明・ω・
これ、メインストリーム中に指摘したら修正されたレベルのバグですね。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です