mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
2.9 KiB
161 lines
2.9 KiB
|
|
|
|
//+-----------------------------------------------------------------------
|
|
//
|
|
// File: CDir.hxx
|
|
//
|
|
// Purpose: Declare the CDirectory class. Objects of this class
|
|
// are used to represent a directory, and provide additional
|
|
// information about it.
|
|
//
|
|
//+-----------------------------------------------------------------------
|
|
|
|
|
|
#ifndef _C_DIR_HXX_
|
|
#define _C_DIR_HXX_
|
|
|
|
// --------
|
|
// Includes
|
|
// --------
|
|
|
|
#include "CFMEx.hxx"
|
|
|
|
|
|
// --------
|
|
// Typedefs
|
|
// --------
|
|
|
|
// An enumeration of the possible file system types.
|
|
|
|
typedef enum
|
|
{
|
|
fstFAT,
|
|
fstNTFS,
|
|
fstOFS,
|
|
fstUnknown
|
|
} enumFileSystemType;
|
|
|
|
|
|
// ----------
|
|
// CDirectory
|
|
// ----------
|
|
|
|
class CDirectory
|
|
{
|
|
|
|
// Construction/Deconstruction
|
|
|
|
public:
|
|
|
|
CDirectory();
|
|
~CDirectory();
|
|
|
|
// Public Member Functions
|
|
|
|
public:
|
|
|
|
BOOL Initialize(); // Defaulted input
|
|
BOOL Initialize( LPCWSTR wszDirectory ); // Unicode input
|
|
BOOL Initialize( LPCSTR szDirectory ); // ANSI input
|
|
|
|
enumFileSystemType GetFileSystemType() const;
|
|
LPCWSTR GetFileSystemName() const;
|
|
LPCWSTR GetDirectoryName() const;
|
|
|
|
|
|
// Private Member Functions
|
|
|
|
private:
|
|
|
|
void DisplayErrors( BOOL bSuccess, LPCWSTR wszFunctionName );
|
|
VOID MakeRoot(WCHAR *pwszPath);
|
|
unsigned GetRootLength(const WCHAR *pwszPath);
|
|
|
|
|
|
// Member Data
|
|
|
|
private:
|
|
|
|
WCHAR m_wszDirectory[ MAX_UNICODE_PATH + sizeof( L'\0' )];
|
|
WCHAR m_wszFileSystemName[ MAX_UNICODE_PATH + sizeof( L'\0' )];
|
|
enumFileSystemType m_FileSystemType;
|
|
|
|
WCHAR m_wszErrorMessage[ 200 ];
|
|
long m_lError;
|
|
|
|
};
|
|
|
|
|
|
// ----------------
|
|
// Inline Functions
|
|
// ----------------
|
|
|
|
|
|
// CDirectory::CDirectory
|
|
|
|
inline CDirectory::CDirectory()
|
|
{
|
|
wcscpy( m_wszDirectory, L"" );
|
|
wcscpy( m_wszFileSystemName, L"" );
|
|
wcscpy( m_wszErrorMessage, L"" );
|
|
m_lError = 0;
|
|
m_FileSystemType = fstUnknown;
|
|
|
|
}
|
|
|
|
// CDirectory::~CDirectory
|
|
|
|
inline CDirectory::~CDirectory()
|
|
{
|
|
}
|
|
|
|
// CDirectory::GetFileSystemType
|
|
|
|
inline enumFileSystemType CDirectory::GetFileSystemType() const
|
|
{
|
|
return m_FileSystemType;
|
|
}
|
|
|
|
// CDirectory::GetFileSystemName
|
|
|
|
inline LPCWSTR CDirectory::GetFileSystemName() const
|
|
{
|
|
return m_wszFileSystemName;
|
|
}
|
|
|
|
// CDirectory::GetDirectoryName
|
|
|
|
inline LPCWSTR CDirectory::GetDirectoryName() const
|
|
{
|
|
return m_wszDirectory;
|
|
}
|
|
|
|
|
|
// CDirectory::DisplayErrors
|
|
|
|
inline void CDirectory::DisplayErrors( BOOL bSuccess, LPCWSTR wszFunctionName )
|
|
{
|
|
if( !bSuccess )
|
|
{
|
|
wprintf( L"Error in %s (%08x)\n %s\n",
|
|
wszFunctionName, m_lError, m_wszErrorMessage );
|
|
}
|
|
}
|
|
|
|
|
|
// ------
|
|
// Macros
|
|
// ------
|
|
|
|
// Early-exit macro.
|
|
|
|
#undef EXIT
|
|
#define EXIT( error ) \
|
|
{\
|
|
wcscpy( m_wszErrorMessage, ##error );\
|
|
goto Exit;\
|
|
}
|
|
|
|
|
|
|
|
#endif // _C_DIR_HXX_
|