AM4 Chipset のPCにWindows 2000を入れる実験 その6

AM4 Chipset のPCにWindows 2000を入れる実験 その1
AM4 Chipset のPCにWindows 2000を入れる実験 その2
AM4 Chipset のPCにWindows 2000を入れる実験 その3
AM4 Chipset のPCにWindows 2000を入れる実験 その4
AM4 Chipset のPCにWindows 2000を入れる実験 その5
Windows XPで動いてる acpi.sysと storport.sys をWin2000で動くくように関数を削った後
XPでも動作するのを確認した上でWin2000に組み込んでみました

ところが結果は暗転後点滅

ふと、暗転した画面を見ながらこれBSoDも出ずにどこかでフリーズしてるだけじゃね?
って思ったので作ったISOをVMに入れてみることにしました

acpi
ほんとにダメでした

ただ、第2パラメータが0でないなら光明アリ!
調べればいいのです(フラグ)

 L8001EFD8:
          push    ebp
          mov    ebp,esp
          sub    esp,00000044h
          mov    ecx,[ebp+10h]
          and    byte ptr [L80019F41],00h
          push    ebx
          mov    ebx,[ebp+08h]
          and    byte ptr [ebp-01h],00h
          push    esi
          push    edi
          push    00000001h
          pop    eax
          xor    edi,edi
          mov    [L80019F40],al
          mov    [ecx],eax
          cmp    [ebx],edi
          mov    [ebp-08h],eax
          mov    [ebp-0Ch],edi
          mov    [ebp-10h],edi
          jbe    L8001F05A
          mov    dword ptr [ebp+10h],L80018E7A
          mov    esi,[ebp+10h]
 L8001F015:
          mov    eax,[ebp+10h]
          cmp    byte ptr [eax+01h],00h
          jz     L8001F04A
          movzx    edi,[eax]
          push    00000001h
          mov    ecx,edi
          pop    eax
          shl    eax,cl
          push    eax
          call    jmp_ntoskrnl.exe!KeSetSystemAffinityThread
          mov    eax,FFDFF000h
          mov    esi,[eax+20h]
          mov    ax,[ebx+edi*4+04h]
          add    esi,0000037Ch
          inc    [ebp-0Ch]
          xor    edi,edi
          mov    [esi+04h],ax
 L8001F04A:
          inc    [ebp-10h]
          add    dword ptr [ebp+10h],00000005h
          mov    eax,[ebp-10h]
          cmp    eax,[ebx]
          jc     L8001F015
          jmp    L8001F05D
 L8001F05A:
          mov    esi,[ebp+10h]
 L8001F05D:
          cmp    [ebp-0Ch],edi
          jz     L8001F067
          call    jmp_ntoskrnl.exe!KeRevertToUserAffinityThread
 L8001F067:
          cmp    [esi+04h],di
          jz     L8001F071
          mov    byte ptr [ebp-01h],01h
 L8001F071:
          lea    eax,[ebp-44h]
          push    00000024h
          push    eax
          call    jmp_ntoskrnl.exe!RtlZeroMemory
          mov    cl,[L8001A0C9]
          xor    al,al
          test    cl,cl
          mov    [ebp-44h],al
          jz     L8001F0A4
          movzx    ecx,cl
          inc    al
          shl    al,cl
          xor    ecx,ecx
          cmp    byte ptr [L80018E68],01h
          setnz    cl
          mov    [ebp-44h],al
          mov    [ebp-43h],cl
 L8001F0A4:
          cmp    byte ptr [ebp-01h],00h
          mov    dword ptr [ebp-40h],L80016300
          movzx    eax,al
          mov    [L8001A04C],eax
          mov    [ebp-38h],edi
          mov    dword ptr [ebp-34h],L80017F88
          jz     L8001F0E3
        
 mov    ax,[L8001A0C0]
          cmp    ax,0064h
          ja     L8001F0E3
          movzx    eax,ax
          mov    [ebp-30h],eax
          mov    dword ptr [ebp-2Ch],L80017FAC
          mov    dword ptr [ebp-08h],00000002h
 L8001F0E3:
          mov    ax,[L8001A0C2]
          cmp    ax,A000h
          jc     L8001F0F9
          add    ax,6000h
          mov    [L8001A0C2],ax
 L8001F0F9:
          cmp    ax,03E8h
          ja     L8001F12B
          cmp    byte ptr [ebp-01h],00h
          jz     L8001F12B
          cmp    [L8001A0A8],edi
          jz     L8001F12B
          cmp    dword ptr [ebp-0Ch],00000001h
          jnz    L8001F12B
          mov    ecx,[ebp-08h]
          movzx    eax,ax
          shl    ecx,03h
          inc    [ebp-08h]
          mov    [ebp+ecx-38h],eax
          mov    dword ptr [ebp+ecx-34h],L8001805C

 L8001F12B:
          cmp    [L80018FF0],edi
          mov    edi,[ntoskrnl.exe!ZwPowerInformation]
          jnz    L8001F14D
          mov    eax,[ebp-08h]
          push    00000000h
          mov    [ebp-3Ch],eax
          push    00000000h
          lea    eax,[ebp-44h]
          push    00000024h
          push    eax
          push    00000007h
          call    edi
 L8001F14D:

Win2000のHALなんですが
赤字の箇所でクラッシュしてるんですが、XPにはAPIの第1引数未使用で、水色の部分丸ごと処理が無かったりします。ここに0が入ってると2000はクラッシュするわけです

というわけでここが0の時スキップする処理を入れてみました

acpi2
症状悪化。

seika

余分な処理の部分が別のハンドラで実装されていて、その部分が欠落してるのでしょうね
とりあえず、先が見えないのでUSBボードに続いて、追加でAHCIのボード購入することにしたのですが、検証のための追加ハードウェアの予算が当初よりオーバー

というわけでPayPal(このサイトの左下) / もしくはアマゾンギフト(Twitter DMまたはメール)の寄付は歓迎なのです ((((・ω・))))

おすすめ

コメントを残す

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