261 lines
5.6 KiB
C++
261 lines
5.6 KiB
C++
/*++
|
|
|
|
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.
|
|
|
|
--*/
|
|
|
|
#if ! defined( _IFS_SYSTEM_ )
|
|
|
|
#define _IFS_SYSTEM_
|
|
|
|
#include "drive.hxx"
|
|
|
|
#if defined ( _AUTOCHECK_ ) || defined( _EFICHECK_ )
|
|
#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_RELATIVE SecurityDescriptor
|
|
);
|
|
|
|
STATIC
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
IsVolumeDirty(
|
|
IN PWSTRING NtDriveName,
|
|
OUT PBOOLEAN Result
|
|
);
|
|
|
|
private:
|
|
|
|
STATIC PCANNED_SECURITY _CannedSecurity;
|
|
|
|
};
|
|
|
|
|
|
#endif // _IFS_SYSTEM_
|