1

外部ハードウェア用の古い DLL インターフェイス ライブラリに取り組んでいます。

このライブラリは、共有データ セグメント ( #pragma data_seg(...)) を使用して、プロセス間でハードウェア ステータスの構造体を共有します。

これに基づいて、DLL は Windows によって 1 回だけロードされると考えましたが、DLL をロードするプロセスは、DLL間の通信全体が正しく機能するために同じパスからロードする必要があることがわかりました。ライブラリのドキュメントでさえ、これを述べています。

リンクされたページでは、次のことが明示的に報告されています。

同じモジュール名の DLL が既にメモリにロードされている場合、システムは、ロードされた DLL を解決する前に、それがどのディレクトリにあるかに関係なく、リダイレクトとマニフェストのみをチェックします。システムは DLL を検索しません。

だから私は少し混乱しています... DLLの場所は共有データセグメントに影響を与えますか(異なるプロセスの観点から)?

証拠はそうであることを示していますが、ドキュメントを誤解していましたか?

4

1 に答える 1