Windows 2000拡張カーネル回りで判明してる不具合まとめ
1. psapi.dll の GetProcessImageFileNameW / GetProcessImageFileNameA が動作しない。
調べてみたところ。
Windows 2000は NtQueryInformationProcess の
ProcessImageFilename = 0x1B
ProcessLUIDDeviceMapsEnabled = 0x1C
ProcessBreakOnTermination = 0x1D
ProcessDebugObjectHandle = 0x1E
ProcessDebugFlags = 0x1F
ProcessHandleTracing = 0x20
ProcessIoPriority = 0x21
ProcessExecuteFlags = 0x22
ProcessTlsInformation = 0x23
ProcessCookie = 0x24
ProcessImageInformation = 0x25
に対応していない。 psapi.dll は 0x1B のファンクションを直接読んでいるので、エラーになる。対応には、拡張コアの変更が必要。 WildBill Kernelはサポートしたことになってるが、バグがあって動作しない。修正すると一見動くように見えるが、パス形式が全く違うので、使用してるアプリでは、エラーになる
実装にあたって必要な EProcess 構造体の中身がこちら。
Inside MicrosoftR WindowsR 2000, Third Edition
Windows XPが持っている、 _SE_AUDIT_PROCESS_CREATION_INFO 構造体がなく、代わりにファイル名だけの 最大16バイトの ImageFile 構造体がある
タスクマネージャーで XPではちゃんとファイル名がすべて出てくるのに、2000では 15文字しか出てこないのはこれのせいでした・ω・;
2. Crypt32.dll の不具合
一部の環境でXPの crypt32.dll を改造した v24c の拡張カーネルを使っているとアプリケーションのインストールなどに失敗したりタスクスケジューラーでエラーがでるそうな。
これがどうしてもうちの環境で再現できなくて、てこずっています・ω・
>これがどうしてもうちの環境で再現できなくて、てこずっています・ω・
拡張コア絡みでは?
私の環境には拡張コアは導入していませんが、カタログファイルエラーが起きました。