FileMappingの解放
- 題名: FileMappingの解放
- 著者: telnet
- 日時: 2012/06/28 21:17:24
- ID: 30656
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: FileMappingの解放
- 著者: オショウ
- 日時: 2012/06/29 0:44:19
- ID: 30657
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: FileMappingの解放
- 著者: telnet
- 日時: 2012/06/29 9:30:26
- ID: 30659
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: FileMappingの解放
- 著者: telnet
- 日時: 2012/06/29 10:52:53
- ID: 30661
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
メモリを使用してデータのやりとりを行う際、
サイズが変わるタイミングで解放後、再度領域確保という流れで
プログラムを作成したいのですが解放を検知できません。
現在以下のようなプログラムを組んでいます。
@キー"ABC"という名でCreateFileMapping、MapViewOfFileで確保
ACloseHandle、UnmapViewOfFileで解放
BOpenFileMappingでアクセス(ここでハンドルが取得できない予定が取得出来てしまう)
void OpenMap(ref IntPtr HMap,ref IntPtr LMap, int rLen)
{
HMap = OpenFileMapping(emModGDeclareWinAPI.FILE_MAP_ALL_ACCESS, false, "ABC");
if (HMap==IntPtr.Zero))//<-再度アクセスした場合はハンドルが0になると思うのに取得できてしまう。
{
HMap= CreateFileMapping((UIntPtr)0xFFFFFFFF, IntPtr.Zero, PAGE_READWRITE, 0, rLen, "ABC");//0:異常、0以外:正常
}
LMap = MapViewOfFile(HMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
}
void CloseMap(ref IntPtr HMap, ref IntPtr LMap)
{
CloseHandle(HMap);
UnmapViewOfFile(LMap);
}
void Main()
{
IntPtr Map1;
IntPtr Map2;
OpenMap(ref Map1,ref Map2,10);
CloseMap(ref Map1,ref Map2);
OpenMap(ref Map1,ref Map2,20);
}
出来ればOpenFileMappingで解放しているかを確認したいのですが
別の解放方法があるのでしょうか?