ちまちまソース記述中

とりあえずわかりそうなところで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
);
とすると


・・・良いんか?これで。

とりあえず、ここまで