1302 lines
18 KiB
C
1302 lines
18 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1990-1994 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
fdproto.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Function prototypes.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Ted Miller (tedm) 7-Jan-1992
|
||
|
|
||
|
Revision:
|
||
|
|
||
|
Bob Rinne (bobri) 2-Feb-1994
|
||
|
Moved definitions from ArcInst here to get rid of dependency with
|
||
|
that source project.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
// stuff in fdengine.c
|
||
|
|
||
|
BOOLEAN
|
||
|
SignatureIsUniqueToSystem(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Signature
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdSetDiskSignature(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Signature
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
FdGetDiskSignature(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
IsDiskOffLine(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
IsRegionCommitted(
|
||
|
PREGION_DESCRIPTOR RegionDescriptor
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
ChangeCommittedOnDisk(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ClearCommittedDiskInformation(
|
||
|
);
|
||
|
|
||
|
// stuff in fdisk.c
|
||
|
|
||
|
LONG
|
||
|
MyFrameWndProc(
|
||
|
IN HWND hwnd,
|
||
|
IN UINT msg,
|
||
|
IN UINT wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DeterminePartitioningState(
|
||
|
IN OUT PDISKSTATE DiskState
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DrawDiskBar(
|
||
|
IN PDISKSTATE DiskState
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
AdjustMenuAndStatus(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// stuff in fdinit.c
|
||
|
|
||
|
BOOL
|
||
|
InitializeApp(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CreateDiskState(
|
||
|
OUT PDISKSTATE *DiskState,
|
||
|
IN DWORD Disk,
|
||
|
OUT PBOOL SignatureCreated
|
||
|
);
|
||
|
|
||
|
#if DBG && DEVL
|
||
|
|
||
|
VOID
|
||
|
StartThread2(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
VOID
|
||
|
DisplayInitializationMessage(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// stuff in fdlistbx.c
|
||
|
|
||
|
VOID
|
||
|
Selection(
|
||
|
IN BOOL MultipleSel,
|
||
|
IN PDISKSTATE DiskState,
|
||
|
IN DWORD region
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
MouseSelection(
|
||
|
IN BOOL MultipleSel,
|
||
|
IN OUT PPOINT point
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SubclassListBox(
|
||
|
IN HWND hwnd
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
InitializeListBox(
|
||
|
IN HWND hwndListBox
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ResetLBCursorRegion(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WMDrawItem(
|
||
|
IN PDRAWITEMSTRUCT pDrawItem
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ForceLBRedraw(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
// stuff in fdmisc.c
|
||
|
|
||
|
BOOL
|
||
|
AllDisksOffLine(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdShutdownTheSystem(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
LPTSTR
|
||
|
LoadAString(
|
||
|
IN DWORD StringID
|
||
|
);
|
||
|
|
||
|
PWSTR
|
||
|
LoadWString(
|
||
|
IN DWORD StringID
|
||
|
);
|
||
|
|
||
|
int
|
||
|
GetHeightFromPoints(
|
||
|
IN int Points
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
UnicodeHack(
|
||
|
IN PCHAR Source,
|
||
|
OUT LPTSTR Dest
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
TotalRedrawAndRepaint(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
CommonDialog(
|
||
|
IN DWORD MsgCode,
|
||
|
IN LPTSTR Caption,
|
||
|
IN DWORD Flags,
|
||
|
IN va_list arglist
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ErrorDialog(
|
||
|
IN DWORD ErrorCode,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
WarningDialog(
|
||
|
IN DWORD MsgCode,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
ConfirmationDialog(
|
||
|
IN DWORD MsgCode,
|
||
|
IN DWORD Flags,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
InfoDialog(
|
||
|
IN DWORD MsgCode,
|
||
|
...
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
InitVolumeLabelsAndTypeNames(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DetermineRegionInfo(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
OUT PWSTR *TypeName,
|
||
|
OUT PWSTR *VolumeLabel,
|
||
|
OUT PWCH DriveLetter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
InitializeDriveLetterInfo(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
CHAR
|
||
|
GetAvailableDriveLetter(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
MarkDriveLetterUsed(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
MarkDriveLetterFree(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
DriveLetterIsAvailable(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
AllDriveLettersAreUsed(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetDiskNumberFromDriveLetter(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetPartitionNumberFromDriveLetter(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
PREGION_DESCRIPTOR
|
||
|
LocateRegionForFtObject(
|
||
|
IN PFT_OBJECT FtObject
|
||
|
);
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
VOID
|
||
|
FdiskAssertFailedRoutine(
|
||
|
IN char *Expression,
|
||
|
IN char *FileName,
|
||
|
IN int LineNumber
|
||
|
);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
// stuff in fddlgs.c
|
||
|
|
||
|
VOID
|
||
|
CenterDialog(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SubclassListBox(
|
||
|
IN HWND hwnd
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
MinMaxDlgProc(
|
||
|
IN HWND hwnd,
|
||
|
IN UINT msg,
|
||
|
IN DWORD wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
DriveLetterDlgProc(
|
||
|
IN HWND hdlg,
|
||
|
IN DWORD msg,
|
||
|
IN DWORD wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
ColorDlgProc(
|
||
|
IN HWND hdlg,
|
||
|
IN DWORD msg,
|
||
|
IN DWORD wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
DisplayOptionsDlgProc(
|
||
|
IN HWND hdlg,
|
||
|
IN UINT msg,
|
||
|
IN DWORD wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
InitRectControl(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
// Format and label support routines - dmfmifs.c
|
||
|
|
||
|
VOID
|
||
|
FormatPartition(
|
||
|
PREGION_DESCRIPTOR RegionDescriptor
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
LabelPartition(
|
||
|
PREGION_DESCRIPTOR RegionDescriptor
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
FormatDlgProc(
|
||
|
IN HWND hDlg,
|
||
|
IN UINT wMsg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
INT
|
||
|
LabelDlgProc(
|
||
|
IN HWND hDlg,
|
||
|
IN UINT wMsg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
CancelDlgProc(
|
||
|
IN HWND hDlg,
|
||
|
IN UINT wMsg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LPARAM lParam
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
UnloadIfsDll(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// stuff in fdmem.c
|
||
|
|
||
|
PVOID
|
||
|
Malloc(
|
||
|
IN ULONG Size
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
Realloc(
|
||
|
IN PVOID Block,
|
||
|
IN ULONG NewSize
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
Free(
|
||
|
IN PVOID Block
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ConfirmOutOfMemory(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
// stuff in fdstleg.c
|
||
|
|
||
|
VOID
|
||
|
UpdateStatusBarDisplay(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ClearStatusArea(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DrawLegend(
|
||
|
IN HDC hdc,
|
||
|
IN PRECT rc
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DrawStatusAreaItem(
|
||
|
IN PRECT rc,
|
||
|
IN HDC hdc,
|
||
|
IN LPTSTR Text,
|
||
|
IN BOOL Unicode
|
||
|
);
|
||
|
|
||
|
|
||
|
// stuff in fdprof.c
|
||
|
|
||
|
VOID
|
||
|
WriteProfile(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ReadProfile(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
// stuff in fdft.c
|
||
|
|
||
|
ULONG
|
||
|
InitializeFt(
|
||
|
IN BOOL DiskSignaturesCreated
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
SaveFt(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdftCreateFtObjectSet(
|
||
|
IN FT_TYPE FtType,
|
||
|
IN PREGION_DESCRIPTOR *Regions,
|
||
|
IN DWORD RegionCount,
|
||
|
IN FT_SET_STATUS Status
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
FdftUpdateFtObjectSet(
|
||
|
IN PFT_OBJECT_SET FtSet,
|
||
|
IN FT_SET_STATUS SetState
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdftDeleteFtObjectSet(
|
||
|
IN PFT_OBJECT_SET FtSet,
|
||
|
IN BOOL OffLineDisksOnly
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
NewConfigurationRequiresFt(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdftExtendFtObjectSet(
|
||
|
IN OUT PFT_OBJECT_SET FtSet,
|
||
|
IN OUT PREGION_DESCRIPTOR* Regions,
|
||
|
IN DWORD RegionCount
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
FdftNextOrdinal(
|
||
|
IN FT_TYPE FtType
|
||
|
);
|
||
|
|
||
|
// commit.c
|
||
|
|
||
|
VOID
|
||
|
FtConfigure(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CommitAssignLetterList(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CommitToAssignLetterList(
|
||
|
IN PREGION_DESCRIPTOR RegionDescriptor,
|
||
|
IN BOOL MoveLetter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CommitAllChanges(
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CommitDeleteLockLetter(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
CommitAllowed(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
RescanDevices(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// Commit interface routines.
|
||
|
|
||
|
LETTER_ASSIGNMENT_RESULT
|
||
|
CommitDriveLetter(
|
||
|
IN PREGION_DESCRIPTOR RegionDescriptor,
|
||
|
IN CHAR OldDrive,
|
||
|
IN CHAR NewDrive
|
||
|
);
|
||
|
|
||
|
LONG
|
||
|
CommitToLockList(
|
||
|
IN PREGION_DESCRIPTOR RegionDescriptor,
|
||
|
IN BOOL RemoveDriveLetter,
|
||
|
IN BOOL LockNow,
|
||
|
IN BOOL FailOk
|
||
|
);
|
||
|
|
||
|
LONG
|
||
|
CommitLockVolumes(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
LONG
|
||
|
CommitUnlockVolumes(
|
||
|
IN ULONG Disk,
|
||
|
IN BOOLEAN FreeList
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CommitUpdateRegionStructures(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// windisk.c
|
||
|
|
||
|
INT
|
||
|
SizeDlgProc(
|
||
|
IN HWND hDlg,
|
||
|
IN UINT wMsg,
|
||
|
IN WPARAM wParam,
|
||
|
IN LONG lParam
|
||
|
);
|
||
|
|
||
|
extern WNDPROC OldSizeDlgProc;
|
||
|
|
||
|
DWORD
|
||
|
CommitChanges(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
BootPartitionNumberChanged(
|
||
|
PULONG OldNumber,
|
||
|
PULONG NewNumber
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
DeletionIsAllowed(
|
||
|
IN PREGION_DESCRIPTOR Region
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
RegisterFileSystemExtend(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// stuff in fd_nt.c
|
||
|
|
||
|
BOOLEAN
|
||
|
IsPagefileOnDrive(
|
||
|
CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
LoadExistingPageFileInfo(
|
||
|
IN VOID
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
GetVolumeSizeMB(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Partition,
|
||
|
OUT PULONG Size
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetVolumeTypeAndSize(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Partition,
|
||
|
OUT PWSTR *Label,
|
||
|
OUT PWSTR *Type,
|
||
|
OUT PULONG Size
|
||
|
);
|
||
|
|
||
|
PWSTR
|
||
|
GetWideSysIDName(
|
||
|
IN UCHAR SysID
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
MyDiskRegistryGet(
|
||
|
OUT PDISK_REGISTRY *DiskRegistry
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
MasterBootCode(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Signature,
|
||
|
IN BOOLEAN SetBootCode,
|
||
|
IN BOOLEAN SetSignature
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
UpdateMasterBootCode(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
FormDiskSignature(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetVolumeLabel(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Partition,
|
||
|
OUT PWSTR *Label
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetTypeName(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Partition,
|
||
|
OUT PWSTR *Name
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
IsRemovable(
|
||
|
IN ULONG DiskNumber
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetDriveLetterLinkTarget(
|
||
|
IN PWSTR SourceNameStr,
|
||
|
OUT PWSTR *LinkTarget
|
||
|
);
|
||
|
|
||
|
#if i386
|
||
|
VOID
|
||
|
MakePartitionActive(
|
||
|
IN PREGION_DESCRIPTOR DiskRegionArray,
|
||
|
IN ULONG RegionCount,
|
||
|
IN ULONG RegionIndex
|
||
|
);
|
||
|
#endif
|
||
|
|
||
|
|
||
|
// stuff in arrowin.c
|
||
|
|
||
|
BOOL
|
||
|
RegisterArrowClass(
|
||
|
IN HANDLE hModule
|
||
|
);
|
||
|
|
||
|
|
||
|
// stuff in fdhelp.c
|
||
|
|
||
|
VOID
|
||
|
InitHelp(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
TermHelp(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
Help(
|
||
|
IN LONG Code
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DialogHelp(
|
||
|
IN DWORD HelpId
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SetMenuItemHelpContext(
|
||
|
IN LONG wParam,
|
||
|
IN DWORD lParam
|
||
|
);
|
||
|
|
||
|
|
||
|
// stuff in ftreg.c
|
||
|
|
||
|
BOOL
|
||
|
DoMigratePreviousFtConfig(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
DoRestoreFtConfig(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DoSaveFtConfig(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
// Double Space support routines.
|
||
|
|
||
|
BOOL
|
||
|
DblSpaceVolumeExists(
|
||
|
IN PREGION_DESCRIPTOR RegionDescriptor
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
DblSpaceDismountedVolumeExists(
|
||
|
IN PREGION_DESCRIPTOR RegionDescriptor
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
DblSpaceCreate(
|
||
|
IN HWND Dialog,
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DblSpaceDelete(
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DblSpaceMount(
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DblSpaceDismount(
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DblSpaceInitialize(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DblSpace(
|
||
|
IN HWND Dialog,
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
PDBLSPACE_DESCRIPTOR
|
||
|
DblSpaceGetNextVolume(
|
||
|
IN PREGION_DESCRIPTOR RegionDescriptor,
|
||
|
IN PDBLSPACE_DESCRIPTOR DblSpace
|
||
|
);
|
||
|
|
||
|
// FmIfs interface routines
|
||
|
|
||
|
BOOL
|
||
|
LoadIfsDll(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
FmIfsDismountDblspace(
|
||
|
IN CHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
FmIfsMountDblspace(
|
||
|
IN PCHAR FileName,
|
||
|
IN CHAR HostDrive,
|
||
|
IN CHAR NewDrive
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
FmIfsQueryInformation(
|
||
|
IN PWSTR DosDriveName,
|
||
|
OUT PBOOLEAN IsRemovable,
|
||
|
OUT PBOOLEAN IsFloppy,
|
||
|
OUT PBOOLEAN IsCompressed,
|
||
|
OUT PBOOLEAN Error,
|
||
|
OUT PWSTR NtDriveName,
|
||
|
IN ULONG MaxNtDriveNameLength,
|
||
|
OUT PWSTR CvfFileName,
|
||
|
IN ULONG MaxCvfFileNameLength,
|
||
|
OUT PWSTR HostDriveName,
|
||
|
IN ULONG MaxHostDriveNameLength
|
||
|
);
|
||
|
|
||
|
|
||
|
// Cdrom interface routines.
|
||
|
|
||
|
VOID
|
||
|
CdRom(
|
||
|
IN HWND Dialog,
|
||
|
IN PVOID Param
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CdRomAddDevice(
|
||
|
IN PWSTR NtName,
|
||
|
IN WCHAR DriveLetter
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Macros
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// BOOLEAN
|
||
|
// DmSignificantRegion(
|
||
|
// IN PREGION_DESCRIPTOR Region
|
||
|
// );
|
||
|
//
|
||
|
|
||
|
#define DmSignificantRegion(Region) (((Region)->SysID != SYSID_UNUSED) \
|
||
|
&& (!IsExtended((Region)->SysID)) \
|
||
|
&& (IsRecognizedPartition((Region)->SysID)))
|
||
|
|
||
|
//
|
||
|
// VOID
|
||
|
// DmSetPersistentRegionData(
|
||
|
// IN PPERSISTENT_REGION_DATA RegionData
|
||
|
// );
|
||
|
//
|
||
|
|
||
|
#define DmSetPersistentRegionData(Region,RegionData) \
|
||
|
FdSetPersistentData((Region),(ULONG)RegionData); \
|
||
|
(Region)->PersistentData = RegionData
|
||
|
|
||
|
|
||
|
//
|
||
|
// VOID
|
||
|
// DmInitPersistentRegionData(
|
||
|
// OUT PPERSISTENT_REGION_DATA RegionData,
|
||
|
// IN PFT_OBJECT ftObject,
|
||
|
// IN PWSTR volumeLabel,
|
||
|
// IN PWSTR typeName,
|
||
|
// IN CHAR driveLetter,
|
||
|
// );
|
||
|
//
|
||
|
|
||
|
#define DmInitPersistentRegionData(RegionData,ftObject,volumeLabel,typeName,driveLetter) \
|
||
|
RegionData->DblSpace = NULL; \
|
||
|
RegionData->FtObject = ftObject; \
|
||
|
RegionData->VolumeLabel = volumeLabel; \
|
||
|
RegionData->TypeName = typeName; \
|
||
|
RegionData->VolumeExists = FALSE; \
|
||
|
RegionData->DriveLetter = driveLetter
|
||
|
|
||
|
// ntlow definitions
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowOpenNtName(
|
||
|
IN PCHAR Name,
|
||
|
IN HANDLE_PT Handle
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowOpenDisk(
|
||
|
IN PCHAR DevicePath,
|
||
|
OUT HANDLE_PT DiskId
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowOpenPartition(
|
||
|
IN PCHAR DevicePath,
|
||
|
IN ULONG Partition,
|
||
|
OUT HANDLE_PT Handle
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowOpenDriveLetter(
|
||
|
IN CHAR DriveLetter,
|
||
|
IN HANDLE_PT Handle
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowCloseDisk(
|
||
|
IN HANDLE_T DiskId
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowGetDriveGeometry(
|
||
|
IN PCHAR DevicePath,
|
||
|
OUT PULONG TotalSectorCount,
|
||
|
OUT PULONG SectorSize,
|
||
|
OUT PULONG SectorsPerTrack,
|
||
|
OUT PULONG Heads
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowGetPartitionGeometry(
|
||
|
IN PCHAR PartitionPath,
|
||
|
OUT PULONG TotalSectorCount,
|
||
|
OUT PULONG SectorSize,
|
||
|
OUT PULONG SectorsPerTrack,
|
||
|
OUT PULONG Heads
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowReadSectors(
|
||
|
IN HANDLE_T VolumeId,
|
||
|
IN ULONG SectorSize,
|
||
|
IN ULONG StartingSector,
|
||
|
IN ULONG NumberOfSectors,
|
||
|
OUT PVOID Buffer
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowWriteSectors(
|
||
|
IN HANDLE_T VolumeId,
|
||
|
IN ULONG SectorSize,
|
||
|
IN ULONG StartingSector,
|
||
|
IN ULONG NumberOfSectors,
|
||
|
IN PVOID Buffer
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowLockDrive(
|
||
|
IN HANDLE_T DiskId
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowUnlockDrive(
|
||
|
IN HANDLE_T DiskId
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowFtVolumeStatus(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Partition,
|
||
|
IN PFT_SET_STATUS FtStatus,
|
||
|
IN PULONG NumberOfMembers
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowFtVolumeStatusByLetter(
|
||
|
IN CHAR DriveLetter,
|
||
|
IN PFT_SET_STATUS FtStatus,
|
||
|
IN PULONG NumberOfMembers
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowSetDiskLayout(
|
||
|
IN PCHAR Path,
|
||
|
IN PDRIVE_LAYOUT_INFORMATION DriveLayout
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
LowGetDiskLayout(
|
||
|
IN PCHAR Path,
|
||
|
OUT PDRIVE_LAYOUT_INFORMATION *DriveLayout
|
||
|
);
|
||
|
|
||
|
// Partition engine definitions
|
||
|
|
||
|
ULONG
|
||
|
GetDiskCount(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
PCHAR
|
||
|
GetDiskName(
|
||
|
ULONG Disk
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
DiskSizeMB(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
GetDiskRegions(
|
||
|
IN ULONG Disk,
|
||
|
IN BOOLEAN WantUsedRegions,
|
||
|
IN BOOLEAN WantFreeRegions,
|
||
|
IN BOOLEAN WantPrimaryRegions,
|
||
|
IN BOOLEAN WantLogicalRegions,
|
||
|
OUT PREGION_DESCRIPTOR *Region,
|
||
|
OUT ULONG *RegionCount
|
||
|
);
|
||
|
|
||
|
#define GetAllDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,TRUE,TRUE,TRUE,TRUE,regions,count)
|
||
|
|
||
|
#define GetFreeDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,FALSE,TRUE,TRUE,TRUE,regions,count)
|
||
|
|
||
|
#define GetUsedDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,TRUE,FALSE,TRUE,TRUE,regions,count)
|
||
|
|
||
|
#define GetPrimaryDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,TRUE,TRUE,TRUE,FALSE,regions,count)
|
||
|
|
||
|
#define GetLogicalDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,TRUE,TRUE,FALSE,TRUE,regions,count)
|
||
|
|
||
|
#define GetUsedPrimaryDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,TRUE,FALSE,TRUE,FALSE,regions,count)
|
||
|
|
||
|
#define GetUsedLogicalDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,TRUE,FALSE,FALSE,TRUE,regions,count)
|
||
|
|
||
|
#define GetFreePrimaryDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,FALSE,TRUE,TRUE,FALSE,regions,count)
|
||
|
|
||
|
#define GetFreeLogicalDiskRegions(disk,regions,count) \
|
||
|
GetDiskRegions(disk,FALSE,TRUE,FALSE,TRUE,regions,count)
|
||
|
|
||
|
VOID
|
||
|
FreeRegionArray(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN ULONG RegionCount
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
IsAnyCreationAllowed(
|
||
|
IN ULONG Disk,
|
||
|
IN BOOLEAN AllowMultiplePrimaries,
|
||
|
OUT PBOOLEAN AnyAllowed,
|
||
|
OUT PBOOLEAN PrimaryAllowed,
|
||
|
OUT PBOOLEAN ExtendedAllowed,
|
||
|
OUT PBOOLEAN LogicalAllowed
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
IsCreationOfPrimaryAllowed(
|
||
|
IN ULONG Disk,
|
||
|
IN BOOLEAN AllowMultiplePrimaries,
|
||
|
OUT PBOOLEAN Allowed
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
IsCreationOfExtendedAllowed(
|
||
|
IN ULONG Disk,
|
||
|
OUT PBOOLEAN Allowed
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
IsCreationOfLogicalAllowed(
|
||
|
IN ULONG Disk,
|
||
|
OUT PBOOLEAN Allowed
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
DoesAnyPartitionExist(
|
||
|
IN ULONG Disk,
|
||
|
OUT PBOOLEAN AnyExists,
|
||
|
OUT PBOOLEAN PrimaryExists,
|
||
|
OUT PBOOLEAN ExtendedExists,
|
||
|
OUT PBOOLEAN LogicalExists
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
DoesAnyPrimaryExist(
|
||
|
IN ULONG Disk,
|
||
|
OUT PBOOLEAN Exists
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
DoesExtendedExist(
|
||
|
IN ULONG Disk,
|
||
|
OUT PBOOLEAN Exists
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
DoesAnyLogicalExist(
|
||
|
IN ULONG Disk,
|
||
|
OUT PBOOLEAN Exists
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
IsExtended(
|
||
|
IN UCHAR SysID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SetPartitionActiveFlag(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN UCHAR value
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
CreatePartition(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN ULONG CreationSizeMB,
|
||
|
IN REGION_TYPE Type
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
CreatePartitionEx(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN LARGE_INTEGER MinimumSize,
|
||
|
IN ULONG CreationSizeMB,
|
||
|
IN REGION_TYPE Type,
|
||
|
IN UCHAR SysId
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
DeletePartition(
|
||
|
IN PREGION_DESCRIPTOR Region
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
GetHiddenSectorCount(
|
||
|
ULONG Disk,
|
||
|
ULONG Partition
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SetSysID(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Partition,
|
||
|
IN UCHAR SysID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
SetSysID2(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN UCHAR SysID
|
||
|
);
|
||
|
|
||
|
PCHAR
|
||
|
GetSysIDName(
|
||
|
UCHAR SysID
|
||
|
);
|
||
|
|
||
|
STATUS_CODE
|
||
|
CommitPartitionChanges(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
HavePartitionsBeenChanged(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdMarkDiskDirty(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdSetPersistentData(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN ULONG Data
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
FdGetMinimumSizeMB(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
FdGetMaximumSizeMB(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN REGION_TYPE CreationType
|
||
|
);
|
||
|
|
||
|
LARGE_INTEGER
|
||
|
FdGetExactSize(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN BOOLEAN ForExtended
|
||
|
);
|
||
|
|
||
|
LARGE_INTEGER
|
||
|
FdGetExactOffset(
|
||
|
IN PREGION_DESCRIPTOR Region
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
FdCrosses1024Cylinder(
|
||
|
IN PREGION_DESCRIPTOR Region,
|
||
|
IN ULONG CreationSizeMB,
|
||
|
IN REGION_TYPE RegionType
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
FdGetDiskSignature(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdSetDiskSignature(
|
||
|
IN ULONG Disk,
|
||
|
IN ULONG Signature
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
IsDiskOffLine(
|
||
|
IN ULONG Disk
|
||
|
);
|
||
|
|
||
|
|
||
|
STATUS_CODE
|
||
|
FdiskInitialize(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FdiskCleanUp(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
ConfigureSystemPartitions(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
ConfigureOSPartitions(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
// Network support function definitions. stuff from network.c
|
||
|
|
||
|
VOID
|
||
|
NetworkRemoveShare(
|
||
|
IN LPCTSTR DriveLetter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
NetworkShare(
|
||
|
IN LPCTSTR DriveLetter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
NetworkInitialize(
|
||
|
);
|
||
|
|
||
|
// Debugging support for opens
|
||
|
|
||
|
#ifdef DBG
|
||
|
|
||
|
NTSTATUS
|
||
|
DmOpenFile(
|
||
|
OUT PHANDLE FileHandle,
|
||
|
IN ACCESS_MASK DesiredAccess,
|
||
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||
|
IN ULONG ShareAccess,
|
||
|
IN ULONG OpenOptions
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
DmClose(
|
||
|
IN HANDLE Handle
|
||
|
);
|
||
|
#else
|
||
|
#define DmOpenFile NtOpenFile
|
||
|
#define DmClose NtClose
|
||
|
#endif
|