476 lines
5.6 KiB
C
476 lines
5.6 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
precomp.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This is the main header file.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Wesley Witt [wesw] 1-March-2000
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _FSCUTL_
|
||
|
#define _FSCUTL_
|
||
|
|
||
|
#include <nt.h>
|
||
|
#include <ntrtl.h>
|
||
|
#include <nturtl.h>
|
||
|
|
||
|
#include <stddef.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <tchar.h>
|
||
|
#include <malloc.h>
|
||
|
#include <time.h>
|
||
|
#include <errno.h>
|
||
|
#include <limits.h>
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <winioctl.h>
|
||
|
|
||
|
#include <objbase.h>
|
||
|
#include <locale.h>
|
||
|
|
||
|
#include "msg.h"
|
||
|
|
||
|
#ifdef _cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#define Add2Ptr(P,I) ((PVOID)((PUCHAR)(P) + (I)))
|
||
|
#define QuadAlign(P) (((((ULONG)(P)) + 7) & 0xfffffff8))
|
||
|
|
||
|
#define STRUCT_COUNT(n, type, name_length) \
|
||
|
((((n) * QuadAlign(sizeof(type)) + ((name_length) * sizeof(WCHAR))) + \
|
||
|
sizeof(type) - 1) / \
|
||
|
sizeof(type))
|
||
|
|
||
|
#define UnsignedI64NumberCheck(v,p) ((*p) != L'\0' || ((v) == _UI64_MAX && errno == ERANGE))
|
||
|
#define UnsignedNumberCheck(v,p) ((*p) != L'\0' || ((v) == ULONG_MAX && errno == ERANGE))
|
||
|
|
||
|
#define SHIFT(c,v) ((c)--,(v)++)
|
||
|
|
||
|
|
||
|
extern BOOL RunningOnWin2K;
|
||
|
|
||
|
//
|
||
|
// Exit codes. Note that we will treat asking for usage information as a success
|
||
|
//
|
||
|
|
||
|
#define EXIT_CODE_SUCCESS 0
|
||
|
#define EXIT_CODE_FAILURE 1
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Function Prototypes
|
||
|
//
|
||
|
|
||
|
INT
|
||
|
Help (
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
ListDrives (
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DriveType (
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
VolumeInfo (
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DiskFreeSpace (
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DismountVolume(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
MarkVolumeDirty(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
GetFileSystemStatistics(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
GetNtfsVolumeData(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
IsVolumeDirty(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
GetReparsePoint(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DeleteReparsePoint(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SetObjectId(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
GetObjectId(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DeleteObjectId(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
CreateOrGetObjectId(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
CreateUsnJournal(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QueryUsnJournal(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DeleteUsnJournal(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
EnumUsnData(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
ReadFileUsnData(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
CreateHardLinkFile(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
FindFilesBySid(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SetSparse(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QuerySparse(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SetSparseRange(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QuerySparseRange(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SetZeroData(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QueryAllocatedRanges(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
RegistryQueryValueKey(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
RegistrySetValueKey(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
GetDiskQuotaViolation(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DisableQuota(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
TrackQuota(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
EnforceQuota(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QuotaControl(
|
||
|
IN PWSTR Drive,
|
||
|
IN ULONG QuotaControBits
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
ChangeDiskQuota(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QueryDiskQuota(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SetValidDataLength(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
CreateNewFile(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SetShortName(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DisplayError(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
IsUserAdmin(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
IsVolumeLocalNTFS(
|
||
|
WCHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
IsVolumeNTFS(
|
||
|
PWCHAR path
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
IsVolumeLocal(
|
||
|
WCHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
PWSTR
|
||
|
GetFullPath(
|
||
|
IN PWSTR FilenameIn
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DisplayMsg(
|
||
|
LONG msgId,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
VOID DisplayErrorMsg(
|
||
|
IN LONG msgId,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
EnablePrivilege(
|
||
|
LPCWSTR SePrivilege
|
||
|
);
|
||
|
|
||
|
__int64 __cdecl My_wcstoi64(
|
||
|
const wchar_t *nptr,
|
||
|
wchar_t **endptr,
|
||
|
int ibase
|
||
|
);
|
||
|
|
||
|
unsigned __int64 __cdecl My_wcstoui64 (
|
||
|
const wchar_t *nptr,
|
||
|
wchar_t **endptr,
|
||
|
int ibase
|
||
|
);
|
||
|
|
||
|
unsigned long __cdecl My_wcstoul (
|
||
|
const wchar_t *nptr,
|
||
|
wchar_t **endptr,
|
||
|
int ibase
|
||
|
);
|
||
|
|
||
|
PWSTR
|
||
|
QuadToDecimalText(
|
||
|
ULONGLONG Value
|
||
|
);
|
||
|
|
||
|
PWSTR
|
||
|
QuadToHexText(
|
||
|
ULONGLONG Value
|
||
|
);
|
||
|
|
||
|
PWSTR
|
||
|
QuadToPaddedHexText(
|
||
|
ULONGLONG Value
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
UsnHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
QuotaHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
DirtyHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
FsInfoHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
ReparseHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
BehaviorHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
FileHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
VolumeHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
ObjectIdHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
SparseHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
HardLinkHelp(
|
||
|
IN INT argc,
|
||
|
IN PWSTR argv[]
|
||
|
);
|
||
|
|
||
|
#ifdef _cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif // _FSCUTL_
|