windows-nt/Source/XPSP1/NT/drivers/ftapi/ftman/ftmandef.h
2020-09-26 16:20:57 +08:00

201 lines
4.9 KiB
C++

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
FTMan
File Name:
FTManDef.h
Abstract:
Types and constants definitions for application FTMan
Author:
Cristian Teodorescu October 22 1998
Notes:
Revision History:
--*/
#if !defined(AFX_FTMANDEF_H_INCLUDED_)
#define AFX_FTMANDEF_H_INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
class CItemID;
// Macros
/*
My exception handling macros
*/
#define MY_TRY try{
// Catch and do nothing
#define MY_CATCH }catch(CException* e){ e->Delete(); }
// Catch and throw the exception to the superior try-catch block
#define MY_CATCH_AND_THROW }catch(CException* e){ throw; }
// Catch and report the exception
#define MY_CATCH_AND_REPORT }catch(CException* e){ e->ReportError(MB_ICONSTOP); e->Delete(); }
// A catch macro to be used in dialog methods
#define MY_CATCH_REPORT_AND_CANCEL }catch(CException* e){ e->ReportError(MB_ICONSTOP); e->Delete(); OnCancel(); }
// A catch macro to be used in functions that return BOOL
#define MY_CATCH_REPORT_AND_RETURN_FALSE }catch(CException* e){ e->ReportError(MB_ICONSTOP); e->Delete(); return FALSE; }
// A catch macro to be used in functions that return handle or pointer
#define MY_CATCH_REPORT_AND_RETURN_NULL }catch(CException* e){ e->ReportError(MB_ICONSTOP); e->Delete(); return NULL; }
// Some macros above are used in set.h so I include set.h here after the macro definitions
#include "Set.h"
// Constants / Enums
/*
MainFrame timer's event id
*/
#define ID_TIMER_EVENT 2103
/*
MainFrame timer's elapse ( in milliseconds )
*/
#define TIMER_ELAPSE 3000
/*
Images index in all image lists
*/
enum tagImageIndex
{
II_Root = 0,
II_FTPartition,
II_VolumeSet,
II_StripeSet,
II_MirrorSet,
II_StripeSetWithParity,
II_PhysicalPartition,
II_FreeSpace,
II_RootExpanded,
// Exclamation marks on the images
II_FTPartition_Warning,
II_VolumeSet_Warning,
II_StripeSet_Warning,
II_MirrorSet_Warning,
II_StripeSetWithParity_Warning,
II_PhysicalPartition_Warning,
// Red X's on the images
II_FTPartition_Error,
II_VolumeSet_Error,
II_StripeSet_Error,
II_MirrorSet_Error,
II_StripeSetWithParity_Error,
II_PhysicalPartition_Error,
IMAGES_NUMBER
};
/*
Types of refreshments performed on tree and list view items every TIME_ELAPSE milliseconds.
Used by CTreeView::RefreshOnTimer
*/
enum tagRefreshOnTimerFlags
{
ROTT_GotDriveLetterAndVolumeName= 0x01, // Volume's drive letter and volume name was found
ROTT_EndInitialization = 0x02, // A stripe set with parity finished its initializing process
ROTT_EndRegeneration = 0x04 // A mirror set or stripe set with parity finished the regeneration process
};
// Types
/*
Type ITEM_TYPE - Defines all possible types of items that may appear in the tree view
and the list view
*/
typedef enum tagItemType
{
IT_RootVolumes,
IT_LogicalVolume,
IT_PhysicalPartition,
IT_RootFreeSpaces,
IT_FreeSpace
} ITEM_TYPE;
/*
Type PARTITION_TYPE - Defines all possible types of physical partitions
*/
typedef enum tagPartitionType
{
PT_Primary, // Primary partition
PT_InExtendedPartition // Partition inside an extended partition
} PARTITION_TYPE;
/*
Type FREE_SPACE_TYPE - Defines all possible types of free spaces
*/
typedef enum tagFreeSpaceType
{
FST_Primary, // Primary free space ( not in extended partitions )
FST_InExtendedPartition, // Free space inside an extended partition whose table is not empty
FST_EmptyExtendedPartition // Empty extended partition
} FREE_SPACE_TYPE;
/*
Type LV_COLUMNS - Defines the indexes of columns in the list view
*/
typedef enum tagLVColumns
{
LVC_Name = 0,
LVC_Type,
LVC_DiskNumber,
LVC_Size,
LVC_Offset,
LVC_VolumeID,
COLUMNS_NUMBER
} LV_COLUMNS;
/*
Type LV_COLUMN_CONFIG - Defines the configuration of a list-view column
*/
typedef struct tagLVColumnConfig
{
LV_COLUMNS iSubItem; // The index of the subitem
DWORD dwTitleID; // The ID of the resource string to be title of this column
int nFormat; // Alignment
WORD wWidthPercent; // The percent of the list-view width to be used by this column
} LV_COLUMN_CONFIG, *PLV_COLUMN_CONFIG;
/*
Type CULONGSet - A set of ULONG elements.
*/
typedef CSet<ULONG, ULONG> CULONGSet;
/*
Type CItemIDSet - A set of CItemID elements
*/
typedef CSet<CItemID, CItemID&> CItemIDSet;
/*
Type TREE_SNAPSHOT - Defines the current status of the tree-view. It is used when refreshing the tree
*/
typedef struct tagTreeSnapshot
{
CItemIDSet setExpandedItems; // All expanded items
CItemIDSet setSelectedItems; // All selected items ( should be only one )
} TREE_SNAPSHOT, *PTREE_SNAPSHOT;
/*
Type LIST_SNAPSHOT - Defines the current status of the list-view. It is used when refreshing the list
*/
typedef struct tagListSnapshot
{
CItemIDSet setSelectedItems; // All selected items
} LIST_SNAPSHOT, *PLIST_SNAPSHOT;
#endif // !defined(AFX_FTMANDEF_H_INCLUDED_)