#if !defined(AFX_FILE32_H__F49F53CF_9535_4C6B_AD7B_67A182FC687E__INCLUDED_)
#define AFX_FILE32_H__F49F53CF_9535_4C6B_AD7B_67A182FC687E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// File32.h : _xZkqqHx_iDhHiDgCiDfPiBfL_xHqqkZx_ _xZkqqHx_iDhEiDeAiDeDiDiL_xHqqkZx_
//

#include "UtilFile.h"	// For FTFileKind.
#include "FileBase.h"	// Superclass.

#ifdef SUPER_CLASS
#undef SUPER_CLASS
#endif
#define SUPER_CLASS FCFileBase

/////////////////////////////////////////////////////////////////////////////
// FCFile32 _xZkqqHx_iDeFiDeCiDjDiDgIiDeF_xHqqkZx_

/*************************************************************************
 * <_xZkqqHx_iDeOiDiJiDfI_xHqqkZx_>	FCFile32
 *
 * <_xZkqqHx_iLeAjEfM_xHqqkZx_>	_xZkqqHx_iCfCiCfBiDhCiDgCiDgHiDhEiDeAiDeDiDiLiCpAiNoMjAkMiBeBjAkHiMoEiClHiCoJiClBiCmGiCpAiJmCjEfMiCmJiClHiCoJiBeC_xHqqkZx_
 *			CFile_xZkqqHx_iCmGjDkPjHgMiCmMiLeAjEfMiCpAiOjNiCmCiBeC_xHqqkZx_
 *			CFile_xZkqqHx_iCmNiBeBiDhEiDeAiDeDiDiLiCmMjAfGiLeLiNoMjAkMiOjOiCmJiBeBiKpJjBlGiDhEiDeAiDeDiDiLiCkKjBlGiNnNiClFiClN_xHqqkZx_
 *			_xZkqqHx_iPoKiNiHiCmJiDeHiDiJiBfLiCpAjEkNjAlGiClDiClJiCoJiClBiCmGiCkKiPgPjHiIiCmIiCkCiCkKiBeB_xHqqkZx_FCFile32_xZkqqHx_iCmN_xHqqkZx_
 *			_xZkqqHx_iDeJiDhGiDfGiDiHiDjDiCmJiCoGiCmBiCmEiDeHiDiJiBfLiCpAjEkNjAlGiClDiClJiCoJiClBiCmGiCkKiPgPjHiIiCoJiBeC_xHqqkZx_
 *
 * <_xZkqqHx_jHjKjHpA_xHqqkZx_>	03.11.23 Fukushiro M. _xZkqqHx_iNoMjAkM_xHqqkZx_
 *************************************************************************/
class FCFile32 : public SUPER_CLASS
{
protected:
typedef SUPER_CLASS BASE_CLASS;

// _xZkqqHx_iDiBiDjDiDgPiKnGjAjEiBeC_xHqqkZx_
public:
	FCFile32 ();
	FCFile32 (	const wchar_t* wcpFilePath,
				DWORD dwDesiredAccess,
				DWORD dwShareMode,
				DWORD dwCreationDisposition,
				DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL);
	virtual ~FCFile32 ();
	virtual BOOL	Open (	const wchar_t* wcpFilePath,
							DWORD dwDesiredAccess,
							DWORD dwShareMode,
							DWORD dwCreationDisposition,
							DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL);
	virtual void	Close ();
	virtual void	Flush ();
	virtual const WString& GetFilePathW () const;
	virtual const WString& GetFileNameW () const;
	virtual flint	GetPosition64 () const;
	virtual flint	Seek64 (flint fliOffset, DWORD dwFrom);
	virtual flint	GetLength64 () const;
	virtual void	SetLength64 (flint fliNewLen);
	virtual flint	Read64 (void* lpBuf, flint fliCount);
	virtual void	Write64 (const void* lpBuf, flint fliCount);
	virtual FTFileKind	GetFileKind () const;
	virtual BOOL	IsFileOpened () const;
	virtual DWORD	GetDesiredAccess () const;
	virtual BOOL	GetFileTime (	FDTIME* lpCreationTime,
									FDTIME* lpLastAccessTime,
									FDTIME* lpLastWriteTime) const;

	static void		Remove (const wchar_t* wcpFile);
	static void		Rename (const wchar_t* wcpFileFrom,
							const wchar_t* wcpFileTo);
	static BOOL		Copy (	const wchar_t* wcpFileFrom,
							const wchar_t* wcpFileTo);

// _xZkqqHx_iDiBiDjDiDgPjFmPjAjEiBeC_xHqqkZx_
protected:
	HANDLE	m_hFile;
	WString	m_wstrFilePath;
	WString	m_wstrFileName;
	DWORD	m_dwDesiredAccess;	// Open_xZkqqHx_iOjOiCmM_xHqqkZx_READ/WRITE_xZkqqHx_iDhEiDiJiDePiBeC_xHqqkZx_
}; // class FCFile32.

/////////////////////////////////////////////////////////////////////////////

#endif // !defined(AFX_FILE32_H__F49F53CF_9535_4C6B_AD7B_67A182FC687E__INCLUDED_)
