Win2000でXPのネットワークドライバを改造して動かない理由が判明
Windows XP用のドライバを改造してもどうやっても Windows 2000で動作しなくて悩んでいたのですが、原因が分かりました ・ω・
まず、XP用のドライバ
push 0000007Ch <- NDIS50_MINIPORT_CHARACTERISTICSのサイズ lea eax,[ebp-7Ch] push eax push [ebp+0Ch] mov byte ptr [ebp-7Ch],05h mov byte ptr [ebp-7Bh],01h <- NDIS Version 5.1を指定 mov dword ptr [ebp-1Ch],L0001A628 mov dword ptr [ebp-18h],L0001C9FC mov dword ptr [ebp-14h],L0001347A mov dword ptr [ebp-74h],L0001919C mov dword ptr [ebp-68h],L000134AE mov dword ptr [ebp-64h],L00018E46 mov dword ptr [ebp-60h],L000137B4 mov dword ptr [ebp-5Ch],L00018D54 mov dword ptr [ebp-58h],L0001BAF8 mov dword ptr [ebp-50h],L00013B08 mov dword ptr [ebp-40h],SUB_L00019506 mov dword ptr [ebp-48h],L0001B2D0 mov dword ptr [ebp-3Ch],L0001AD7A call [NDIS.SYS!NdisMRegisterMiniport] |
さて、ここで、NDIS.SYSの中身を見てみましょう
NdisMRegisterMiniport: push ebp mov ebp,esp lea eax,[ebp+10h] push eax push [ebp+10h] push [ebp+0Ch] push [ebp+08h] call SUB_L00022C10 pop ebp retn 000Ch SUB_L00022C10: |
というわけで、 NdisMRegisterMiniport を呼ぶときに Version 5.0を指定すれば動作する可能性が出てきました|・ω・) ドキドキ
以前作った Atheros ドライバを修正してみたのがこちら
l1c50x86v3.cab
2015/1/25更新
うれしいです!
毎日おつかれさまです。
>> Atheros ドライバを修正
黒翼猫さん、ありがとうございます。m(__)m
私のマザーはAtherosのLANチップ
(8151)ですが、IntelPRO1000を挿しています。
貴ドライバ試しましたが私の環境
(ギガバイト社:G-41M/COMBOマザー)
では何故か動きませんでした。
上の方と同じマザーですが、試した結果を報告しておきます。
Atheros:AR8151 -> 動きません。
内容:
1.ドライバ(l1c50x86.sys)のチェックサムが不正になってるんで、
ロードの段階ではじかれるてる模様・・・
2.チェックサムを修正 -> LANのLED点灯
おっ! と思ったが、残念ながら動かず。
デバイスマネージャで見ると、黄色!がついています。
惜しいところまで行ってるのかも?
弄くって動くようになったんで報告しておきます
NdisWriteConfigurationで
NDIS_PARAMETER_TYPE::NdisParameterHexInteger
を使ってる処があって、そこでアウト。
どうもWin2kのNDIS.sysはこのタイプの値には未対応の模様。
WinDbgで詳細に追ってみると、
アウトしてる箇所は、無くても問題なさそうな処だったんで該当箇所をパス
したら、上手く動きました。
おお、ありがとうございます。ちょっと調べてみます
おっ、見ててくれたんだ。
2012年12月30日 nVIDIA 310.70 for Windows 2000 Beta
で報告しておいた、GetModuleHandleExA()も確認して下さいな。
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x00000004)
The lpModuleName parameter is an address in the module.
—-
CUDAとPhysXが有効にならないのはなんでだろう・ω・ <- 少なくともCUDAは有効になるよ