みなさん、こんにちは。
実はIEにOCXを組み込んで6日~10日間稼動させるとエラーが
発生する現象で悩んでいます。
下記エラーの原因や調査方法等、ご存知の方がおられましたら
是非、お教え下さい。
動作環境:
動作PC:Windows2000 メモリ512MB ディスク空容量:20GB
WindowsXP SP2 メモリ512MB ディスク空容量:40GB
MFCバージョン 7.1
プログラムはActivXコントロールです。
主な処理は
・ソケットによるTCP/IP通信、UDP/IP通信
・MapViewOfFile()による共有メモリの使用
・描画処理
・ファイルアクセス
ActiveXをIEに組み込んで、サーバPCと通信を行い、結果を
画面(デバイスコンテキスト)の描画する。
通信は1秒間に1回行うため、描画も1秒間に1回更新される。
現象:
起動後連続運転を行い、6~10日後に、MapViewOfFile()でエラーが発生する
エラー内容は、
1816(ERROR_NOT_ENOUGH_QUOTA )
「このコマンドを実行するのに十分なクォータがありません。」
です。
この時、スタートメニューをクリックしても、プログラム一覧が表示されなかったり
ウィンドウが閉じなかったり(イベントが受け付けられない状態)します。
質問:
エラー発生時に、ウィンドウの動作が明らかに不安定になっています。
タスクマネージャー、パフォーマンスモニタ(メモリ残り)を見ても
極端にメモリが減っているようでもありません。
デスクトップ・ヒープ・モニタで確認してもUsed Rateが増加していく
様子でもありません。
症状としてはメモリ容量が無くなったと言うよりは、メモリ割り当てに
使用する管理領域のようなものが少なくなってしまったように感じます。
このエラーが出る条件や調査方法などご存知の方おられましたら是非お教え下さい。
宜しくお願いいたします。
これだけだと何とも言いかねますけれど、
MapViewOfFileして使った後、確実にUnmapViewOfFileしているでしょうか?
割付を開放していないのに毎回割り付けていると同じような状況になりそうな
気がしますけれど。
動作ルートによって開放されないようなルートが無いか確認してみては
どうでしょうか?
ちなみに私はそういう状況になった事はないです。