WindowsXP-SP1/base/fs/hsm/gui/rsoptcom/rscln/rscln2.h
2020-09-30 16:53:49 +02:00

96 lines
2.0 KiB
C++

/*++
© 1998 Seagate Software, Inc. All rights reserved.
Module Name:
RsCln2.h
Abstract:
This header is local to the RsCln module. It contains defined constants
and the class definitions for CRsClnVolume and CRsClnFile. See the
implementation files for descriptions of these classes.
Author:
Carl Hagerstrom [carlh] 20-Aug-1998
Revision History:
--*/
#ifndef _RSCLN2_H
#define _RSCLN2_H
#include <stdafx.h>
#define MAX_VOLUME_NAME 64
#define MAX_FS_NAME 16
#define MAX_DOS_NAME 4
class CRsClnVolume
{
public:
CRsClnVolume( CRsClnServer* pServer, WCHAR* StickyName );
~CRsClnVolume();
HRESULT VolumeHasRsData( BOOL* );
CString GetBestName( );
HRESULT RemoveRsDataFromVolume( );
HANDLE GetHandle( );
CString GetStickyName( );
private:
HRESULT GetVolumeInfo( );
HRESULT FirstRsReparsePoint(LONGLONG*, BOOL*);
HRESULT NextRsReparsePoint(LONGLONG*, BOOL*);
WCHAR m_fsName[MAX_FS_NAME];
WCHAR m_bestName[MAX_STICKY_NAME];
WCHAR m_volumeName[MAX_VOLUME_NAME];
WCHAR m_dosName[MAX_DOS_NAME];
CString m_StickyName;
DWORD m_fsFlags;
HANDLE m_hRpi;
HANDLE m_hVolume;
CRsClnServer* m_pServer;
};
class CRsClnFile
{
public:
CRsClnFile( CRsClnVolume* pVolume, LONGLONG FileID );
~CRsClnFile();
HRESULT RemoveReparsePointAndFile();
CString GetFileName( );
HRESULT ClearReadOnly( );
HRESULT RestoreAttributes( );
private:
HRESULT GetFileInfo( LONGLONG FileID );
CString m_FileName;
CString m_FullPath;
CRsClnVolume* m_pVolume;
UCHAR m_ReparseData[ sizeof(REPARSE_DATA_BUFFER) + sizeof(RP_DATA) ];
PREPARSE_DATA_BUFFER m_pReparseData;
PRP_DATA m_pHsmData;
FILE_BASIC_INFORMATION m_BasicInfo;
};
#endif // _RSCLN2_H