6.1 Appendix A.1: dmintf.idl
-
import "ms-dtyp.idl"; import "ms-dcom.idl"; typedef LONGLONG LdmObjectId; typedef enum _REGIONTYPE { REGION_UNKNOWN, REGION_FREE, REGION_EXTENDED_FREE, REGION_PRIMARY, REGION_LOGICAL, REGION_EXTENDED, REGION_SUBDISK, REGION_CDROM, REGION_REMOVABLE } REGIONTYPE; typedef enum _VOLUMETYPE { VOLUMETYPE_UNKNOWN, VOLUMETYPE_PRIMARY_PARTITION, VOLUMETYPE_LOGICAL_DRIVE, VOLUMETYPE_FT, VOLUMETYPE_VM, VOLUMETYPE_CDROM, VOLUMETYPE_REMOVABLE } VOLUMETYPE; typedef enum _VOLUMELAYOUT { VOLUMELAYOUT_UNKNOWN, VOLUMELAYOUT_PARTITION, VOLUMELAYOUT_SIMPLE, VOLUMELAYOUT_SPANNED, VOLUMELAYOUT_MIRROR, VOLUMELAYOUT_STRIPE, VOLUMELAYOUT_RAID5 } VOLUMELAYOUT; typedef enum _REQSTATUS { REQ_UNKNOWN, REQ_STARTED, REQ_IN_PROGRESS, REQ_COMPLETED, REQ_ABORTED, REQ_FAILED } REQSTATUS; typedef enum _REGIONSTATUS { REGIONSTATUS_UNKNOWN, REGIONSTATUS_OK, REGIONSTATUS_FAILED, REGIONSTATUS_FAILING, REGIONSTATUS_REGENERATING, REGIONSTATUS_NEEDSRESYNC } REGIONSTATUS; typedef enum _VOLUMESTATUS { VOLUME_STATUS_UNKNOWN, VOLUME_STATUS_HEALTHY, VOLUME_STATUS_FAILED, VOLUME_STATUS_FAILED_REDUNDANCY, VOLUME_STATUS_FAILING, VOLUME_STATUS_FAILING_REDUNDANCY, VOLUME_STATUS_FAILED_REDUNDANCY_FAILING, VOLUME_STATUS_SYNCHING, VOLUME_STATUS_REGENERATING, VOLUME_STATUS_INITIALIZING, VOLUME_STATUS_FORMATTING } VOLUMESTATUS; typedef enum _LDMACTION { LDMACTION_UNKNOWN, LDMACTION_CREATED, LDMACTION_DELETED, LDMACTION_MODIFIED, LDMACTION_FAILED } LDMACTION; typedef enum _dmNotifyInfoType { DMNOTIFY_UNKNOWN_INFO, DMNOTIFY_DISK_INFO, DMNOTIFY_VOLUME_INFO, DMNOTIFY_REGION_INFO, DMNOTIFY_TASK_INFO, DMNOTIFY_DL_INFO, DMNOTIFY_FS_INFO, DMNOTIFY_SYSTEM_INFO } DMNOTIFY_INFO_TYPE; typedef enum _dmProgressType { PROGRESS_UNKNOWN, PROGRESS_FORMAT, PROGRESS_SYNCHING } DMPROGRESS_TYPE; const DWORD DISK_AUDIO_CD = 0x1; const DWORD DISK_NEC98 = 0x2; #define DEVICETYPE_UNKNOWN 0x00000000 #define DEVICETYPE_VM 0x00000001 #define DEVICETYPE_REMOVABLE 0x00000002 #define DEVICETYPE_CDROM 0x00000003 #define DEVICETYPE_FDISK 0x00000004 #define DEVICETYPE_DVD 0x00000005 #define DEVICESTATE_UNKNOWN 0x00000000 #define DEVICESTATE_HEALTHY 0x00000001 #define DEVICESTATE_NO_MEDIA 0x00000002 #define DEVICESTATE_NOSIG 0x00000004 #define DEVICESTATE_BAD 0x00000008 #define DEVICESTATE_NOT_READY 0x00000010 #define DEVICESTATE_MISSING 0x00000020 #define DEVICESTATE_OFFLINE 0x00000040 #define DEVICESTATE_FAILING 0x00000080 #define DEVICESTATE_IMPORT_FAILED 0x00000100 #define DEVICESTATE_UNCLAIMED 0x00000200 #define BUSTYPE_UNKNOWN 0x00000000 #define BUSTYPE_IDE 0x00000001 #define BUSTYPE_SCSI 0x00000002 #define BUSTYPE_FIBRE 0x00000003 #define BUSTYPE_USB 0x00000004 #define BUSTYPE_SSA 0x00000005 #define BUSTYPE_1394 0x00000006 #define DEVICEATTR_NONE 0x00000000 #define DEVICEATTR_RDONLY 0x00000001 #define DEVICEATTR_NTMS 0x00000002 #define CONTAINS_FT 0x00000001 #define CONTAINS_RAID5 0x00000002 #define CONTAINS_REDISTRIBUTION 0x00000004 #define CONTAINS_BOOTABLE_PARTITION 0x00000008
-
#define CONTAINS_LOCKED_PARTITION 0x00000010 #define CONTAINS_NO_FREE_SPACE 0x00000020 #define CONTAINS_EXTENDED_PARTITION 0x00000040 #define PARTITION_NUMBER_CHANGE 0x00000080 #define CONTAINS_BOOTINDICATOR 0x00000100 #define CONTAINS_BOOTLOADER 0x00000200 #define CONTAINS_SYSTEMDIR 0x00000400 #define CONTAINS_MIXED_PARTITIONS 0x00000800 const unsigned long PARTITION_OS2_BOOT = 0xa; const unsigned long PARTITION_EISA = 0x12; const unsigned long PARTITION_HIBERNATION= 0x84; const unsigned long PARTITION_DIAGNOSTIC = 0xA0; const unsigned long PARTITION_DELL = 0xDE; const unsigned long PARTITION_IBM = 0xFE; const DWORD REGION_FORMAT_IN_PROGRESS = 0x1; const DWORD VOLUME_FORMAT_IN_PROGRESS = 0x1; const DWORD REGION_IS_SYSTEM_PARTITION = 0x2; const DWORD REGION_HAS_PAGEFILE = 0x4; const DWORD VOLUME_HAS_PAGEFILE = 0x4; const DWORD REGION_HAD_BOOT_INI = 0x40; const DWORD VOLUME_IS_BOOT_VOLUME = 0x100; const DWORD VOLUME_IS_RESTARTABLE = 0x400; const DWORD VOLUME_IS_SYSTEM_VOLUME = 0x800; const DWORD VOLUME_HAS_RETAIN_PARTITION = 0x1000; const DWORD VOLUME_HAD_BOOT_INI = 0x2000; const DWORD VOLUME_CORRUPT = 0x4000; const DWORD VOLUME_HAS_CRASHDUMP = 0x8000; const DWORD VOLUME_IS_CURR_BOOT_VOLUME = 0x10000; const DWORD VOLUME_HAS_HIBERNATION = 0x20000; const DWORD NO_FORCE_OPERATION = 0; const DWORD FORCE_OPERATION = 1; const DWORD DL_PENDING_REMOVAL = 0x1; const DWORD SYSFLAG_SERVER = 0x1; const DWORD SYSFLAG_ALPHA = 0x2; const DWORD SYSFLAG_SYSPART_SECURE = 0x4; const DWORD SYSFLAG_NEC_98 = 0x8; const DWORD SYSFLAG_LAPTOP = 0x10; const DWORD SYSFLAG_WOLFPACK = 0x20; const DWORD DSKMERGE_DELETE = 0x1; const DWORD DSKMERGE_DELETE_REDUNDANCY = 0x2; const DWORD DSKMERGE_STALE_DATA = 0x4; const DWORD DSKMERGE_RELATED = 0x8; const DWORD DSKMERGE_IN_NO_UNRELATED = 1; const DWORD DSKMERGE_OUT_NO_PRIMARY_DG = 1; const DWORD FTREPLACE_FORCE = 0x1; const DWORD FTREPLACE_DELETE_ON_FAIL = 0x2; const DWORD CREATE_ASSIGN_ACCESS_PATH = 0x1; typedef struct volumespec { VOLUMETYPE type; VOLUMELAYOUT layout; REGIONTYPE partitionType; LONGLONG length; LONGLONG lastKnownState; }
-
VOLUME_SPEC; typedef struct volumeinfo { LdmObjectId id; VOLUMETYPE type; VOLUMELAYOUT layout; LONGLONG length; LdmObjectId fsId; unsigned long memberCount; VOLUMESTATUS status; LONGLONG lastKnownState; LdmObjectId taskId; unsigned long vflags; } VOLUME_INFO; struct diskspec { LdmObjectId diskId; LONGLONG length; boolean needContiguous; LONGLONG lastKnownState; }; typedef struct diskspec DISK_SPEC; struct diskinfo { LdmObjectId id; LONGLONG length; LONGLONG freeBytes; unsigned long bytesPerTrack; unsigned long bytesPerCylinder; unsigned long bytesPerSector; unsigned long regionCount; unsigned long dflags; unsigned long deviceType; unsigned long deviceState; unsigned long busType; unsigned long attributes; boolean isUpgradeable; int portNumber; int targetNumber; int lunNumber; LONGLONG lastKnownState; LdmObjectId taskId; int cchName; int cchVendor; int cchDgid; int cchAdapterName; int cchDgName; [size_is(cchName)] wchar_t * name; [size_is(cchVendor)] wchar_t *vendor; [size_is(cchDgid)] byte *dgid; [size_is(cchAdapterName)] wchar_t *adapterName; [size_is(cchDgName)] wchar_t *dgName; }; typedef struct diskinfo DISK_INFO; struct regionspec { LdmObjectId regionId; REGIONTYPE regionType; LdmObjectId diskId; LONGLONG start; LONGLONG length; LONGLONG lastKnownState; }; typedef struct regionspec REGION_SPEC; struct regioninfo { LdmObjectId id; LdmObjectId diskId; LdmObjectId volId; LdmObjectId fsId; LONGLONG start; LONGLONG length; REGIONTYPE regionType; unsigned long partitionType; boolean isActive; REGIONSTATUS status; hyper lastKnownState; LdmObjectId taskId; unsigned long rflags; unsigned long currentPartitionNumber; }; typedef struct regioninfo REGION_INFO; struct driveletterinfo { wchar_t letter; LdmObjectId storageId; boolean isUsed; hyper lastKnownState; LdmObjectId taskId; unsigned long dlflags; }; typedef struct driveletterinfo DRIVE_LETTER_INFO; struct filesysteminfo { LdmObjectId id; LdmObjectId storageId; LONGLONG totalAllocationUnits; LONGLONG availableAllocationUnits; unsigned long allocationUnitSize; unsigned long fsflags; hyper lastKnownState; LdmObjectId taskId; long fsType; int cchLabel; [size_is(cchLabel)] wchar_t * label; }; typedef struct filesysteminfo FILE_SYSTEM_INFO; const DWORD ENABLE_VOLUME_COMPRESSION = 1; const DWORD MAX_FS_NAME_SIZE = 8; struct ifilesysteminfo { long fsType; WCHAR fsName[MAX_FS_NAME_SIZE]; unsigned long fsFlags; unsigned long fsCompressionFlags; int cchLabelLimit; int cchLabel; [size_is(cchLabel)] wchar_t *iLabelChSet; }; typedef struct ifilesysteminfo IFILE_SYSTEM_INFO; const unsigned long FSF_FMT_OPTION_COMPRESS = 0x00000001; const unsigned long FSF_FMT_OPTION_LABEL = 0x00000002; const unsigned long FSF_MNT_POINT_SUPPORT = 0x00000004; const unsigned long FSF_REMOVABLE_MEDIA_SUPPORT = 0x00000008; const unsigned long FSF_FS_GROW_SUPPORT = 0x00000010; const unsigned long FSF_FS_QUICK_FORMAT_ENABLE = 0x00000020; const unsigned long FSF_FS_ALLOC_SZ_512 = 0x00000040; const unsigned long FSF_FS_ALLOC_SZ_1K = 0x00000080; const unsigned long FSF_FS_ALLOC_SZ_2K = 0x00000100; const unsigned long FSF_FS_ALLOC_SZ_4K = 0x00000200; const unsigned long FSF_FS_ALLOC_SZ_8K = 0x00000400; const unsigned long FSF_FS_ALLOC_SZ_16K = 0x00000800; const unsigned long FSF_FS_ALLOC_SZ_32K = 0x00001000; const unsigned long FSF_FS_ALLOC_SZ_64K = 0x00002000; const unsigned long FSF_FS_ALLOC_SZ_128K = 0x00004000; const unsigned long FSF_FS_ALLOC_SZ_256K = 0x00008000; const unsigned long FSF_FS_ALLOC_SZ_OTHER = 0x00010000; const unsigned long FSF_FS_FORMAT_SUPPORTED = 0x00020000; const unsigned long FSF_FS_VALID_BITS = 0x0003FFFF; const long FSTYPE_UNKNOWN = 0x00000000; const long FSTYPE_NTFS = 0x00000001; const long FSTYPE_FAT = 0x00000002; const long FSTYPE_FAT32 = 0x00000003; const long FSTYPE_CDFS = 0x00000004; const long FSTYPE_UDF = 0x00000005; const long FSTYPE_OTHER = 0x80000000; struct taskinfo { LdmObjectId id; LdmObjectId storageId; LONGLONG createTime; LdmObjectId clientID; unsigned long percentComplete; REQSTATUS status; DMPROGRESS_TYPE type; HRESULT error; unsigned long tflag; }; typedef struct taskinfo TASK_INFO; struct countedstring { LdmObjectId sourceId; LdmObjectId targetId; int cchString; [size_is(cchString)] wchar_t *sstring; }; typedef struct countedstring COUNTED_STRING; struct mergeobjectinfo { DWORD type; DWORD flags; VOLUMELAYOUT layout; LONGLONG length; }; typedef struct mergeobjectinfo MERGE_OBJECT_INFO; const DWORD ENCAP_INFO_CANT_PROCEED = 0x1; const DWORD ENCAP_INFO_NO_FREE_SPACE = 0x2; const DWORD ENCAP_INFO_BAD_ACTIVE = 0x4; const DWORD ENCAP_INFO_UNKNOWN_PART = 0x8; const DWORD ENCAP_INFO_FT_UNHEALTHY = 0x10; const DWORD ENCAP_INFO_FT_QUERY_FAILED= 0x20; const DWORD ENCAP_INFO_FT_HAS_RAID5 = 0x40; const DWORD ENCAP_INFO_FT_ON_BOOT = 0x80; const DWORD ENCAP_INFO_REBOOT_REQD = 0x100; const DWORD ENCAP_INFO_CONTAINS_FT = 0x200; const DWORD ENCAP_INFO_VOLUME_BUSY = 0x400; const DWORD ENCAP_INFO_PART_NR_CHANGE = 0x800; [ object, uuid(D2D79DF5-3400-11d0-B40B-00AA005FF586), pointer_default(unique) ] interface IVolumeClient : IUnknown { HRESULT EnumDisks([out] unsigned long *diskCount, [out, size_is(,*diskCount)] DISK_INFO **diskList); HRESULT EnumDiskRegions([in] LdmObjectId diskId, [in, out] unsigned long *numRegions, [out, size_is(,*numRegions)] REGION_INFO **regionList); HRESULT CreatePartition([in] REGION_SPEC partitionSpec, [out] TASK_INFO *tinfo); HRESULT CreatePartitionAssignAndFormat([in] REGION_SPEC partitionSpec, [in] wchar_t letter, [in] hyper letterLastKnownState, [in] FILE_SYSTEM_INFO fsSpec, [in] boolean quickFormat, [out] TASK_INFO *tinfo); HRESULT CreatePartitionAssignAndFormatEx([in] REGION_SPEC partitionSpec, [in] wchar_t letter, [in] hyper letterLastKnownState, [in] int cchAccessPath, [in, size_is(cchAccessPath)] wchar_t *AccessPath, [in] FILE_SYSTEM_INFO fsSpec, [in] boolean quickFormat, [in] DWORD dwFlags, [out] TASK_INFO *tinfo); HRESULT DeletePartition([in] REGION_SPEC partitionSpec, [in] boolean force, [out] TASK_INFO *tinfo); HRESULT WriteSignature( [in] LdmObjectId diskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT MarkActivePartition([in] LdmObjectId regionId, [in] hyper regionLastKnownState, [out] TASK_INFO *tinfo ); HRESULT Eject( [in] LdmObjectId diskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT Reserved_Opnum12(void); HRESULT FTEnumVolumes([in, out] unsigned long *volumeCount, [out, size_is(,*volumeCount)] VOLUME_INFO **ftVolumeList); HRESULT FTEnumLogicalDiskMembers([in] LdmObjectId volumeId, [in, out] unsigned long *memberCount, [out, size_is(,*memberCount)] LdmObjectId **memberList); HRESULT FTDeleteVolume([in] LdmObjectId volumeId, [in] boolean force, [in] hyper volumeLastKnownState, [out] TASK_INFO *tinfo); HRESULT FTBreakMirror([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] boolean bForce, [out] TASK_INFO *tinfo); HRESULT FTResyncMirror([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [out] TASK_INFO *tinfo); HRESULT FTRegenerateParityStripe([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [out] TASK_INFO *tinfo); HRESULT FTReplaceMirrorPartition([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] LdmObjectId oldMemberId, [in] hyper oldMemberLastKnownState, [in] LdmObjectId newRegionId, [in] hyper newRegionLastKnownState, [in] DWORD flags, [out] TASK_INFO *tinfo); HRESULT FTReplaceParityStripePartition([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] LdmObjectId oldMemberId, [in] hyper oldMemberLastKnownState, [in] LdmObjectId newRegionId, [in] hyper newRegionLastKnownState, [in] DWORD flags, [out] TASK_INFO *tinfo); HRESULT EnumDriveLetters([in, out] unsigned long * driveLetterCount, [out, size_is(,*driveLetterCount)] DRIVE_LETTER_INFO **driveLetterList); HRESULT AssignDriveLetter([in] wchar_t letter, [in] unsigned long forceOption, [in] hyper letterLastKnownState, [in] LdmObjectId storageId, [in] hyper storageLastKnownState, [out] TASK_INFO *tinfo); HRESULT FreeDriveLetter([in] wchar_t letter, [in] unsigned long forceOption, [in] hyper letterLastKnownState, [in] LdmObjectId storageId, [in] hyper storageLastKnownState, [out] TASK_INFO *tinfo); HRESULT EnumLocalFileSystems([out] unsigned long * fileSystemCount, [out, size_is(,*fileSystemCount)] FILE_SYSTEM_INFO **fileSystemList); HRESULT GetInstalledFileSystems([out] unsigned long *fsCount, [out, size_is(,*fsCount)] IFILE_SYSTEM_INFO **fsList); HRESULT Format([in] LdmObjectId storageId, [in] FILE_SYSTEM_INFO fsSpec, [in] boolean quickFormat, [in] boolean force, [in] hyper storageLastKnownState, [out] TASK_INFO *tinfo); HRESULT Reserved27( void ); HRESULT EnumVolumes( [in, out] unsigned long *volumeCount, [out, size_is(,*volumeCount)] VOLUME_INFO **LdmVolumeList); HRESULT EnumVolumeMembers([in] LdmObjectId volumeId, [in, out] unsigned long * memberCount, [out, size_is(,*memberCount)] LdmObjectId ** memberList); HRESULT CreateVolume([in] VOLUME_SPEC volumeSpec, [in] unsigned long diskCount, [in, size_is(diskCount)] DISK_SPEC *diskList, [out] TASK_INFO *tinfo ); HRESULT CreateVolumeAssignAndFormat([in] VOLUME_SPEC volumeSpec, [in] unsigned long diskCount, [in, size_is(diskCount)] DISK_SPEC *diskList, [in] wchar_t letter, [in] hyper letterLastKnownState, [in] FILE_SYSTEM_INFO fsSpec, [in] boolean quickFormat, [out] TASK_INFO *tinfo); HRESULT CreateVolumeAssignAndFormatEx([in] VOLUME_SPEC volumeSpec, [in] unsigned long diskCount, [in, size_is(diskCount)] DISK_SPEC *diskList, [in] wchar_t letter, [in] hyper letterLastKnownState, [in] int cchAccessPath, [in, size_is(cchAccessPath)] wchar_t *AccessPath, [in] FILE_SYSTEM_INFO fsSpec, [in] boolean quickFormat, [in] DWORD dwFlags, [out] TASK_INFO *tinfo); HRESULT GetVolumeMountName( [in] LdmObjectId volumeId, [out] unsigned long *cchMountName, [out, size_is( ,*cchMountName)] WCHAR **mountName); HRESULT GrowVolume( [in] LdmObjectId volumeId, [in] VOLUME_SPEC volumeSpec, [in] unsigned long diskCount, [in, size_is(diskCount)] DISK_SPEC *diskList, [in] boolean force, [out] TASK_INFO *tinfo ); HRESULT DeleteVolume([in] LdmObjectId volumeId, [in] boolean force, [in] hyper volumeLastKnownState, [out] TASK_INFO *tinfo ); HRESULT AddMirror([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] DISK_SPEC diskSpec, [in, out] int *diskNumber, [out] int *partitionNumber, [out] TASK_INFO *tinfo ); HRESULT RemoveMirror([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] LdmObjectId diskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT SplitMirror( [in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] LdmObjectId diskId, [in] hyper diskLastKnownState, [in] wchar_t letter, [in] hyper letterLastKnownState, [in, out] TASK_INFO *tinfo ); HRESULT InitializeDisk([in] LdmObjectId diskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT UninitializeDisk([in] LdmObjectId diskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT ReConnectDisk( [in] LdmObjectId diskId, [out] TASK_INFO *tinfo ); HRESULT Reserved_Opnum42( void ); HRESULT ImportDiskGroup ([in] int cchDgid, [in, size_is( cchDgid)] byte *dgid, [out] TASK_INFO *tinfo); HRESULT DiskMergeQuery([in] int cchDgid, [in, size_is( cchDgid)] byte *dgid, [in] int numDisks, [in, size_is( numDisks)] LdmObjectId *diskList, [out] hyper *merge_config_tid, [out] int *numRids, [out, size_is(,*numRids)] hyper **merge_dm_rids, [out] int *numObjects, [out, size_is(,*numObjects)] MERGE_OBJECT_INFO **mergeObjectInfo, [in, out] unsigned long *flags, [out] TASK_INFO *tinfo); HRESULT DiskMerge([in] int cchDgid, [in, size_is( cchDgid)] byte *dgid, [in] int numDisks, [in, size_is( numDisks)] LdmObjectId *diskList, [in] hyper merge_config_tid, [in] int numRids, [in, size_is(numRids)] hyper *merge_dm_rids, [out] TASK_INFO *tinfo); HRESULT Reserved_Opnum46( void ); HRESULT ReAttachDisk([in] LdmObjectId diskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT Reserved_Opnum48(void); HRESULT Reserved_Opnum49(void); HRESULT Reserved_Opnum50(void); HRESULT ReplaceRaid5Column([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [in] LdmObjectId newDiskId, [in] hyper diskLastKnownState, [out] TASK_INFO *tinfo ); HRESULT RestartVolume([in] LdmObjectId volumeId, [in] hyper volumeLastKnownState, [out] TASK_INFO *tinfo ); HRESULT GetEncapsulateDiskInfo( [in] unsigned long diskCount, [in, size_is(diskCount)] DISK_SPEC *diskSpecList, [out] unsigned long *encapInfoFlags, [out] unsigned long *affectedDiskCount, [out, size_is( ,*affectedDiskCount)] DISK_INFO **affectedDiskList, [out, size_is( ,*affectedDiskCount)] unsigned long **affectedDiskFlags, [out] unsigned long *affectedVolumeCount, [out, size_is( ,*affectedVolumeCount)] VOLUME_INFO **affectedVolumeList, [out] unsigned long *affectedRegionCount, [out, size_is( ,*affectedRegionCount)] REGION_INFO **affectedRegionList, [out] TASK_INFO *tinfo ); HRESULT EncapsulateDisk([in] unsigned long affectedDiskCount, [in, size_is(affectedDiskCount)] DISK_INFO *affectedDiskList, [in] unsigned long affectedVolumeCount, [in, size_is(affectedVolumeCount)] VOLUME_INFO *affectedVolumeList, [in] unsigned long affectedRegionCount, [in, size_is(affectedRegionCount)] REGION_INFO *affectedRegionList, [out] unsigned long *encapInfoFlags, [out] TASK_INFO *tinfo ); HRESULT QueryChangePartitionNumbers([out] int *oldPartitionNumber, [out] int *newPartitionNumber ); HRESULT DeletePartitionNumberInfoFromRegistry(); HRESULT SetDontShow([in] boolean bSetNoShow); HRESULT GetDontShow([out] boolean *bGetNoShow); HRESULT Reserved0( void ); HRESULT Reserved1( void ); HRESULT Reserved2( void ); HRESULT Reserved3( void ); HRESULT Reserved4( void ); HRESULT Reserved5( void ); HRESULT Reserved6( void ); HRESULT Reserved7( void ); HRESULT EnumTasks( [in, out] unsigned long *taskCount, [out, size_is(,*taskCount)] TASK_INFO **taskList); HRESULT GetTaskDetail([in] LdmObjectId id, [in, out] TASK_INFO *tinfo); HRESULT AbortTask([in] LdmObjectId id); HRESULT HrGetErrorData( [in] HRESULT hr, [in] DWORD dwFlags, [out] DWORD *pdwStoredFlags, [out] int * pcszw, [out, string, size_is(,*pcszw,)] wchar_t *** prgszw ); HRESULT Initialize([in] IUnknown *notificationInterface, [out] unsigned long *ulIDLVersion, [out] DWORD *pdwFlags, [out] LdmObjectId * clientId, [in] unsigned long cRemote); HRESULT Uninitialize(); HRESULT Refresh(); HRESULT RescanDisks(); HRESULT RefreshFileSys(); HRESULT SecureSystemPartition(); HRESULT ShutDownSystem(); HRESULT EnumAccessPath([in, out] int *lCount, [out, size_is(,*lCount)] COUNTED_STRING **paths); HRESULT EnumAccessPathForVolume([in] LdmObjectId VolumeId, [in, out] int *lCount, [out, size_is(,*lCount)] COUNTED_STRING **paths); HRESULT AddAccessPath([in] int cch_path, [in , size_is (cch_path)] WCHAR *path, [in] LdmObjectId targetId); HRESULT DeleteAccessPath([in] LdmObjectId volumeId, [in] int cch_path, [in , size_is (cch_path)] WCHAR *path); } [ object, uuid(D2D79DF7-3400-11d0-B40B-00AA005FF586), pointer_default(unique) ] interface IDMNotify : IUnknown { typedef [unique] IDMNotify *LPIDMNOTIFY; HRESULT ObjectsChanged([in] DWORD ByteCount, [in, size_is(ByteCount)] byte *ByteStream); } [ object, uuid(3A410F21-553F-11d1-8E5E-00A0C92C9D5D), pointer_default(unique) ] interface IDMRemoteServer : IUnknown { HRESULT CreateRemoteObject([in] unsigned long cMax, [in, max_is(cMax)] wchar_t *RemoteComputerName); } [ object, uuid(4BDAFC52-FE6A-11d2-93F8-00105A11164A), pointer_default(unique) ] interface IVolumeClient2 : IUnknown { HRESULT GetMaxAdjustedFreeSpace([in] LdmObjectId diskId, [out] LONGLONG* maxAdjustedFreeSpace); }