私はWindows 7 Ultimate 64ビットを実行しています。Windowsサービスでのデータ実行防止
南アフリカ(TELKOM)の主要テレコムサービスプロバイダからリリースされたdllを呼び出すWindowsサービス(C#で書かれています)があります。 DLLはMPIEst.dllと呼ばれ、C++で書かれていると思います。リンク先の人(http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/a7e5aafc-bb52-42c3-a3b7-19cb4cfbf6d5/)には同じ問題がありました。
DEP(Data Execution Prevention)が「DLL 'MPIest.dll'を読み込めません:メモリロケーションへのアクセスが無効です(HRESULT:0x800703E6の例外)」というエラーが発生していることがわかりました。だから、私は「OK、それは簡単です...コンピュータ全体のDEPをオフにして、何が起こるかを見てみましょう」と考えました。だから私はこれを実行し、結果はさらに奇妙になります... Windowsサービスは何も起こらないように正常に実行されますが、DLLへのすべての呼び出しは何もしません。
DLLを使用する通常のC#コンソールアプリケーションを作成したときに、DLLメソッドが値を返して正常に動作したためですが、Windowsサービスから実行すると、DLLメソッドはゼロ以外の結果を返します。何かが間違っていたことを示します。物事には、リターンコードが何を意味するのかを示すドキュメントはありません。
とにかく、システム全体のDEPを無効にしても、Windowsサービスには影響しません。 誰もこれまでに遭遇したことはありますか? Windowsサービスとコンソールアプリケーションはまったく同じコードを呼び出し、まったく同じことをしますが、コンソールアプリケーションは正しく機能しますが、Windowsサービスは何もしませんが、DEPはシステム全体でオフになっています。
ありがとうございます。