~shimon/thd3d8mitigation

49cb5f8c87642868c15d18f7e58e9f93d61a540c — Itoh Shimon 5 months ago cb05e57 master
開発ノートを更新。
1 files changed, 3 insertions(+), 3 deletions(-)

M DEVNOTE.md
M DEVNOTE.md => DEVNOTE.md +3 -3
@@ 96,11 96,11 @@ thd3d8mitigationのソースコードはBOM付きUTF-8で書かれているが

# TODO

- 回復不能なエラー時にutil.c::FatalなどはExitProcessではなくTerminateProcessなどを呼び出すべきかもしれない。
- 回復不能なエラー時にutil.c:FatalなどはExitProcessではなくTerminateProcessなどを呼び出すべきかもしれない。
- フルスクリーンモード時に起動画面で端が欠ける問題を緩和したい。少なくとも紅魔郷と妖々夢で確認済み。
- 同様の仕組みで動作するツールと競合するため、競合を回避するような仕組みがあるといいかもしれない。例えば、thd3d8mitigationがd3d8.dllをロードするときに、システムディレクトリよりも指定の特定のディレクトリを優先するとか。
- もし実際のd3d8.dllにDirect3DCreate8以外のエクスポートされたシンボルがあったら、そのシンボルをハンドルしていないため、そのシンボルが参照されたときにthd3d8mitigationがクラッシュする潜在的な可能性がある。dumpbinコマンドで実際のd3d8.dllのエクスポートされたシンボルを調べて他のシンボルもハンドルすることは技術的には可能だが、Windowsのリバースエンジニアリング禁止条項に抵触する懸念がある。
  - Direct3DCreate8は足りないのが自明なので、ドキュメントやヘッダファイルを参考にフックしている。
- もし実際のd3d8.dllにDirect3DCreate8以外のエクスポートされたシンボルがあったら、そのシンボルをハンドルしていないため、そのシンボルが参照されたときにthd3d8mitigationがクラッシュする潜在的な可能性がある。dumpbinコマンドで実際のd3d8.dllのエクスポートされたシンボルを調べて他のシンボルもハンドルすることは技術的には可能だが、Windowsのリバースエンジニアリング禁止条項に抵触するのでしてはいけないと考えられる。
  - Direct3DCreate8は足りないのが自明なので、ドキュメントを参考にフックしている。
  - [Wineプロジェクト](https://www.winehq.org/)の取り組み方が参考になるかもしれない。Wineプロジェクトはこのような問題にどうやって取り組んでいるのだろうか。
    - ちなみに、WineはDirect3DCreate8以外に更にいくつかのシンボルをエクスポートしている。 https://github.com/wine-mirror/wine/blob/9d7a710fc0d1a0ecea17a68675d3899aff63ae0c/dlls/d3d8/d3d8.spec
- 独立したCランタイムへの依存は無くした方がいいかもしれない。静的リンクするといいのだろうか?