Windows NT 4.0 source code leak
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

//+---------------------------------------------------------------------------
//
// 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__