Radeon 9.12ドライバ 続報 2

CCC(Catalyst Control Center)9.12からWindows 2000では動作しなくなったので、解析を続けていたのですが、大きな変更点とOSバージョンで処理分岐しているところを見つけたので暫定報告です。

まだ、この個所を書き変えて動作するかは不明です。

          mov    esi,[VIDEOPRT.SYS!VideoPortInitialize]
          push    00000000h
          mov    [ebp-64h],eax
          lea    eax,[ebp-7Ch]
          push    eax
          push    [ebp+0Ch]
          mov    dword ptr [ebp-74h],L0037AABA
          push    edi
          mov    dword ptr [ebp-70h],L0037ABB6
          mov    dword ptr [ebp-68h],L0037AC80
          mov    dword ptr [ebp-5Ch],L000172E0
          mov    dword ptr [ebp-6Ch],L00026A4E
          mov    dword ptr [ebp-50h],L0037B56C
          mov    dword ptr [ebp-4Ch],L0037B4B4
          mov    dword ptr [ebp-44h],L0037B820
          mov    dword ptr [ebp-58h],L00026A32
          mov    dword ptr [ebp-48h],L0037B702
          mov    dword ptr [ebp-78h],00000005h
          call    esi
          test    eax,eax
          jz     L0037BA70
          push    00000000h
          lea    eax,[ebp-7Ch]
          push    eax
          push    [ebp+0Ch]
          mov    dword ptr [L0020EB6C],00000500h
          push    edi
          mov    dword ptr [ebp-7Ch],00000050h
          call    esi
          test    eax,eax
          jz     L0037BA70
          push    00000000h
          mov    dword ptr [L0020EB6C],00000400h
          call    SUB_L00012E68
          push    00000037h
          pop    eax
 L0037BA70:
          pop    edi
          pop    esi
          leave
          retn    0008h

まず、9.11の初期化コード後半

          push    00000000h
          mov    [ebp-64h],eax
          lea    eax,[ebp-7Ch]
          push    eax
          push    [ebp+0Ch]
          mov    dword ptr [ebp-74h],L0045DFE6
          push    edi
          mov    dword ptr [ebp-70h],L0045E0E2
          mov    dword ptr [ebp-68h],L0045E1AC
          mov    dword ptr [ebp-5Ch],L0001641C
          mov    dword ptr [ebp-6Ch],L00025350
          mov    dword ptr [ebp-50h],L0045EA98
          mov    dword ptr [ebp-4Ch],L0045E9E0
          mov    dword ptr [ebp-44h],L0045ED48
          mov    dword ptr [ebp-58h],L00025334
          mov    dword ptr [ebp-48h],L0045EC2E
          mov    dword ptr [ebp-78h],00000005h
          call    [VIDEOPRT.SYS!VideoPortInitialize]
          mov    esi,eax
          test    esi,esi
          jz     L0045EF79
          push    00000000h
          mov    dword ptr [L0027F24C],00000500h
          call    SUB_L00011D22
          push    00000037h
          pop    esi
          jmp    L0045EF7F
 L0045EF79:
          push    edi
          call    SUB_L000E1320

 L0045EF7F:
          pop    edi
          mov    eax,esi
          pop    esi
          leave
          retn    0008h

そして、9.12の初期化コードの後半
前半は実は完全に一致します。

処理の違いは 9.12はVideoPortInitializeで成功した場合 初期化処理に進んで終わり、失敗の場合は処理をして、Windows 2000バージョンを設定し、エラー0x37確定。
9.11の場合は成功の場合処理無し、失敗した場合、パラメータを(VIDEO_HW_INITIALIZATION_DATA のHwInitDataSizeを 0x54から0x50に)変えてWindows 2000バージョンを設定して、さらに処理、エラーが出たらWindows NTバージョンを設定して、エラー0x37

この個所を書き変えたら、動くかなと睨んでいるのですが。どうなるでしょうか。

関連記事:
ATI Radeon Driver 9.12 for Windows 2000 続報   
ATI Radeon Graphic Driver 9.12 ドライバがリリースされました

おすすめ

コメントを残す

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