Windows 2000で Direct2D を使う実験をしてみた

Windows Vista SP2+αから実装されたという、高速な単純描画機能 を Windows 2000で実行できるか試して見ました

リンク上は問題なかったのでいけるかなと思っていたのですが
dx2d
1. KB2117917 の d2d1.dll を Windows 2000用に改造して見た.
2. d2d1.dll が dxgi.dllを遅延ロードして CreateDXGIFactory1 をロードして異常終了 (使っていた Vista RTM の dxgi.dll にはこの関数がない!)
3. KB2117917 の dxgi.dll を Windows 2000用に改造
4. dxgi.dll が gdi32.dll の

D3DKMTOpenAdapterFromGdiDisplayName
D3DKMTCloseAdapter
D3DKMTQueryAdapterInfo
D3DKMTOpenAdapterFromDeviceName

を遅延ロードしていることが判明.

これは即席では無理だぁ!

というわけで一旦戦略的撤退することに
ちなみに、XPだと、SxS技術が邪魔して、異常なDLLですとか言われて例外投げちゃうので論外だった

ちなみにこちらのプログラムを使わせてもらった

AFsoft WebSite (AFsoft.JP)

おすすめ

5件のフィードバック

  1. excat より:

    Direct2Dの実験、がんばってください。

  2. svyatpro2003 より:

    私は非常にWin2000の上のあなたの偉大な仕事に感銘を受け、特に私が驚いています
    VistaからXP/2003にMSVCRT.DLLを移植するの!私はWin2000のにポートDX10しようとしたことに気づいたが、あなたはdxgi.dllとGDI32.DLLで問題を抱えて、私もこの問題に従事したが、私は部分的にこれを解決策を見つけた。私は少し後GDI32.DLL(6.0.5219)D3DKMT*のようなエクスポート機能をcontaint Windows Server 2003のSP2、および予期せぬ幸運にLonghornの/ Vistaのバージョンの(マイルストーン、ベータ版、RC)からポートGDI32.DLLしようとした元user32.dllのに修正、彼らはほとんどのようにうまくいった。しかし、残念なことにこのGDI32.DLLが古すぎると、必要なすべてのD3DKMT*関数を持っていないが、私はあっても、ロングホーンからGDI32.DLLの他の新しいバージョンを持っているが、ビルド5231システムは(BSOD)が正常に起動しないから始まる彼らは、インポート機能を欠落していることはありません。
    私が漏洩Longhorn/Vista/7/8分布から任意のファイルを提供することができ、多分あなたはWin2000/XP/2003ようなDX10のような互換性と新機能を向上させるために彼らと何かをすることができるだろう。あなたがLH5270以上からWin2000/XP/2003に、例えば、GDI32.DLL適応することができるかもしれません。
    あなたの仕事のためにありがとうございました!

  3. svyatpro より:

    Hello BlackWingCat!
    I am very impressed with your great work on Win2000 and especially I amazed
    of porting msvcrt.dll from Vista to XP/2003! I noticed that you tried to port DX10 to Win2000, but you got a problem with dxgi.dll and gdi32.dll, I engaged this problem too, but I partially found the solution of this. I tried to port gdi32.dll from (Milestone, Beta, RC) versions of Longhorn/Vista to Windows Server 2003 SP2, which containt export functions like D3DKMT*, and to unexpected luck the gdi32.dll (6.0.5219) after a little fix in original user32.dll, they worked almost as well. But unfortunately this gdi32.dll is too old and doesn’t have all necessary D3DKMT* functions, but I have other newer versions of gdi32.dll from Longhorn but starting from build 5231 the system doesn’t boot properly (BSOD), even if they doesn’t have missing import functions.
    I can provide you with any file from the leaked Longhorn/Vista/7/8 distributions, maybe you would be able to do something with them to improve compatability and new features such like DX10 in Win2000/XP/2003. You may be able to adapt gdi32.dll, for example, from LH5270 or higher to Win2000/XP/2003.
    See the link below for working gdi32.dll(5219) and user32.dll, and not working gdi32.dll(5270 much more D3DKMT* functions) so you may learn valuable information from them.
    Thank you again for your work!
    http://www.mediafire.com/?hab0ghjwc61jycb

  4. Svyat より:

    D3DKTM* functions are available in D3D10Ref.dll library, maybe these functions can be redirected from gdi32.dll to d3d10ref.dll?

  5. 黒翼猫 より:

    It is very difficult. because many delated function call from them.
    Perhaps I should make many many APIs.

コメントを残す

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