\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88/CFileMM.h on 'feature/Fixing_DirectSound_memoryleak' - RSS feed" href="/view?p=dtxmania/dtxmania.git;a=rss;f=DTXViewer%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/@FDK10%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%AD%C3%A3%C2%82%C2%B8%C3%A3%C2%82%C2%A7%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%88/CFileMM.h;h=refs/heads/feature/Fixing_DirectSound_memoryleak" type="application/rss+xml" /> \83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88/CFileMM.h on 'feature/Fixing_DirectSound_memoryleak' - RSS feed (no merges)" href="/view?p=dtxmania/dtxmania.git;a=rss;f=DTXViewer%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/@FDK10%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%AD%C3%A3%C2%82%C2%B8%C3%A3%C2%82%C2%A7%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%88/CFileMM.h;h=refs/heads/feature/Fixing_DirectSound_memoryleak;opt=--no-merges" type="application/rss+xml" /> \83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88/CFileMM.h on 'feature/Fixing_DirectSound_memoryleak' - Atom feed" href="/view?p=dtxmania/dtxmania.git;a=atom;f=DTXViewer%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/@FDK10%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%AD%C3%A3%C2%82%C2%B8%C3%A3%C2%82%C2%A7%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%88/CFileMM.h;h=refs/heads/feature/Fixing_DirectSound_memoryleak" type="application/atom+xml" /> \83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88/CFileMM.h on 'feature/Fixing_DirectSound_memoryleak' - Atom feed (no merges)" href="/view?p=dtxmania/dtxmania.git;a=atom;f=DTXViewer%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88/@FDK10%C3%A3%C2%83%C2%97%C3%A3%C2%83%C2%AD%C3%A3%C2%82%C2%B8%C3%A3%C2%82%C2%A7%C3%A3%C2%82%C2%AF%C3%A3%C2%83%C2%88/CFileMM.h;h=refs/heads/feature/Fixing_DirectSound_memoryleak;opt=--no-merges" type="application/atom+xml" />

OSDN Git Service

DirectSoundでClone()するとメモリリークする問題修正の途中版。WAVデータ実体への参照カウンタを実装済み。
[dtxmania/dtxmania.git] / DTXViewerプロジェクト / @FDK10ã\83\97ã\83­ã\82¸ã\82§ã\82¯ã\83\88 / CFileMM.h
1
2 // CFileMM - \83\81\83\82\83\8a\83}\83b\83v\83h\83t\83@\83C\83\8b\82ð\8eg\82Á\82½\83t\83@\83C\83\8b\93Ç\82Ý\8d\9e\82Ý\83N\83\89\83X
3
4 #pragma once
5
6 namespace FDK {
7         namespace General {
8
9 class CFileMM
10 {
11 public:
12         void    Init();         // \8f\89\8aú\89»
13         void    Term();         // \8fI\97¹\8f\88\97\9d
14
15         bool    Load( LPCTSTR filename );                                                                               // \83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý
16         bool    Load( tstring &filename )       {return Load( filename.c_str() );}      // \83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý
17
18         LPBYTE GetData()                        {return this->pData;}                           // \83t\83@\83C\83\8b\83f\81[\83^\82Ö\82Ì\83|\83C\83\93\83^\82ð\95Ô\82·
19         DWORD  GetSize()                        {return this->dwFileSizeLow;}           // \83t\83@\83C\83\8b\83T\83C\83Y\82Ì\8eæ\93¾
20         FILETIME GetLastWriteTime()     {return this->ftLastWriteTime;}         // \8dÅ\8fI\8dX\90V\8e\9e\8d\8f\82ð\95Ô\82·
21
22         static void GetExt( LPCTSTR filename, LPTSTR ext );             // \8ag\92£\8eq\82ð\92²\82×\82Ä ext[_MAX_EXT] \82É\8ai\94[\81i\97á\81F"txt")
23
24 public:
25         CFileMM();
26         virtual ~CFileMM();
27
28 protected:
29         tstring         strFileName;                            // \83t\83@\83C\83\8b\96¼
30         HANDLE          hFile;                                          // \83t\83@\83C\83\8b\83n\83\93\83h\83\8b
31         HANDLE          hFileMapping;                           // \83\81\83\82\83\8a\83}\83b\83v\83t\83@\83C\83\8b\83n\83\93\83h\83\8b
32         LPBYTE          pData;                                          // \83f\81[\83^\82Ö\82Ì\83|\83C\83\93\83^
33         TCHAR           strExt[_MAX_EXT];                       // \8ag\92£\8eq
34         FILETIME        ftLastWriteTime;                        // \8dÅ\8fI\8dX\90V\8e\9e\8d\8f
35         DWORD           dwFileSizeHigh;                         // \83t\83@\83C\83\8b\83T\83C\83Y\81i\8fã\88Ê32\83r\83b\83g\81j
36         DWORD           dwFileSizeLow;                          // \83t\83@\83C\83\8b\83T\83C\83Y\81i\89º\88Ê32\83r\83b\83g\81j
37 };
38
39         }//General
40 }//FDK
41
42 using namespace FDK::General;