76 static DWORD ms_ArcAttrToWin32Attr(
int aa)
79 if ( (aa & FA_RDONLY) != 0 ) { r |= FILE_ATTRIBUTE_READONLY; }
80 if ( (aa & FA_HIDDEN) != 0 ) { r |= FILE_ATTRIBUTE_HIDDEN; }
81 if ( (aa & FA_SYSTEM) != 0 ) { r |= FILE_ATTRIBUTE_SYSTEM; }
82 if ( (aa & FA_LABEL) != 0 ) { r |= FILE_ATTRIBUTE_TEMPORARY; }
83 if ( (aa & FA_DIREC) != 0 ) { r |= FILE_ATTRIBUTE_DIRECTORY; }
84 if ( (aa & FA_ARCH) != 0 ) { r |= FILE_ATTRIBUTE_ARCHIVE; }
85 if ( (aa & FA_ENCRYPTED) != 0 ) { r |= FILE_ATTRIBUTE_ENCRYPTED; }
86 if ( r == 0 ) { r |= FILE_ATTRIBUTE_NORMAL; }
97 bool m_MakeWin32Info(WIN32_FIND_DATA& _win32Info)
104 m_pDll->
Func(arcAttr,
"GetAttribute", m_hArc);
105 _win32Info.dwFileAttributes = ms_ArcAttrToWin32Attr(arcAttr);
110 m_pDll->
Func(r,
"GetWriteTimeEx", m_hArc, &(_win32Info.ftLastWriteTime));
117 _win32Info.ftCreationTime = _win32Info.ftLastWriteTime;
118 _win32Info.ftLastAccessTime = _win32Info.ftLastWriteTime;
121 m_pDll->
Func(r,
"GetCreateTimeEx", m_hArc, &(_win32Info.ftCreationTime));
125 m_pDll->
Func(r,
"GetAccessTimeEx", m_hArc, &(_win32Info.ftLastAccessTime));
128 _win32Info.nFileSizeHigh = 0;
131 _win32Info.dwReserved0 = 0;
132 _win32Info.dwReserved1 = 0;
136 _win32Info.cAlternateFileName[0] = 0;
179 ASSERT0(
false,
"CArchiveFileFinder()",
"正しいアーカイバ管理クラスが指定されていません。" );
184 ASSERT0(
false,
"CArchiveFileFinder()",
"使用可能なアーカイバ管理クラスが指定されていません。" );
187 int r =
static_cast<int>(::GetFileAttributes(lpszArcFileName));
190 _GetLastError(
"GetFileAttributes");
194 m_strArcFile = lpszArcFileName;
207 if ( m_hArc != NULL )
243 virtual bool OnStart(WIN32_FIND_DATA& _data, LPCTSTR lpszName)
245 if ( m_pDll != NULL )
248 m_hArc = m_pDll->
OpenArchive(m_strArcFile, m_dwMode);
249 if ( m_hArc != NULL )
252 m_pDll->
Func(r,
"FindFirst", m_hArc, lpszName, &m_foundInfo);
255 return m_MakeWin32Info(_data);
270 virtual bool OnNext(WIN32_FIND_DATA& _data)
272 if ( m_pDll != NULL && m_hArc != NULL )
275 m_pDll->
Func(r,
"FindNext", m_hArc, &m_foundInfo);
278 return m_MakeWin32Info(_data);
290 if ( m_pDll != NULL && m_hArc != NULL )
void Finish(void)
[設定] 検索終了.
virtual ~CArchiveFileFinder(void)
デストラクタ
bool Initialize(CArchiverDllHandler *pDll, LPCTSTR lpszArcFileName, DWORD dwMode=0)
[設定] 初期化
CAscii GetTargetArchiveFileName(void) const
[取得] 使用アーカイブファイル名、取得
CArchiverDllHandler * GetDllHandler(void) const
[取得] 使用アーカイバDLL管理クラス、参照
CArchiveFileFinder(void)
コンストラクタ
const TIndividualInfo * RefPtr(void) const
[取得] 検索情報参照
virtual void OnFinish(void)
[通知] 検索終了通知
virtual bool OnStart(WIN32_FIND_DATA &_data, LPCTSTR lpszName)
[通知] 検索開始通知
virtual bool OnNext(WIN32_FIND_DATA &_data)
[通知] 次検索通知
int CloseArchive(HARC hArc)
[処理] アーカイブClose.
bool IsReady(void) const
[確認] DLL準備確認
bool QueryFunctionList(const int iFunction)
[確認] ファンクションチェック.
R Func(R &_r, LPCSTR lpszFuncName)
[実行] DLL関数実行
HARC OpenArchive(LPCSTR lpszArcFile, const DWORD dwMode=0)
[処理] アーカイブOpen.
CStrT Left(size_t iSize) const
[作成] 範囲取得.
void OnCatch(void) const
[表示] 内容表示
void Copy(LPSTR _dst, LPCSTR src)
[複製] 文字列コピー(ASCII/SJIS用)
void Zero(V &value)
[設定] ゼロクリア.
char szFileName[FNAME_MAX32+1]
格納ファイル名
DWORD dwOriginalSize
ファイルのサイズ