mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
468 lines
9.1 KiB
468 lines
9.1 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1994.
|
|
//
|
|
// File: proto.hxx
|
|
//
|
|
// Contents: Global macros and function prototypes
|
|
//
|
|
// History: 7-Jan-92 TedM Created
|
|
// 2-Feb-94 BobRi Moved arcinst definitions here
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef __PROTO_HXX__
|
|
#define __PROTO_HXX__
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Returns the i'th selected region, where 0 <= i < SelectionCount
|
|
//
|
|
// REGION_DESCRIPTOR
|
|
// SELECTED_REGION(
|
|
// IN INT i
|
|
// );
|
|
//
|
|
|
|
#define SELECTED_REGION(i) (SelectedDS[i]->RegionArray[SelectedRG[i]])
|
|
|
|
//
|
|
// Given a drive letter (from C to Z), calculate a 0-based index to use
|
|
// in array indexing.
|
|
//
|
|
// UINT
|
|
// DriveLetterToIndex(
|
|
// IN WCHAR DriveLetter
|
|
// );
|
|
//
|
|
|
|
#define DriveLetterToIndex(DriveLetter) ((DriveLetter) - L'C')
|
|
|
|
//
|
|
// BOOLEAN
|
|
// IsLegalDriveLetter(
|
|
// IN WCHAR DriveLetter
|
|
// );
|
|
//
|
|
|
|
#define IsLegalDriveLetter(DriveLetter) \
|
|
( ((DriveLetter) >= L'C') && ((DriveLetter) <= L'Z') )
|
|
|
|
//
|
|
// BOOLEAN
|
|
// IsExtraDriveLetter(
|
|
// IN WCHAR DriveLetter
|
|
// );
|
|
//
|
|
|
|
#define IsExtraDriveLetter(DriveLetter) \
|
|
( ((DriveLetter) == NO_DRIVE_LETTER_YET) \
|
|
|| ((DriveLetter) == NO_DRIVE_LETTER_EVER) \
|
|
)
|
|
|
|
//
|
|
// BOOLEAN
|
|
// DmSignificantRegion(
|
|
// IN PREGION_DESCRIPTOR RegionDescriptor
|
|
// );
|
|
//
|
|
|
|
#define DmSignificantRegion(RegionDescriptor) \
|
|
(((RegionDescriptor)->SysID != PARTITION_ENTRY_UNUSED) \
|
|
&& (!IsExtended((RegionDescriptor)->SysID)) \
|
|
&& (IsRecognizedPartition((RegionDescriptor)->SysID)))
|
|
|
|
//
|
|
// VOID
|
|
// DmSetPersistentRegionData(
|
|
// IN PREGION_DESCRIPTOR RegionDescriptor,
|
|
// IN PPERSISTENT_REGION_DATA RegionData
|
|
// );
|
|
//
|
|
|
|
#define DmSetPersistentRegionData(RegionDescriptor,RegionData) \
|
|
FdSetPersistentData((RegionDescriptor),RegionData); \
|
|
(RegionDescriptor)->PersistentData = RegionData
|
|
|
|
|
|
//
|
|
// VOID
|
|
// DmInitPersistentRegionData(
|
|
// OUT PPERSISTENT_REGION_DATA RegionData,
|
|
// IN PFT_OBJECT ftObject,
|
|
// IN PWSTR volumeLabel,
|
|
// IN PWSTR typeName,
|
|
// IN WCHAR driveLetter,
|
|
// IN BOOL newRegion,
|
|
// IN LARGE_INTEGER freeSpaceInBytes,
|
|
// IN LARGE_INTEGER totalSpaceInBytes
|
|
// );
|
|
//
|
|
|
|
#if defined( DBLSPACE_ENABLED )
|
|
#define DmInitPersistentRegionData(RegionData,ftObject,volumeLabel,typeName,driveLetter,newRegion,freeSpaceInBytes,totalSpaceInBytes) \
|
|
RegionData->DblSpace = NULL; \
|
|
RegionData->FtObject = ftObject; \
|
|
RegionData->VolumeLabel = volumeLabel; \
|
|
RegionData->TypeName = typeName; \
|
|
RegionData->DriveLetter = driveLetter; \
|
|
RegionData->NewRegion = newRegion; \
|
|
RegionData->FreeSpaceInBytes = freeSpaceInBytes; \
|
|
RegionData->TotalSpaceInBytes = totalSpaceInBytes
|
|
#else
|
|
#define DmInitPersistentRegionData(RegionData,ftObject,volumeLabel,typeName,driveLetter,newRegion,freeSpaceInBytes,totalSpaceInBytes) \
|
|
RegionData->FtObject = ftObject; \
|
|
RegionData->VolumeLabel = volumeLabel; \
|
|
RegionData->TypeName = typeName; \
|
|
RegionData->DriveLetter = driveLetter; \
|
|
RegionData->NewRegion = newRegion; \
|
|
RegionData->FreeSpaceInBytes = freeSpaceInBytes; \
|
|
RegionData->TotalSpaceInBytes = totalSpaceInBytes
|
|
#endif // DBLSPACE_ENABLED
|
|
|
|
//
|
|
// PPERSISTENT_REGION_DATA
|
|
// PERSISTENT_DATA(
|
|
// IN PREGION_DESCRIPTOR RegionDescriptor
|
|
// );
|
|
//
|
|
|
|
#define PERSISTENT_DATA(RegionDescriptor) ((PPERSISTENT_REGION_DATA)((RegionDescriptor)->PersistentData))
|
|
|
|
//
|
|
// PFT_OBJECT
|
|
// GET_FT_OBJECT(
|
|
// IN PREGION_DESCRIPTOR RegionDescriptor
|
|
// );
|
|
//
|
|
|
|
#define GET_FT_OBJECT(RegionDescriptor) ((RegionDescriptor)->PersistentData ? PERSISTENT_DATA(RegionDescriptor)->FtObject : NULL)
|
|
|
|
//
|
|
// VOID
|
|
// SET_FT_OBJECT(
|
|
// IN PREGION_DESCRIPTOR RegionDescriptor,
|
|
// IN PFT_OBJECT ftObject
|
|
// );
|
|
//
|
|
|
|
#define SET_FT_OBJECT(RegionDescriptor,ftObject) (PERSISTENT_DATA(RegionDescriptor)->FtObject = ftObject)
|
|
|
|
//
|
|
// ULONG
|
|
// EC(
|
|
// IN NTSTATUS Status
|
|
// );
|
|
//
|
|
|
|
#define EC(Status) RtlNtStatusToDosError(Status)
|
|
|
|
#if 0
|
|
|
|
//
|
|
// Macros to convert between WCHARs and CHARs for a specific range.
|
|
// These are used to handle drive letters. For both APIs, the argument
|
|
// character must be in the range of ASCII characters.
|
|
//
|
|
|
|
//
|
|
// CHAR
|
|
// WcharToChar(
|
|
// IN WCHAR wch
|
|
// );
|
|
//
|
|
|
|
#define WcharToChar(wch) ((CHAR)(wch))
|
|
|
|
//
|
|
// WCHAR
|
|
// CharToWchar(
|
|
// IN CHAR ch
|
|
// );
|
|
//
|
|
|
|
#define CharToWchar(ch) ((WCHAR)(UCHAR)(ch))
|
|
|
|
#endif // 0
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// stuff in misc.cxx
|
|
//
|
|
|
|
BOOL
|
|
AllDisksOffLine(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
FdShutdownTheSystem(
|
|
VOID
|
|
);
|
|
|
|
int
|
|
GetHeightFromPoints(
|
|
IN int Points
|
|
);
|
|
|
|
VOID
|
|
RetrieveAndFormatMessage(
|
|
IN DWORD Msg,
|
|
OUT LPTSTR Buffer,
|
|
IN DWORD BufferSize,
|
|
IN va_list* parglist
|
|
);
|
|
|
|
DWORD
|
|
CommonDialog(
|
|
IN DWORD MsgCode,
|
|
IN LPTSTR Caption,
|
|
IN DWORD Flags,
|
|
IN va_list arglist
|
|
);
|
|
|
|
|
|
DWORD
|
|
CommonDialogNoArglist(
|
|
IN DWORD MsgCode,
|
|
IN LPTSTR Caption,
|
|
IN DWORD Flags
|
|
);
|
|
|
|
VOID
|
|
ErrorDialog(
|
|
IN DWORD ErrorCode,
|
|
...
|
|
);
|
|
|
|
VOID
|
|
WarningDialog(
|
|
IN DWORD MsgCode,
|
|
...
|
|
);
|
|
|
|
DWORD
|
|
ConfirmationDialog(
|
|
IN DWORD MsgCode,
|
|
IN DWORD Flags,
|
|
...
|
|
);
|
|
|
|
VOID
|
|
InfoDialogTitle(
|
|
IN UINT TitleId,
|
|
IN DWORD MsgCode,
|
|
...
|
|
);
|
|
|
|
VOID
|
|
InfoDialog(
|
|
IN DWORD MsgCode,
|
|
...
|
|
);
|
|
|
|
PREGION_DESCRIPTOR
|
|
LocateRegionForFtObject(
|
|
IN PFT_OBJECT FtObject
|
|
);
|
|
|
|
VOID
|
|
ClonePersistentData(
|
|
IN PREGION_DESCRIPTOR RegionFrom,
|
|
OUT PREGION_DESCRIPTOR RegionTo
|
|
);
|
|
|
|
PREGION_DESCRIPTOR
|
|
GetPersistentData(
|
|
IN OUT PREGION_DESCRIPTOR RegionDescriptor
|
|
);
|
|
|
|
VOID
|
|
RefreshVolumeData(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
InitVolumeInformation(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
DetermineRegionInfo(
|
|
IN PREGION_DESCRIPTOR RegionDescriptor,
|
|
OUT PWSTR* TypeName,
|
|
OUT PWSTR* VolumeLabel,
|
|
OUT PWCHAR DriveLetter
|
|
);
|
|
|
|
BOOL
|
|
IsFaultTolerantRegion(
|
|
IN PREGION_DESCRIPTOR RegionDescriptor
|
|
);
|
|
|
|
VOID
|
|
MyCheckMenuItem(
|
|
IN HMENU hMenu,
|
|
IN UINT idFirst,
|
|
IN UINT idLast,
|
|
IN UINT idCheckItem
|
|
);
|
|
|
|
VOID
|
|
MyEnableMenuItem(
|
|
IN HMENU hMenu,
|
|
IN UINT idFirst,
|
|
IN UINT idLast,
|
|
IN UINT fItemFlags
|
|
);
|
|
|
|
VOID
|
|
InitDrawGasGauge(
|
|
IN HWND hwndGauge
|
|
);
|
|
|
|
VOID
|
|
DrawGasGauge(
|
|
IN HWND hwndGauge,
|
|
IN HWND hwndParent,
|
|
IN HDC hDC,
|
|
IN INT PercentDone,
|
|
IN PWSTR Caption
|
|
);
|
|
|
|
HFONT
|
|
KillBold(
|
|
IN HWND hdlg,
|
|
IN PUINT aControls
|
|
);
|
|
|
|
NTSTATUS
|
|
LargeIntegerToUnicodeChar(
|
|
IN PLARGE_INTEGER Value,
|
|
IN ULONG Base OPTIONAL,
|
|
IN LONG OutputLength,
|
|
OUT PWSTR String
|
|
);
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Debugging support for opens
|
|
//
|
|
|
|
#if DBG == 1
|
|
|
|
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
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// assertion checking, logging, from log.cxx
|
|
//
|
|
|
|
#if DBG == 1
|
|
|
|
// #define FDASSERT(expr) if (!(expr)) FdiskAssertFailedRoutine(#expr,__FILE__,__LINE__);
|
|
#define FDASSERT(expr) Win4Assert( expr )
|
|
|
|
VOID
|
|
FdiskAssertFailedRoutine(
|
|
IN char *Expression,
|
|
IN char *FileName,
|
|
IN int LineNumber
|
|
);
|
|
|
|
VOID
|
|
FDLOG_WORK(
|
|
IN int Level,
|
|
IN PCHAR FormatString,
|
|
...
|
|
);
|
|
|
|
#define FDLOG(x) FDLOG_WORK x
|
|
|
|
VOID
|
|
LOG_DISK_REGISTRY(
|
|
IN PCHAR RoutineName,
|
|
IN PDISK_REGISTRY DiskRegistry
|
|
);
|
|
|
|
VOID
|
|
LOG_ONE_DISK_REGISTRY_DISK_ENTRY(
|
|
IN PCHAR RoutineName OPTIONAL,
|
|
IN PDISK_DESCRIPTION DiskDescription
|
|
);
|
|
|
|
VOID
|
|
LOG_DRIVE_LAYOUT(
|
|
IN PDRIVE_LAYOUT_INFORMATION DriveLayout
|
|
);
|
|
|
|
VOID
|
|
LOG_ALL(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
InitLogging(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
EndLogging(
|
|
VOID
|
|
);
|
|
|
|
#ifdef WINDISK_EXTENSIONS
|
|
|
|
VOID
|
|
PrintVolumeClaims(
|
|
IN CHAR DriveLetter
|
|
);
|
|
|
|
VOID
|
|
PrintClaims(
|
|
VOID
|
|
);
|
|
|
|
#endif // WINDISK_EXTENSIONS
|
|
|
|
#else // DBG == 1
|
|
|
|
#define FDASSERT(expr)
|
|
#define FDLOG(x)
|
|
#define LOG_DISK_REGISTRY(x,y)
|
|
#define LOG_ONE_DISK_REGISTRY_DISK_ENTRY(x,y)
|
|
#define LOG_DRIVE_LAYOUT(x)
|
|
#define LOG_ALL()
|
|
|
|
#endif // DBG == 1
|
|
|
|
#endif // __PROTO_HXX__
|