Win32 APIの時代から 『メモリマップドファイル』 を利用する方法があったようなのですが、
こいつをC# (.Net 4.0)で扱うという状況が最近ありました。
ゴリゴリとAPIを書かなくて良いのでとても便利なのですが、ちょっとハマったのでc⌒っ*゚д゚)φ メモメモ...
string strMappedFileName = "hoge.dat" // MemoryMappedFileの名前 // MemoryMappedFileが存在している環境で、それを「Read権限」でOpenする using (var mmf = MemoryMappedFile.OpenExisting(strMappedFileName, MemoryMappedFileRights.Read)) { // MemoryMappedFileを「Read権限」で開いたから、Accessorも「Read権限」で開かなくてはならない using (var accessor = mmf.CreateViewAccessor(0, 0, MemoryMappedFileAccess.Read)) { accessor.ReadArray(...); } }
ポイントは、『MemoryMappedFileを開くときに指定した権限で、Accessorも開かなくてはならない』ですw
最初なかなか気づけなかったです・・・。 ( ;´・ω・`)私だけでしょうか・・?ww
参考URL:
[UnauthorizedAccessException on MemoryMappedFile in C# 4.]
http://stackoverflow.com/questions/1220913/unauthorizedaccessexception-on-memorymappedfile-in-c-4
2 件のコメント:
共有メモリはアクセス制限があった方が個人的には何となく安心かな。
「うっかりメインプログラムのデータ書き換えちゃった、てへっ☆」
なんていうのは避けたいからね・・・。僕もアクセス制限ありが嬉しいでつ(`・ω・´)
コメントを投稿