C言語の初心者ですが、ファイルマッピングについて教えて頂きたいことがあります。
あるファイルをMapViewOfFileを使用し、複数タスクの共有メモリとして使用中に、
クローズせずに再マッピング(?)みたいなことはできないでしょうか?
例えば、マッピングするAというファイルの内容が、変数A=0、変数B=0、変数C=0、としてOpenFileMapping(FILE_MAP_ALL_ACCESS)されている。
次に、Bというファイルの内容が、Aファイルと変数名は変わらずで、
変数A=1、変数B=1、変数C=1、とします。
ここでAファイルをクローズ(他タスクが参照するかもしれないので)せずに、
AファイルをBファイルの内容にしたいということなのです。
こんなことは、やはりできないのでしょうか?
もちろん、Aファイルがマッピングされているので、直接Aを変更すれば良いのですが、
ファイル内容が膨大なため、なんとか再マッピング(?)できればと思ったのです。
OSはWindows2000で、VC6.0になります。
わかりにくい文章で申し訳ございませんが、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>直接Aを変更すれば良いのですが、ファイル内容が膨大なため
膨大というのはどの程度ですか?
数MBくらいなら、Bファイルを読み込んでおいて、memcpy等でコピーするだけですよね。
この回答への補足
回答ありがとうございます。
ファイルのサイズは、約14MBです。膨大というのは大げさでした。すみません。
ファイルを読み込んで変更する以外は無理なのでしょうか?
No.2
- 回答日時:
#1です。
>ファイルを読み込んで変更する以外は無理なのでしょうか?
最初の読み込みはBファイルを使い、その後はAファイルを使うようなマッピングが出来なければならないですが、そういう事は出来ません。
VirtualAlloc、AllocateUserPhysicalPages等、SEHを使用して自前で作れないかとも思いましたが、MSDNを読む限りでは、同一ページをプロセス間で共用できそうな気がしませんし、それにSEHを使うなんてマニアックすぎですよね。
MapViewOfFileにFILE_MAP_COPYを指定してAファイルが変更されないようにしても、Win2000だと共有メモリにはならないので、この方法も駄目です。
共有メモリが初期化される事がある以上、なんらかの排他制御と各タスクが再起動するような機能が必要だと想像できます。
再起動には時間がかかる。と思うしか無いと思います。
遅れまして申し訳ございません。
2度に渡り解答して頂きありがとうございました。
結局、inthefloiさんの言う通りファイル読み込みmemcpyすることにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- Excel(エクセル) エクセルのファイルにリンクを貼る方法 4 2023/06/30 11:09
- Windows 10 renameコマンドでファイル名からアンダースコアを消す方法 5 2023/04/24 13:33
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
binファイルを解凍したいの...
-
exeファイルをデータ転送サービ...
-
VBAで特定の場所にあるCSVファ...
-
VBSが起動しない
-
実行ファイル(.exeファイル)...
-
ELFファイルを逆コンパイルした...
-
フォルダ内のファイルに順番に...
-
C言語---ファイルに出力したデ...
-
拡張子VCFのファイルについて教...
-
拡張子が.pisのファイルを編集...
-
CSSファイルの日本語コメントが...
-
jarファイル
-
exeファイルの中身を見る方法は...
-
HPにBGMをつけたいのですが・・...
-
ゲームの中身を見てみたい
-
winshellからdviを実行すると、...
-
access VBAで指定のPDFを開きたい
-
参照するファイルをワイルドカ...
-
ゲームフォルダの中に画像ファ...
-
CSSを1ページに1枚作るのって変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセス 壊れた? 「ファイ...
-
#include <Windows.h>というヘ...
-
binファイルを解凍したいの...
-
Latexで図番号だけを「図1.1」...
-
.NETアプリを作ったときの .man...
-
C言語---ファイルに出力したデ...
-
exeファイルをデータ転送サービ...
-
Word VBA MSGBOX 内で降順表示
-
jarファイル
-
公文書のxmlファイルの開き方が...
-
参照するファイルをワイルドカ...
-
パイソンでpy ファイルと p...
-
コマンドプロンプトで、指定し...
-
exeファイルの中身を見る方法は...
-
コマンドプロンプトで作成日時...
-
ハッシュ値を取る時はファイル...
-
CSSを1ページに1枚作るのって変...
-
実行ファイル(.exeファイル)...
-
バッチ処理で追記コピーしたい
-
自分で作成した重要ファイルを...
おすすめ情報