|
|
/*++
Copyright (c) 2001 Microsoft Corporation
Module Name:
uninstall.h
Abstract:
General uninstall-related functions and structure.
Author:
Aghajanyan Souren 27-Mar-2001
Revision History:
sourenag 27-Mar-2001 persistence support
--*/ #if (_WIN32_WINNT >= 0x500)
#ifndef _UNINSTALL_GENERAL_
#define _UNINSTALL_GENERAL_
#include "winioctl.h"
#define MAX_DRIVE_NUMBER ('Z' - 'A' + 1)
typedef enum{ DiskInfoCmp_Equal, DiskInfoCmp_DifferentLetter, DiskInfoCmp_FileSystemHasChanged, DiskInfoCmp_GeometryHasChanged, DiskInfoCmp_WrongParameters, DiskInfoCmp_DriveMountPointHasChanged, DiskInfoCmp_PartitionPlaceHasChanged, DiskInfoCmp_PartitionLengthHasChanged, DiskInfoCmp_PartitionTypeHasChanged, DiskInfoCmp_PartitionStyleHasChanged, DiskInfoCmp_PartitionCountHasChanged, DiskInfoCmp_PartitionNumberHasChanged, DiskInfoCmp_RewritePartitionHasChanged, DiskInfoCmp_PartitionAttributesHasChanged }DISKINFO_COMPARATION_STATUS, *PDISKINFO_COMPARATION_STATUS;
typedef struct { DISK_GEOMETRY DiskGeometry; DRIVE_LAYOUT_INFORMATION_EX * DiskLayout; } DISKINFO, *PDISKINFO;
typedef struct { WCHAR Drive; PCWSTR FileSystemName; DWORD FileSystemFlags;
PCWSTR VolumeNTPath; } DRIVEINFO, *PDRIVEINFO;
typedef struct { PCWSTR FileName; BOOL IsCab; ULARGE_INTEGER FileSize; } FILEINTEGRITYINFO, *PFILEINTEGRITYINFO;
typedef struct { ULARGE_INTEGER BootFilesDiskSpace; ULARGE_INTEGER BackupFilesDiskSpace; ULARGE_INTEGER UndoFilesDiskSpace;
UINT NumberOfDrives; PDRIVEINFO DrivesInfo; UINT NumberOfDisks; PDISKINFO DisksInfo;
UINT NumberOfFiles; PFILEINTEGRITYINFO FilesInfo; } BACKUPIMAGEINFO, *PBACKUPIMAGEINFO;
BOOL GetDriveInfo( IN WCHAR Drive, IN OUT DRIVEINFO * pInfo );
BOOL GetDrivesInfo( IN OUT DRIVEINFO * pInfo, IN OUT UINT * pDiskInfoRealCount, IN UINT DiskInfoMaxCount );
BOOL GetPhysycalDiskNumber( OUT UINT * pNumberOfPhysicalDisks );
BOOL GetDiskInfo( IN UINT Drive, IN OUT DISKINFO * pInfo );
BOOL GetDisksInfo( OUT DISKINFO ** pInfo, OUT UINT * pNumberOfItem );
BOOL GetIntegrityInfoW( IN PCWSTR FileName, IN PCWSTR DirPath, OUT FILEINTEGRITYINFO * IntegrityInfoPtr );
VOID FreeDisksInfo( IN DISKINFO * pInfo, IN UINT NumberOfItem );
BOOL GetDrivesInfo( IN OUT DRIVEINFO * pInfo, IN OUT UINT * pDiskInfoRealCount, IN UINT DiskInfoMaxCount );
BOOL GetUndoDrivesInfo( OUT DRIVEINFO * pInfo, OUT UINT * pNumberOfDrive, IN WCHAR BootDrive, IN WCHAR SystemDrive, IN WCHAR UndoDrive ); DISKINFO_COMPARATION_STATUS CompareDriveInfo( IN DRIVEINFO * FirstInfo, IN DRIVEINFO * SecondInfo );
BOOL CompareDrivesInfo( IN DRIVEINFO * FirstInfo, IN DRIVEINFO * SecondInfo, IN UINT DriveInfoCount, OUT PDISKINFO_COMPARATION_STATUS OutDiskCmpStatus, OPTIONAL OUT UINT * OutIfFailedDiskInfoIndex OPTIONAL );
DISKINFO_COMPARATION_STATUS CompareDiskInfo( IN DISKINFO * FirstInfo, IN DISKINFO * SecondInfo );
BOOL CompareDisksInfo( IN DISKINFO * FirstInfo, IN DISKINFO * SecondInfo, IN UINT DiskInfoCount, OUT PDISKINFO_COMPARATION_STATUS OutDiskCmpStatus, OPTIONAL OUT UINT * OutIfFailedDiskInfoIndex OPTIONAL );
#define BACKUPIMAGEINFO_VERSION 2
#define DRIVE_LAYOUT_INFORMATION_EX_PERSISTENCE \
PERSIST_BEGIN_DECLARE_STRUCT(DRIVE_LAYOUT_INFORMATION_EX, BACKUPIMAGEINFO_VERSION) \ PERSIST_FIELD_BY_VALUE(DRIVE_LAYOUT_INFORMATION_EX, DWORD, PartitionStyle), \ PERSIST_FIELD_BY_VALUE(DRIVE_LAYOUT_INFORMATION_EX, DWORD, PartitionCount), \ PERSIST_FIELD_BY_VALUE(DRIVE_LAYOUT_INFORMATION_EX, DRIVE_LAYOUT_INFORMATION_MBR, Mbr), \ PERSIST_FIELD_BY_VALUE(DRIVE_LAYOUT_INFORMATION_EX, DRIVE_LAYOUT_INFORMATION_GPT, Gpt), \ PERSIST_STRUCT_BY_VALUE_VARIABLE_LENGTH(DRIVE_LAYOUT_INFORMATION_EX, PARTITION_INFORMATION_EX, PartitionEntry, PartitionCount, 1), \ PERSIST_END_DECLARE_STRUCT(DRIVE_LAYOUT_INFORMATION_EX, BACKUPIMAGEINFO_VERSION)
#define DISKINFO_PERSISTENCE PERSIST_BEGIN_DECLARE_STRUCT(DISKINFO, BACKUPIMAGEINFO_VERSION) \
PERSIST_FIELD_BY_VALUE(DISKINFO, DISK_GEOMETRY, DiskGeometry), \ PERSIST_FIELD_NESTED_TYPE(DISKINFO, DRIVE_LAYOUT_INFORMATION_EX, BACKUPIMAGEINFO_VERSION, DiskLayout, BYREF), \ PERSIST_END_DECLARE_STRUCT(DISKINFO, BACKUPIMAGEINFO_VERSION)
#define DRIVEINFO_PERSISTENCE PERSIST_BEGIN_DECLARE_STRUCT(DRIVEINFO, BACKUPIMAGEINFO_VERSION)\
PERSIST_FIELD_BY_VALUE(DRIVEINFO, WCHAR, Drive), \ PERSIST_FIELD_STRINGW(DRIVEINFO, FileSystemName), \ PERSIST_FIELD_BY_VALUE(DRIVEINFO, DWORD, FileSystemFlags), \ PERSIST_FIELD_STRINGW(DRIVEINFO, VolumeNTPath), \ PERSIST_END_DECLARE_STRUCT(DRIVEINFO, BACKUPIMAGEINFO_VERSION)
#define FILEINTEGRITYINFO_PERSISTENCE PERSIST_BEGIN_DECLARE_STRUCT(FILEINTEGRITYINFO, BACKUPIMAGEINFO_VERSION)\
PERSIST_FIELD_STRINGW(FILEINTEGRITYINFO, FileName), \ PERSIST_FIELD_BY_VALUE(FILEINTEGRITYINFO, BOOL, IsCab), \ PERSIST_FIELD_BY_VALUE(FILEINTEGRITYINFO, ULARGE_INTEGER, FileSize), \ PERSIST_END_DECLARE_STRUCT(FILEINTEGRITYINFO, BACKUPIMAGEINFO_VERSION)
#define BACKUPIMAGEINFO_PERSISTENCE PERSIST_BEGIN_DECLARE_STRUCT(BACKUPIMAGEINFO, BACKUPIMAGEINFO_VERSION)\
PERSIST_FIELD_BY_VALUE(BACKUPIMAGEINFO, ULARGE_INTEGER, BootFilesDiskSpace), \ PERSIST_FIELD_BY_VALUE(BACKUPIMAGEINFO, ULARGE_INTEGER, BackupFilesDiskSpace), \ PERSIST_FIELD_BY_VALUE(BACKUPIMAGEINFO, ULARGE_INTEGER, UndoFilesDiskSpace), \ PERSIST_FIELD_BY_VALUE(BACKUPIMAGEINFO, UINT, NumberOfDisks), \ PERSIST_FIELD_NESTED_TYPE_CYCLE(BACKUPIMAGEINFO, DISKINFO, BACKUPIMAGEINFO_VERSION, DisksInfo, BYREF, NumberOfDisks), \ PERSIST_FIELD_BY_VALUE(BACKUPIMAGEINFO, UINT, NumberOfDrives), \ PERSIST_FIELD_NESTED_TYPE_CYCLE(BACKUPIMAGEINFO, DRIVEINFO, BACKUPIMAGEINFO_VERSION, DrivesInfo, BYREF, NumberOfDrives), \ PERSIST_FIELD_BY_VALUE(BACKUPIMAGEINFO, UINT, NumberOfFiles), \ PERSIST_FIELD_NESTED_TYPE_CYCLE(BACKUPIMAGEINFO, FILEINTEGRITYINFO, BACKUPIMAGEINFO_VERSION, FilesInfo, BYREF, NumberOfFiles), \ PERSIST_END_DECLARE_STRUCT(BACKUPIMAGEINFO, BACKUPIMAGEINFO_VERSION)
BOOL IsFloppyDiskInDrive( VOID );
#endif
#endif
|