170 lines
5 KiB
C
170 lines
5 KiB
C
|
#include "fdisk.h"
|
||
|
|
||
|
|
||
|
HANDLE hModule;
|
||
|
|
||
|
// IsDiskRemovable is an array of BOOLEANs each of which indicates
|
||
|
// whether the corresponding physical disk is removable.
|
||
|
|
||
|
PBOOLEAN IsDiskRemovable = NULL;
|
||
|
|
||
|
// RemovableDiskReservedDriveLetters is an array of CHARs which
|
||
|
// shows the reserved drive letter for each disk if that disk is
|
||
|
// removable.
|
||
|
|
||
|
PCHAR RemovableDiskReservedDriveLetters;
|
||
|
|
||
|
// This will be an array of pointers to DISKSTATE structures, indexed
|
||
|
// by disk number.
|
||
|
|
||
|
PDISKSTATE *Disks;
|
||
|
|
||
|
// BootDiskNumber is the number of the disk on which the boot partition
|
||
|
// (ie. the disk with the WinNt files) resides. BootPartitionNumber is
|
||
|
// the original partition number of this partition.
|
||
|
|
||
|
ULONG BootDiskNumber;
|
||
|
ULONG BootPartitionNumber;
|
||
|
|
||
|
|
||
|
// window handles
|
||
|
|
||
|
HANDLE hwndFrame,
|
||
|
hwndList;
|
||
|
|
||
|
// GDI objects
|
||
|
|
||
|
HBITMAP hBitmapSmallDisk;
|
||
|
HBITMAP hBitmapRemovableDisk;
|
||
|
HDC hDC;
|
||
|
HFONT hFontGraph,
|
||
|
hFontGraphBold;
|
||
|
HBRUSH Brushes[BRUSH_ARRAY_SIZE];
|
||
|
HBRUSH hBrushFreeLogical,
|
||
|
hBrushFreePrimary;
|
||
|
HPEN hPenNull,
|
||
|
hPenThinSolid;
|
||
|
HCURSOR hcurWait,
|
||
|
hcurNormal;
|
||
|
|
||
|
|
||
|
// initial stuff for the disk graphs, used when there is
|
||
|
// no info in win.ini.
|
||
|
|
||
|
int BrushHatches[BRUSH_ARRAY_SIZE] = { DEFAULT_HATCH_USEDPRIMARY,
|
||
|
DEFAULT_HATCH_USEDLOGICAL,
|
||
|
DEFAULT_HATCH_STRIPESET,
|
||
|
DEFAULT_HATCH_MIRROR,
|
||
|
DEFAULT_HATCH_VOLUMESET
|
||
|
};
|
||
|
|
||
|
int BrushColors[BRUSH_ARRAY_SIZE] = { DEFAULT_COLOR_USEDPRIMARY,
|
||
|
DEFAULT_COLOR_USEDLOGICAL,
|
||
|
DEFAULT_COLOR_STRIPESET,
|
||
|
DEFAULT_COLOR_MIRROR,
|
||
|
DEFAULT_COLOR_VOLUMESET
|
||
|
};
|
||
|
|
||
|
// colors and patterns available for the disk graphs
|
||
|
|
||
|
COLORREF AvailableColors[NUM_AVAILABLE_COLORS] = { RGB(0,0,0), // black
|
||
|
RGB(128,128,128), // dark gray
|
||
|
RGB(192,192,192), // light gray
|
||
|
RGB(255,255,255), // white
|
||
|
RGB(128,128,0), // dark yellow
|
||
|
RGB(128,0,128), // violet
|
||
|
RGB(128,0,0), // dark red
|
||
|
RGB(0,128,128), // dark cyan
|
||
|
RGB(0,128,0), // dark green
|
||
|
RGB(0,0,128), // dark blue
|
||
|
RGB(255,255,0), // yellow
|
||
|
RGB(255,0,255), // light violet
|
||
|
RGB(255,0,0), // red
|
||
|
RGB(0,255,255), // cyan
|
||
|
RGB(0,255,0), // green
|
||
|
RGB(0,0,255) // blue
|
||
|
};
|
||
|
|
||
|
int AvailableHatches[NUM_AVAILABLE_HATCHES] = { 2,3,4,5,6 };
|
||
|
|
||
|
|
||
|
// positions for various items in a disk graph
|
||
|
|
||
|
DWORD GraphWidth,
|
||
|
GraphHeight;
|
||
|
DWORD BarTopYOffset,
|
||
|
BarBottomYOffset,
|
||
|
BarHeight;
|
||
|
DWORD dxDriveLetterStatusArea;
|
||
|
DWORD dxBarTextMargin,
|
||
|
dyBarTextLine;
|
||
|
DWORD dxSmallDisk,
|
||
|
dySmallDisk,
|
||
|
xSmallDisk,
|
||
|
ySmallDisk;
|
||
|
DWORD dxRemovableDisk,
|
||
|
dyRemovableDisk,
|
||
|
xRemovableDisk,
|
||
|
yRemovableDisk;
|
||
|
DWORD BarLeftX,
|
||
|
BarWidth;
|
||
|
|
||
|
|
||
|
// if a single disk region is selected, these vars describe the selection.
|
||
|
|
||
|
PDISKSTATE SingleSel;
|
||
|
DWORD SingleSelIndex;
|
||
|
|
||
|
// name of help file
|
||
|
|
||
|
PTCHAR HelpFile;
|
||
|
TCHAR WinHelpFile[] = TEXT("windisk.hlp");
|
||
|
TCHAR LanmanHelpFile[] = TEXT("windiska.hlp");
|
||
|
|
||
|
|
||
|
// number of hard disks attached to the system
|
||
|
|
||
|
unsigned DiskCount = 0;
|
||
|
|
||
|
// class name for frame window
|
||
|
|
||
|
TCHAR szFrame[] = TEXT("fdFrame");
|
||
|
|
||
|
// "Disk %u"
|
||
|
|
||
|
LPTSTR DiskN;
|
||
|
|
||
|
PWSTR wszUnformatted,
|
||
|
wszNewUnformatted,
|
||
|
wszUnknown;
|
||
|
|
||
|
// If the following is TRUE, the registry needs to be updated and the user will
|
||
|
// be prompted to save changed just as if he had made changes to any partitions.
|
||
|
|
||
|
BOOL RegistryChanged = FALSE;
|
||
|
|
||
|
// Restart required to make changes work.
|
||
|
|
||
|
BOOL RestartRequired = FALSE;
|
||
|
|
||
|
|
||
|
// If the following is TRUE, the main window will pass WM_ENTERIDLE
|
||
|
// messages on to the child dialog box; this will trigger the
|
||
|
// configuration search.
|
||
|
|
||
|
BOOL ConfigurationSearchIdleTrigger = FALSE;
|
||
|
|
||
|
// This flag indicates whether this is a Server
|
||
|
// or just regular Windows NT Workstation.
|
||
|
|
||
|
BOOL IsLanmanNt = FALSE;
|
||
|
|
||
|
// This flag indicates whether double space volume creation
|
||
|
// and deletion is allowed.
|
||
|
|
||
|
BOOL IsFullDoubleSpace = FALSE;
|
||
|
|
||
|
// Cdrom is present in the system.
|
||
|
|
||
|
ULONG AllowCdRom = FALSE;
|