/*++ Copyright (c) 1991 Microsoft Corporation Module Name: ifssys.hxx Abstract: This module contains the definition for the IFS_SYSTEM class. The IFS_SYSTEM class is an abstract class which offers an interface for communicating with the underlying operating system on specific IFS issues. Author: Norbert P. Kusters (norbertk) 03-Sep-1991 --*/ #if ! defined( _IFS_SYSTEM_ ) #define _IFS_SYSTEM_ #include "drive.hxx" #if defined ( _AUTOCHECK_ ) #define IFSUTIL_EXPORT #elif defined ( _IFSUTIL_MEMBER_ ) #define IFSUTIL_EXPORT __declspec(dllexport) #else #define IFSUTIL_EXPORT __declspec(dllimport) #endif DECLARE_CLASS( CANNED_SECURITY ); DECLARE_CLASS( WSTRING ); DECLARE_CLASS( BIG_INT ); DECLARE_CLASS( IFS_SYSTEM ); class IFS_SYSTEM { public: STATIC IFSUTIL_EXPORT BOOLEAN QueryNtfsVersion( OUT PUCHAR Major, OUT PUCHAR Minor, IN PLOG_IO_DP_DRIVE Drive, IN PVOID BootSectorData ); STATIC IFSUTIL_EXPORT BOOLEAN QueryFileSystemName( IN PCWSTRING NtDriveName, OUT PWSTRING FileSystemName, OUT PNTSTATUS ErrorCode DEFAULT NULL, OUT PWSTRING FileSystemNameAndVersion DEFAULT NULL ); STATIC IFSUTIL_EXPORT BOOLEAN DosDriveNameToNtDriveName( IN PCWSTRING DosDriveName, OUT PWSTRING NtDriveName ); STATIC IFSUTIL_EXPORT BOOLEAN NtDriveNameToDosDriveName( IN PCWSTRING NtDriveName, OUT PWSTRING DosDriveName ); STATIC IFSUTIL_EXPORT BOOLEAN QueryFreeDiskSpace( IN PCWSTRING DosDriveName, OUT PBIG_INT BytesFree ); STATIC IFSUTIL_EXPORT VOID QueryNtfsTime( OUT PLARGE_INTEGER NtfsTime ); STATIC VOID Reboot( IN BOOLEAN PowerOff DEFAULT FALSE ); STATIC IFSUTIL_EXPORT PCANNED_SECURITY GetCannedSecurity( ); STATIC IFSUTIL_EXPORT BOOLEAN EnableFileSystem( IN PCWSTRING FileSystemName ); STATIC IFSUTIL_EXPORT BOOLEAN IsFileSystemEnabled( IN PCWSTRING FileSystemName, OUT PBOOLEAN Error DEFAULT NULL ); STATIC IFSUTIL_EXPORT ULONG QueryPageSize( ); STATIC IFSUTIL_EXPORT BOOLEAN QueryCanonicalNtDriveName( IN PCWSTRING NtDriveName, OUT PWSTRING CanonicalNtDriveName ); STATIC BOOLEAN QueryNtSystemDriveName( OUT PWSTRING NtSystemDriveName ); STATIC BOOLEAN QuerySystemEnvironmentVariableValue( IN PWSTRING VariableName, IN ULONG ValueBufferLength, OUT PVOID ValueBuffer, OUT PUSHORT ValueLength ); STATIC IFSUTIL_EXPORT BOOLEAN IsArcSystemPartition( IN PCWSTRING NtDriveName, OUT PBOOLEAN Error ); STATIC BOOLEAN IsThisFat( IN BIG_INT Sectors, IN PVOID BootSectorData ); STATIC BOOLEAN IsThisFat32( IN BIG_INT Sectors, IN PVOID BootSectorData ); STATIC BOOLEAN IsThisHpfs( IN BIG_INT Sectors, IN PVOID BootSectorData, IN PULONG SuperBlock, IN PULONG SpareBlock ); STATIC IFSUTIL_EXPORT BOOLEAN IsThisNtfs( IN BIG_INT Sectors, IN ULONG SectorSize, IN PVOID BootSectorData ); STATIC IFSUTIL_EXPORT BOOLEAN FileSetAttributes( IN PCWSTRING FileName, IN ULONG NewFileAttributes, OUT PULONG OldAttributes ); STATIC BOOLEAN FileSetAttributes( IN HANDLE FileHandle, IN ULONG NewFileAttributes, OUT PULONG OldAttributes ); STATIC IFSUTIL_EXPORT BOOLEAN WriteToFile( IN PCWSTRING QualifiedFileName, IN PVOID Data, IN ULONG DataLength, IN BOOLEAN Append ); STATIC IFSUTIL_EXPORT BOOLEAN EnableVolumeCompression( IN PCWSTRING NtDriveName ); STATIC IFSUTIL_EXPORT BOOLEAN EnableVolumeUpgrade( IN PCWSTRING NtDriveName ); STATIC IFSUTIL_EXPORT BOOLEAN DismountVolume( IN PCWSTRING NtDriveName ); STATIC IFSUTIL_EXPORT BOOLEAN CheckValidSecurityDescriptor( IN ULONG Length, IN PISECURITY_DESCRIPTOR SecurityDescriptor ); STATIC IFSUTIL_EXPORT BOOLEAN IsVolumeDirty( IN PWSTRING NtDriveName, OUT PBOOLEAN Result ); private: STATIC PCANNED_SECURITY _CannedSecurity; }; #endif // _IFS_SYSTEM_