0

私が取り組んでいるシステムでは、多くのプロセスが実行されています。共有メモリのコンテキストでは、一部はサーバーであり、一部はクライアントです。

CreateFileMappingと を介して共有メモリを作成/アクセスしますMapViewOfFile

最近、クライアントの1つで構造を変更しました。これにより、クライアントは、サーバープロセスによって作成されたものよりも大きい共有メモリの領域をマップしようとしました。結果はアクセス拒否です。

私の問題は、そもそもどのダーンプロセスがメモリを作成したのかわからないということです。どのサーバープログラムを再コンパイルする必要があるかを判断するために、共有メモリに関するそのようなメタ情報にアクセスする方法はありますか?

確認するために、MapViewOfFileこれは失敗しており、エラーコードは5:アクセスが拒否されました。

4

1 に答える 1

0

共有メモリには、動的(CreateFileMapping ...シナリオを使用)と静的(PEセクションの特性で宣言されたメモリマッピング)の2種類があります。ファイルおよびプロセスレベルで共有メモリ特性を持つPEセクションの存在をテストできます。

一方、MapViewOfFileが失敗した理由は、マップされたメモリのサイズの違い以外である可能性があります(たとえば、クレデンシャル、メモリのオフセットなど)。

于 2012-05-17T06:36:12.963 に答える