22

Windows 2008 ターミナル サーバーで Delphi 7 アプリケーションを実行している一部のユーザーから報告された外部例外 C0000006 エラーを調査しているときに、この問題と関連する問題に関するいくつかの質問を見つけました。ターミナル サーバーで実行される標準の Delphi 7 データベース アプリケーションに適した、これらの設定の決定的なリストを誰かが持っているかどうか疑問に思っています。

私が見た質問は次のとおりです。

これらを読むどころか、.dpr ファイルに以下を追加する必要があると考えています。

const
  IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
  // Following are already defined in D7's Windows.pas
  IMAGE_FILE_RELOCS_STRIPPED               = $0001;
  IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP       = $0400;
  IMAGE_FILE_NET_RUN_FROM_SWAP             = $0800;

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED 
  or IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 
  or IMAGE_FILE_NET_RUN_FROM_SWAP}

編集:再配置セクションを削除する必要はおそらくないため、改訂版を次に示します。

const
  IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
  // Following are already defined in D7's Windows.pas
  IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP       = $0400;
  IMAGE_FILE_NET_RUN_FROM_SWAP             = $0800;

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}

{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 
  or IMAGE_FILE_NET_RUN_FROM_SWAP}
4

1 に答える 1

8
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_ SERVER_AWARE}
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED   
  or IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP   
  or IMAGE_FILE_NET_RUN_FROM_SWAP}

あなたのニーズに適しています。IMAGE_FILE_NET_RUN_FROM_SWAP は、C0000006 に対処するために必要なものだと思います。このエラーは通常、ネットワーク ドライブから実行し、ドライブが実行可能ファイルの要求でページを満たすことができない場合に発生します。

他の PE フラグはどちらでも問題ありません。私はあなたと同じようにそれを持っています。

IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE が正しいかどうかは、あなただけが知っています。MSDN に記載されているように、アプリはターミナル サービスの非レガシー アプリとみなされるための要件を満たしていますか? その場合は、IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE を使用します。

于 2014-01-15T22:53:42.287 に答える