ちまちまソース記述中
とりあえずわかりそうなところでFMOの作成部分をさくせ〜
やることは
Mutexを開いて所有権を取得
CreateFileMappingでファイルマッピング オブジェクトを作成
(作成されていた場合は、既存のファイルマッピングオブジェクトを開く)
MapViewOfFile ファイルマッピングオブジェクトをメモリ上にマップする
メモリ上にマップしたものにFMOを書き込む
MapViewOfFileを閉じる
Mutexを閉じて所有権を放棄
だけだよな、たぶん。
- Mutex
MutexはMutexクラスを使えばいい・・のかな?
WaitOneってWaitForSingleObjectと同意と考えちゃっていいんだろうか
・・・ところで、これってどんなときにだめなんだろう?
- CreateFileMapping
CreateFileMappingはWin32APIだから・・・DllImportか、よくわかんないんだよな、これ
MSDNにはC(C++なのかな?)での書き方しかのってないし・・・型の宣言が違うだけなんだよな
・・・何使えばいいんだ?
困ったときのグーグル先生頼みというわけで・・・あんま引っかからないな
とりあえず
HANDLE → ntPtr
DWORD → uint
LPCTSTR → string
LPSECURITY_ATTRIBUTESは構造体?
IntPtrで代用できるみたいなのでそれでいいか
(使ってないのかな?)
で型宣言してみることにする
と言うわけで(どんなわけだ)
HANDLE CreateFileMapping(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpAttributes,
uint flProtect,
uint dwMaximumSizeHigh,
uint dwMaximumSizeLow,
LPCTSTR lpName
);
を
IntPtr CreateFileMapping(
IntPtr hFile,
LPSECURITY_ATTRIBUTES lpAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
string lpName
);
としてみる
- MapViewOfFile
MapViewOfFileもWin32APIだから・・・グーグル先生頼みで
LPVOID → IntPtr
HANDLE → IntPtr
DWORD →uint
SIZE_T →int
で
LPVOID MapViewOfFile(
HANDLE hFileMappingObject,
DWORD dwDesiredAccess,
DWORD dwFileOffsetHigh,
DWORD dwFileOffsetLow,
SIZE_T dwNumberOfBytesToMap
);
を
IntPtr MapViewOfFile(
IntPtr hFileMappingObject,
uint dwDesiredAccess,
uint dwFileOffsetHigh,
uint dwFileOffsetLow,
int dwNumberOfBytesToMap
);
とすると
・・・良いんか?これで。
とりあえず、ここまで