; 
; Exports of file DMDskMgr.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY DMDskMgr.dll
EXPORTS
; public: __cdecl CDataCache::CDataCache(void) __ptr64
??0CDataCache@@QEAA@XZ
; public: __cdecl CDMNodeObj::~CDMNodeObj(void) __ptr64
??1CDMNodeObj@@QEAA@XZ
; public: virtual __cdecl CDataCache::~CDataCache(void) __ptr64
??1CDataCache@@UEAA@XZ
; public: void __cdecl CDataCache::AddFileSystemInfoToListAndMap(unsigned long,struct filesysteminfo * __ptr64) __ptr64
?AddFileSystemInfoToListAndMap@CDataCache@@QEAAXKPEAUfilesysteminfo@@@Z
; public: void __cdecl CDataCache::AddInstalledFileSystemsToList(unsigned long,struct ifilesysteminfo * __ptr64) __ptr64
?AddInstalledFileSystemsToList@CDataCache@@QEAAXKPEAUifilesysteminfo@@@Z
; public: void __cdecl CDataCache::AddLDMObjMapEntry(struct _LDM_OBJ_MAP_ENTRY * __ptr64) __ptr64
?AddLDMObjMapEntry@CDataCache@@QEAAXPEAU_LDM_OBJ_MAP_ENTRY@@@Z
; public: void __cdecl CDataCache::AddRegionToVolumeMemberList(class CDMNodeObj * __ptr64) __ptr64
?AddRegionToVolumeMemberList@CDataCache@@QEAAXPEAVCDMNodeObj@@@Z
; public: void __cdecl CDMComponentData::AddRow(__int64) __ptr64
?AddRow@CDMComponentData@@QEAAX_J@Z
; public: void __cdecl CDataCache::AdjustRegionCountInLegendList(enum _REGIONTYPE,int) __ptr64
?AdjustRegionCountInLegendList@CDataCache@@QEAAXW4_REGIONTYPE@@H@Z
; public: void __cdecl CDataCache::AdjustVolumeCountInLegendList(enum _VOLUMELAYOUT,int) __ptr64
?AdjustVolumeCountInLegendList@CDataCache@@QEAAXW4_VOLUMELAYOUT@@H@Z
; public: int __cdecl CDMNodeObj::CanHaveGPT(void) __ptr64
?CanHaveGPT@CDMNodeObj@@QEAAHXZ
; public: void __cdecl CDMComponentData::ChangeRow(__int64) __ptr64
?ChangeRow@CDMComponentData@@QEAAX_J@Z
; public: long __cdecl CContextMenu::Command(long,struct IDataObject * __ptr64,__int64) __ptr64
?Command@CContextMenu@@QEAAJJPEAUIDataObject@@_J@Z
; int __cdecl CompareDiskNames(__int64,__int64)
?CompareDiskNames@@YAH_J0@Z
; public: int __cdecl CDMNodeObj::ContainsActivePartition(void) __ptr64
?ContainsActivePartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsBootIniPartition(void) __ptr64
?ContainsBootIniPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsBootIniPartitionForWolfpack(void) __ptr64
?ContainsBootIniPartitionForWolfpack@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsBootVolumesNumberChange(__int64,int * __ptr64) __ptr64
?ContainsBootVolumesNumberChange@CDMNodeObj@@QEAAH_JPEAH@Z
; public: int __cdecl CDMNodeObj::ContainsESPPartition(void) __ptr64
?ContainsESPPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsLogicalDrvBootPartition(void) __ptr64
?ContainsLogicalDrvBootPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsPageFile(void) __ptr64
?ContainsPageFile@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsRealSystemPartition(void) __ptr64
?ContainsRealSystemPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsSubDiskNeedResync(void) __ptr64
?ContainsSubDiskNeedResync@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsSystemInformation(void) __ptr64
?ContainsSystemInformation@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::ContainsSystemPartition(void) __ptr64
?ContainsSystemPartition@CDMNodeObj@@QEAAHXZ
; unsigned long __cdecl ConvertBytesToMB(__int64)
?ConvertBytesToMB@@YAK_J@Z
; __int64 __cdecl ConvertMBToBytes(__int64)
?ConvertMBToBytes@@YA_J_J@Z
; void __cdecl CookieSort(__int64 * __ptr64,long,long,int (__cdecl*)(__int64,__int64))
?CookieSort@@YAXPEA_JJJP6AH_J1@Z@Z
; public: void __cdecl CDataCache::CreateDiskList(void) __ptr64
?CreateDiskList@CDataCache@@QEAAXXZ
; public: class CDMNodeObj * __ptr64 __cdecl CDataCache::CreateNodeObjAndAddToMap(int,enum _NODEOBJ_TYPES,class CDataCache * __ptr64,void * __ptr64,__int64) __ptr64
?CreateNodeObjAndAddToMap@CDataCache@@QEAAPEAVCDMNodeObj@@HW4_NODEOBJ_TYPES@@PEAV1@PEAX_J@Z
; public: class CDMNodeObj * __ptr64 __cdecl CDataCache::CreateRegionNodeObj(class CDMNodeObj * __ptr64,struct regioninfoex * __ptr64) __ptr64
?CreateRegionNodeObj@CDataCache@@QEAAPEAVCDMNodeObj@@PEAV2@PEAUregioninfoex@@@Z
; public: void __cdecl CDataCache::CreateShortDiskName(struct diskinfoex & __ptr64) __ptr64
?CreateShortDiskName@CDataCache@@QEAAXAEAUdiskinfoex@@@Z
; public: void __cdecl CDataCache::CreateVolumeList(void) __ptr64
?CreateVolumeList@CDataCache@@QEAAXXZ
; public: void __cdecl CDataCache::DeleteDiskGroupData(struct DISK_GROUP_DATA * __ptr64) __ptr64
?DeleteDiskGroupData@CDataCache@@QEAAXPEAUDISK_GROUP_DATA@@@Z
; public: void __cdecl CDataCache::DeleteEncapsulateData(struct ENCAPSULATE_DATA * __ptr64) __ptr64
?DeleteEncapsulateData@CDataCache@@QEAAXPEAUENCAPSULATE_DATA@@@Z
; public: void __cdecl CDataCache::DeleteLists(void) __ptr64
?DeleteLists@CDataCache@@QEAAXXZ
; public: void __cdecl CDataCache::DeleteRegionFromVolumeMemberList(class CDMNodeObj * __ptr64) __ptr64
?DeleteRegionFromVolumeMemberList@CDataCache@@QEAAXPEAVCDMNodeObj@@@Z
; public: void __cdecl CDMComponentData::DeleteRow(__int64) __ptr64
?DeleteRow@CDMComponentData@@QEAAX_J@Z
; public: void __cdecl CContextMenu::DoDelete(__int64) __ptr64
?DoDelete@CContextMenu@@QEAAX_J@Z
; public: void __cdecl CDMComponentData::EmptyOcxViewData(void) __ptr64
?EmptyOcxViewData@CDMComponentData@@QEAAXXZ
; public: int __cdecl CDMNodeObj::EnhancedIsUpgradeable(class CTaskData * __ptr64) __ptr64
?EnhancedIsUpgradeable@CDMNodeObj@@QEAAHPEAVCTaskData@@@Z
; public: void __cdecl CDMNodeObj::EnumDiskRegions(__int64 * __ptr64 * __ptr64,long & __ptr64) __ptr64
?EnumDiskRegions@CDMNodeObj@@QEAAXPEAPEA_JAEAJ@Z
; public: void __cdecl CTaskData::EnumDisks(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?EnumDisks@CTaskData@@QEAAXAEAKPEAPEA_J@Z
; public: void __cdecl CDMNodeObj::EnumFirstVolumeMember(__int64 & __ptr64,long & __ptr64) __ptr64
?EnumFirstVolumeMember@CDMNodeObj@@QEAAXAEA_JAEAJ@Z
; public: void __cdecl CDataCache::EnumNTFSwithDriveLetter(int * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
?EnumNTFSwithDriveLetter@CDataCache@@QEAAXPEAHPEAPEAG@Z
; public: void __cdecl CTaskData::EnumNTFSwithDriveLetter(int * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
?EnumNTFSwithDriveLetter@CTaskData@@QEAAXPEAHPEAPEAG@Z
; public: void __cdecl CDMNodeObj::EnumVolumeMembers(__int64 * __ptr64 * __ptr64,long & __ptr64) __ptr64
?EnumVolumeMembers@CDMNodeObj@@QEAAXPEAPEA_JAEAJ@Z
; public: void __cdecl CTaskData::EnumVolumes(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?EnumVolumes@CTaskData@@QEAAXAEAKPEAPEA_J@Z
; public: void __cdecl CDataCache::FillDeviceInstanceId(unsigned short * __ptr64,unsigned short * __ptr64) __ptr64
?FillDeviceInstanceId@CDataCache@@QEAAXPEAG0@Z
; public: void __cdecl CTaskData::FilterCookiesBigEnoughForFTRepair(unsigned long & __ptr64,__int64 * __ptr64,__int64 * __ptr64 * __ptr64,long,class CDMNodeObj * __ptr64) __ptr64
?FilterCookiesBigEnoughForFTRepair@CTaskData@@QEAAXAEAKPEA_JPEAPEA_JJPEAVCDMNodeObj@@@Z
; public: void __cdecl CTaskData::FilterCookiesBigEnoughForRAID5Repair(unsigned long & __ptr64,__int64 * __ptr64,__int64 * __ptr64 * __ptr64,long,class CDMNodeObj * __ptr64) __ptr64
?FilterCookiesBigEnoughForRAID5Repair@CTaskData@@QEAAXAEAKPEA_JPEAPEA_JJPEAVCDMNodeObj@@@Z
; public: int __cdecl CDataCache::FindCookieAndRemoveFromList(__int64,class CList<class CDMNodeObj * __ptr64,class CDMNodeObj * __ptr64> * __ptr64) __ptr64
?FindCookieAndRemoveFromList@CDataCache@@QEAAH_JPEAV?$CList@PEAVCDMNodeObj@@PEAV1@@@@Z
; public: unsigned short * __ptr64 __cdecl CDataCache::FindDeviceInstanceId(__int64) __ptr64
?FindDeviceInstanceId@CDataCache@@QEAAPEAG_J@Z
; public: int __cdecl CDataCache::FindDiskPtrFromDiskId(__int64,class CDMNodeObj * __ptr64 * __ptr64) __ptr64
?FindDiskPtrFromDiskId@CDataCache@@QEAAH_JPEAPEAVCDMNodeObj@@@Z
; public: int __cdecl CDataCache::FindDriveLetter(__int64,unsigned short & __ptr64) __ptr64
?FindDriveLetter@CDataCache@@QEAAH_JAEAG@Z
; public: void __cdecl CTaskData::FindDriveLetter(__int64,unsigned short & __ptr64) __ptr64
?FindDriveLetter@CTaskData@@QEAAX_JAEAG@Z
; int __cdecl FindDriveLetterHelper(struct driveletterinfo * __ptr64,int,__int64,unsigned short & __ptr64)
?FindDriveLetterHelper@@YAHPEAUdriveletterinfo@@H_JAEAG@Z
; public: int __cdecl CDataCache::FindFileSystem(__int64,struct filesysteminfo & __ptr64) __ptr64
?FindFileSystem@CDataCache@@QEAAH_JAEAUfilesysteminfo@@@Z
; public: int __cdecl CTaskData::FindFileSystem(__int64,struct filesysteminfo & __ptr64) __ptr64
?FindFileSystem@CTaskData@@QEAAH_JAEAUfilesysteminfo@@@Z
; public: int __cdecl CDataCache::FindRegionPtrFromRegionId(__int64,class CDMNodeObj * __ptr64 * __ptr64) __ptr64
?FindRegionPtrFromRegionId@CDataCache@@QEAAH_JPEAPEAVCDMNodeObj@@@Z
; public: int __cdecl CTaskData::FindRegionPtrFromRegionId(__int64,class CDMNodeObj * __ptr64 * __ptr64) __ptr64
?FindRegionPtrFromRegionId@CTaskData@@QEAAH_JPEAPEAVCDMNodeObj@@@Z
; public: int __cdecl CDataCache::FindRegionPtrOnDiskFromRegionId(class CDMNodeObj * __ptr64,__int64,class CDMNodeObj * __ptr64 * __ptr64,struct __POSITION * __ptr64 & __ptr64) __ptr64
?FindRegionPtrOnDiskFromRegionId@CDataCache@@QEAAHPEAVCDMNodeObj@@_JPEAPEAV2@AEAPEAU__POSITION@@@Z
; public: int __cdecl CTaskData::GetAssignedDriveLetter(__int64,unsigned short & __ptr64) __ptr64
?GetAssignedDriveLetter@CTaskData@@QEAAH_JAEAG@Z
; public: int __cdecl CTaskData::GetBootPort(void) __ptr64
?GetBootPort@CTaskData@@QEAAHXZ
; public: int __cdecl CDMSnapin::GetBottomViewStyle(void) __ptr64
?GetBottomViewStyle@CDMSnapin@@QEAAHXZ
; public: unsigned long __cdecl CDMNodeObj::GetColorRef(void) __ptr64
?GetColorRef@CDMNodeObj@@QEAAKXZ
; public: class CDMNodeObj * __ptr64 __cdecl CTaskData::GetDMDataObjPtrFromId(__int64) __ptr64
?GetDMDataObjPtrFromId@CTaskData@@QEAAPEAVCDMNodeObj@@_J@Z
; public: unsigned long __cdecl CDMNodeObj::GetDeviceState(void) __ptr64
?GetDeviceState@CDMNodeObj@@QEAAKXZ
; public: unsigned long __cdecl CDMNodeObj::GetDeviceType(void) __ptr64
?GetDeviceType@CDMNodeObj@@QEAAKXZ
; protected: void __cdecl CDataCache::GetDiskCookies(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?GetDiskCookies@CDataCache@@IEAAXAEAKPEAPEA_J@Z
; public: void __cdecl CTaskData::GetDiskCookies(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64,int,unsigned long,int) __ptr64
?GetDiskCookies@CTaskData@@QEAAXAEAKPEAPEA_JHKH@Z
; public: void __cdecl CTaskData::GetDiskCookiesForSig(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?GetDiskCookiesForSig@CTaskData@@QEAAXAEAKPEAPEA_J@Z
; public: void __cdecl CTaskData::GetDiskCookiesForUpgrade(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?GetDiskCookiesForUpgrade@CTaskData@@QEAAXAEAKPEAPEA_J@Z
; public: void __cdecl CTaskData::GetDiskCookiesToEncap(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?GetDiskCookiesToEncap@CTaskData@@QEAAXAEAKPEAPEA_J@Z
; public: unsigned long __cdecl CDataCache::GetDiskCount(void) __ptr64
?GetDiskCount@CDataCache@@QEAAKXZ
; public: int __cdecl CDMNodeObj::GetDiskInfo(struct diskinfoex & __ptr64) __ptr64
?GetDiskInfo@CDMNodeObj@@QEAAHAEAUdiskinfoex@@@Z
; public: void __cdecl CTaskData::GetDiskInfoFromVolCookie(__int64,int & __ptr64,unsigned long & __ptr64,__int64 * __ptr64 * __ptr64,unsigned long,int) __ptr64
?GetDiskInfoFromVolCookie@CTaskData@@QEAAX_JAEAHAEAKPEAPEA_JKH@Z
; public: int __cdecl CDMSnapin::GetDiskScaling(void) __ptr64
?GetDiskScaling@CDMSnapin@@QEAAHXZ
; public: int __cdecl CDMNodeObj::GetDiskSpec(struct diskspec & __ptr64) __ptr64
?GetDiskSpec@CDMNodeObj@@QEAAHAEAUdiskspec@@@Z
; public: int __cdecl CDMNodeObj::GetDiskStatus(class CString & __ptr64) __ptr64
?GetDiskStatus@CDMNodeObj@@QEAAHAEAVCString@@@Z
; int __cdecl GetDiskStatusHelper(struct diskinfoex * __ptr64,class CString & __ptr64,int)
?GetDiskStatusHelper@@YAHPEAUdiskinfoex@@AEAVCString@@H@Z
; public: void __cdecl CDMNodeObj::GetDiskTypeName(class CString & __ptr64) __ptr64
?GetDiskTypeName@CDMNodeObj@@QEAAXAEAVCString@@@Z
; void __cdecl GetDiskTypeNameHelper(struct diskinfoex * __ptr64,class CString & __ptr64,unsigned short)
?GetDiskTypeNameHelper@@YAXPEAUdiskinfoex@@AEAVCString@@G@Z
; public: void __cdecl CDMNodeObj::GetDriveLetter(unsigned short & __ptr64) __ptr64
?GetDriveLetter@CDMNodeObj@@QEAAXAEAG@Z
; protected: void __cdecl CDataCache::GetDriveLetters(short & __ptr64,unsigned short * __ptr64 * __ptr64,unsigned short) __ptr64
?GetDriveLetters@CDataCache@@IEAAXAEAFPEAPEAGG@Z
; public: void __cdecl CTaskData::GetDriveLetters(short & __ptr64,unsigned short * __ptr64 * __ptr64,unsigned short) __ptr64
?GetDriveLetters@CTaskData@@QEAAXAEAFPEAPEAGG@Z
; public: unsigned long __cdecl CDMNodeObj::GetExtendedRegionColor(void) __ptr64
?GetExtendedRegionColor@CDMNodeObj@@QEAAKXZ
; public: int __cdecl CDMNodeObj::GetExtraRegionStatus(class CString & __ptr64,int) __ptr64
?GetExtraRegionStatus@CDMNodeObj@@QEAAHAEAVCString@@H@Z
; public: void __cdecl CDMNodeObj::GetFileSystemLabel(class CString & __ptr64) __ptr64
?GetFileSystemLabel@CDMNodeObj@@QEAAXAEAVCString@@@Z
; public: void __cdecl CDMNodeObj::GetFileSystemName(class CString & __ptr64) __ptr64
?GetFileSystemName@CDMNodeObj@@QEAAXAEAVCString@@@Z
; public: void __cdecl CDMNodeObj::GetFileSystemSize(long & __ptr64) __ptr64
?GetFileSystemSize@CDMNodeObj@@QEAAXAEAJ@Z
; public: int __cdecl CDMNodeObj::GetFileSystemType(void) __ptr64
?GetFileSystemType@CDMNodeObj@@QEAAHXZ
; public: void __cdecl CDataCache::GetFileSystemTypes(unsigned long & __ptr64,struct ifilesysteminfo * __ptr64 * __ptr64) __ptr64
?GetFileSystemTypes@CDataCache@@QEAAXAEAKPEAPEAUifilesysteminfo@@@Z
; public: void __cdecl CTaskData::GetFileSystemTypes(unsigned long & __ptr64,struct ifilesysteminfo * __ptr64 * __ptr64) __ptr64
?GetFileSystemTypes@CTaskData@@QEAAXAEAKPEAPEAUifilesysteminfo@@@Z
; public: int __cdecl CDMSnapin::GetFilterToggle(void) __ptr64
?GetFilterToggle@CDMSnapin@@QEAAHXZ
; public: long __cdecl CDMNodeObj::GetFlags(void) __ptr64
?GetFlags@CDMNodeObj@@QEAAJXZ
; public: short __cdecl CDMNodeObj::GetIVolumeClientVersion(void) __ptr64
?GetIVolumeClientVersion@CDMNodeObj@@QEAAFXZ
; public: short __cdecl CTaskData::GetIVolumeClientVersion(void) __ptr64
?GetIVolumeClientVersion@CTaskData@@QEAAFXZ
; public: unsigned int __cdecl CDMNodeObj::GetIconId(int) __ptr64
?GetIconId@CDMNodeObj@@QEAAIH@Z
; public: int __cdecl CDMNodeObj::GetImageNum(void) __ptr64
?GetImageNum@CDMNodeObj@@QEAAHXZ
; public: __int64 __cdecl CDataCache::GetLastKnownState(__int64) __ptr64
?GetLastKnownState@CDataCache@@QEAA_J_J@Z
; public: enum _LAYOUT_TYPES  __cdecl CDMNodeObj::GetLayoutType(void) __ptr64
?GetLayoutType@CDMNodeObj@@QEAA?AW4_LAYOUT_TYPES@@XZ
; public: __int64 __cdecl CDMNodeObj::GetLdmObjectId(void) __ptr64
?GetLdmObjectId@CDMNodeObj@@QEAA_JXZ
; public: int __cdecl CDMSnapin::GetListBehavior(void) __ptr64
?GetListBehavior@CDMSnapin@@QEAAHXZ
; public: unsigned long __cdecl CDMNodeObj::GetLogicalDriveCount(void) __ptr64
?GetLogicalDriveCount@CDMNodeObj@@QEAAKXZ
; public: void __cdecl CDMNodeObj::GetLongName(class CString & __ptr64,int) __ptr64
?GetLongName@CDMNodeObj@@QEAAXAEAVCString@@H@Z
; public: struct HWND__ * __ptr64 __cdecl CDMComponentData::GetMMCWindow(void) __ptr64
?GetMMCWindow@CDMComponentData@@QEAAPEAUHWND__@@XZ
; public: void __cdecl CDMNodeObj::GetMaxAdjustedFreeSize(__int64 & __ptr64) __ptr64
?GetMaxAdjustedFreeSize@CDMNodeObj@@QEAAXAEA_J@Z
; public: unsigned long __cdecl CDMNodeObj::GetMaxPartitionCount(void) __ptr64
?GetMaxPartitionCount@CDMNodeObj@@QEAAKXZ
; protected: void __cdecl CDataCache::GetMinMaxPartitionSizes(__int64,unsigned long & __ptr64,unsigned long & __ptr64) __ptr64
?GetMinMaxPartitionSizes@CDataCache@@IEAAX_JAEAK1@Z
; public: void __cdecl CTaskData::GetMinMaxPartitionSizes(__int64,unsigned long & __ptr64,unsigned long & __ptr64) __ptr64
?GetMinMaxPartitionSizes@CTaskData@@QEAAX_JAEAK1@Z
; public: void __cdecl CDMNodeObj::GetName(class CString & __ptr64) __ptr64
?GetName@CDMNodeObj@@QEAAXAEAVCString@@@Z
; public: unsigned long __cdecl CDMNodeObj::GetNumMembers(void) __ptr64
?GetNumMembers@CDMNodeObj@@QEAAKXZ
; public: unsigned long __cdecl CDMNodeObj::GetNumRegions(void) __ptr64
?GetNumRegions@CDMNodeObj@@QEAAKXZ
; public: void __cdecl CDMNodeObj::GetObjectId(__int64 & __ptr64) __ptr64
?GetObjectId@CDMNodeObj@@QEAAXAEA_J@Z
; public: class CWnd * __ptr64 __cdecl CTaskData::GetOcxFrameCWndPtr(void) __ptr64
?GetOcxFrameCWndPtr@CTaskData@@QEAAPEAVCWnd@@XZ
; public: class CDMNodeObj * __ptr64 __cdecl CDMNodeObj::GetParentDiskPtr(void) __ptr64
?GetParentDiskPtr@CDMNodeObj@@QEAAPEAV1@XZ
; public: class CDMNodeObj * __ptr64 __cdecl CDMNodeObj::GetParentVolumePtr(void) __ptr64
?GetParentVolumePtr@CDMNodeObj@@QEAAPEAV1@XZ
; public: enum _PARTITIONSTYLE  __cdecl CDMNodeObj::GetPartitionStyle(void) __ptr64
?GetPartitionStyle@CDMNodeObj@@QEAA?AW4_PARTITIONSTYLE@@XZ
; public: void __cdecl CDMNodeObj::GetPartitionStyleString(class CString & __ptr64,int) __ptr64
?GetPartitionStyleString@CDMNodeObj@@QEAAXAEAVCString@@H@Z
; void __cdecl GetPartitionStyleStringHelper(enum _PARTITIONSTYLE,class CString & __ptr64,int,unsigned long,unsigned long,int)
?GetPartitionStyleStringHelper@@YAXW4_PARTITIONSTYLE@@AEAVCString@@HKKH@Z
; public: int __cdecl CDMNodeObj::GetPatternRef(void) __ptr64
?GetPatternRef@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::GetPort(void) __ptr64
?GetPort@CDMNodeObj@@QEAAHXZ
; public: unsigned long __cdecl CDMNodeObj::GetPrimaryPartitionCount(void) __ptr64
?GetPrimaryPartitionCount@CDMNodeObj@@QEAAKXZ
GetPropertyPageData
; public: void __cdecl CTaskData::GetRegionColorStructPtr(struct _REGION_COLORS * __ptr64 * __ptr64,int & __ptr64) __ptr64
?GetRegionColorStructPtr@CTaskData@@QEAAXPEAPEAU_REGION_COLORS@@AEAH@Z
; public: int __cdecl CDMNodeObj::GetRegionInfo(struct regioninfoex & __ptr64) __ptr64
?GetRegionInfo@CDMNodeObj@@QEAAHAEAUregioninfoex@@@Z
; public: int __cdecl CDMSnapin::GetRegionScaling(void) __ptr64
?GetRegionScaling@CDMSnapin@@QEAAHXZ
; public: int __cdecl CDMNodeObj::GetResultStringArray(class CStringArray & __ptr64) __ptr64
?GetResultStringArray@CDMNodeObj@@QEAAHAEAVCStringArray@@@Z
; public: class CString & __ptr64 __cdecl CServerRequests::GetRevertDiskName(void) __ptr64
?GetRevertDiskName@CServerRequests@@QEAAAEAVCString@@XZ
; public: class CString  __cdecl CDataCache::GetServerName(void) __ptr64
?GetServerName@CDataCache@@QEAA?AVCString@@XZ
; public: class CString  __cdecl CTaskData::GetServerName(void) __ptr64
?GetServerName@CTaskData@@QEAA?AVCString@@XZ
; public: void __cdecl CDMNodeObj::GetShortName(class CString & __ptr64) __ptr64
?GetShortName@CDMNodeObj@@QEAAXAEAVCString@@@Z
; public: void __cdecl CDMNodeObj::GetSize(long & __ptr64) __ptr64
?GetSize@CDMNodeObj@@QEAAXAEAJ@Z
; public: void __cdecl CDMNodeObj::GetSize(__int64 & __ptr64,int) __ptr64
?GetSize@CDMNodeObj@@QEAAXAEA_JH@Z
; public: void __cdecl CDMNodeObj::GetSizeString(class CString & __ptr64) __ptr64
?GetSizeString@CDMNodeObj@@QEAAXAEAVCString@@@Z
; public: __int64 __cdecl CDMNodeObj::GetStartOffset(void) __ptr64
?GetStartOffset@CDMNodeObj@@QEAA_JXZ
; public: int __cdecl CDMNodeObj::GetStatus(void) __ptr64
?GetStatus@CDMNodeObj@@QEAAHXZ
; public: enum _STORAGE_TYPES  __cdecl CDMNodeObj::GetStorageType(void) __ptr64
?GetStorageType@CDMNodeObj@@QEAA?AW4_STORAGE_TYPES@@XZ
; public: void __cdecl CDMNodeObj::GetStorageType(class CString & __ptr64,int) __ptr64
?GetStorageType@CDMNodeObj@@QEAAXAEAVCString@@H@Z
; class CString  __cdecl GetStringFromRc(unsigned long)
?GetStringFromRc@@YA?AVCString@@K@Z
; public: int __cdecl CDMSnapin::GetTopViewStyle(void) __ptr64
?GetTopViewStyle@CDMSnapin@@QEAAHXZ
; public: unsigned long __cdecl CTaskData::GetUIState(void) __ptr64
?GetUIState@CTaskData@@QEAAKXZ
; public: __int64 __cdecl CDMNodeObj::GetUnallocSpace(int) __ptr64
?GetUnallocSpace@CDMNodeObj@@QEAA_JH@Z
; protected: void __cdecl CDataCache::GetVolumeCookies(unsigned long & __ptr64,__int64 * __ptr64 * __ptr64) __ptr64
?GetVolumeCookies@CDataCache@@IEAAXAEAKPEAPEA_J@Z
; public: unsigned long __cdecl CDataCache::GetVolumeCount(void) __ptr64
?GetVolumeCount@CDataCache@@QEAAKXZ
; public: int __cdecl CDMNodeObj::GetVolumeInfo(struct volumeinfo & __ptr64) __ptr64
?GetVolumeInfo@CDMNodeObj@@QEAAHAEAUvolumeinfo@@@Z
; public: int __cdecl CDMNodeObj::GetVolumeStatus(class CString & __ptr64) __ptr64
?GetVolumeStatus@CDMNodeObj@@QEAAHAEAVCString@@@Z
; public: int __cdecl CDMSnapin::GetWaitCursor(void) __ptr64
?GetWaitCursor@CDMSnapin@@QEAAHXZ
; public: int __cdecl CDMNodeObj::HasExtendedPartition(void) __ptr64
?HasExtendedPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDataCache::HasNTFSwithDriveLetter(void) __ptr64
?HasNTFSwithDriveLetter@CDataCache@@QEAAHXZ
; public: int __cdecl CTaskData::HasNTFSwithDriveLetter(void) __ptr64
?HasNTFSwithDriveLetter@CTaskData@@QEAAHXZ
; public: int __cdecl CDataCache::HasVMDisk(void) __ptr64
?HasVMDisk@CDataCache@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsActive(void) __ptr64
?IsActive@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDataCache::IsAlpha(void) __ptr64
?IsAlpha@CDataCache@@QEAAHXZ
; public: int __cdecl CTaskData::IsAlpha(void) __ptr64
?IsAlpha@CTaskData@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsCurrBootVolume(void) __ptr64
?IsCurrBootVolume@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsCurrSystemVolume(void) __ptr64
?IsCurrSystemVolume@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsDiskEmpty(void) __ptr64
?IsDiskEmpty@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDataCache::IsDynamic1394(void) __ptr64
?IsDynamic1394@CDataCache@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsEECoveredGPTDisk(void) __ptr64
?IsEECoveredGPTDisk@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsESPPartition(void) __ptr64
?IsESPPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDataCache::IsEfi(void) __ptr64
?IsEfi@CDataCache@@QEAAHXZ
; public: int __cdecl CTaskData::IsEfi(void) __ptr64
?IsEfi@CTaskData@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsFTVolume(void) __ptr64
?IsFTVolume@CDMNodeObj@@QEAAHXZ
IsFailPopupMgmtSupported
; public: int __cdecl CDMNodeObj::IsFakeVolume(void) __ptr64
?IsFakeVolume@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsFirstFreeRegion(void) __ptr64
?IsFirstFreeRegion@CDMNodeObj@@QEAAHXZ
; int __cdecl IsHiddenRegion(struct regioninfoex & __ptr64)
?IsHiddenRegion@@YAHAEAUregioninfoex@@@Z
; public: int __cdecl CDMNodeObj::IsHiddenRegion(void) __ptr64
?IsHiddenRegion@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsInFlux(void) __ptr64
?IsInFlux@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CTaskData::IsLocalMachine(void) __ptr64
?IsLocalMachine@CTaskData@@QEAAHXZ
; int __cdecl IsMbrEEPartition(struct regioninfoex & __ptr64)
?IsMbrEEPartition@@YAHAEAUregioninfoex@@@Z
; public: int __cdecl CDMNodeObj::IsMbrEEPartition(void) __ptr64
?IsMbrEEPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsMember(class CDMNodeObj * __ptr64) __ptr64
?IsMember@CDMNodeObj@@QEAAHPEAV1@@Z
; public: int __cdecl CDMNodeObj::IsNEC_98Disk(void) __ptr64
?IsNEC_98Disk@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDataCache::IsNEC_98Server(void) __ptr64
?IsNEC_98Server@CDataCache@@QEAAHXZ
; public: int __cdecl CTaskData::IsNEC_98Server(void) __ptr64
?IsNEC_98Server@CTaskData@@QEAAHXZ
; public: int __cdecl CTaskData::IsNTServer(void) __ptr64
?IsNTServer@CTaskData@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsOemPartition(void) __ptr64
?IsOemPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDataCache::IsPersonalOrLapTopServer(void) __ptr64
?IsPersonalOrLapTopServer@CDataCache@@QEAAHXZ
IsRequestPending
; public: int __cdecl CDMNodeObj::IsRevertable(void) __ptr64
?IsRevertable@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CTaskData::IsSecureSystemPartition(void) __ptr64
?IsSecureSystemPartition@CTaskData@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsUnknownPartition(void) __ptr64
?IsUnknownPartition@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CDMNodeObj::IsUpgradeable(void) __ptr64
?IsUpgradeable@CDMNodeObj@@QEAAHXZ
; public: int __cdecl CTaskData::IsWolfpack(void) __ptr64
?IsWolfpack@CTaskData@@QEAAHXZ
; public: void __cdecl CDMComponentData::LoadData(long) __ptr64
?LoadData@CDMComponentData@@QEAAXJ@Z
LoadPropertyPageData
; void __cdecl ParseDeviceName(int * __ptr64,int * __ptr64,int * __ptr64,unsigned short * __ptr64)
?ParseDeviceName@@YAXPEAH00PEAG@Z
; public: void __cdecl CContextMenu::PopUpInit(class CDMNodeObj * __ptr64,int & __ptr64,int) __ptr64
?PopUpInit@CContextMenu@@QEAAXPEAVCDMNodeObj@@AEAHH@Z
; public: void __cdecl CDataCache::PopulateDiskGroupData(struct DISK_GROUP_DATA * __ptr64) __ptr64
?PopulateDiskGroupData@CDataCache@@QEAAXPEAUDISK_GROUP_DATA@@@Z
; public: void __cdecl CDataCache::PopulateEncapsulateData(struct ENCAPSULATE_DATA * __ptr64) __ptr64
?PopulateEncapsulateData@CDataCache@@QEAAXPEAUENCAPSULATE_DATA@@@Z
; public: void __cdecl CDMNodeObj::RecalculateSpace(void) __ptr64
?RecalculateSpace@CDMNodeObj@@QEAAXXZ
; public: void __cdecl CDMComponentData::RefreshDiskView(void) __ptr64
?RefreshDiskView@CDMComponentData@@QEAAXXZ
; public: void __cdecl CContextMenu::RefreshFileSys(__int64) __ptr64
?RefreshFileSys@CContextMenu@@QEAAX_J@Z
; public: void __cdecl CDMComponentData::ReloadData(void) __ptr64
?ReloadData@CDMComponentData@@QEAAXXZ
; __int64 __cdecl RoundUpToMB(__int64)
?RoundUpToMB@@YA_J_J@Z
; public: void __cdecl CDMSnapin::SetDescriptionBarText(void) __ptr64
?SetDescriptionBarText@CDMSnapin@@QEAAXXZ
; public: void __cdecl CDataCache::SetDiskList(struct diskinfoex * __ptr64,unsigned long) __ptr64
?SetDiskList@CDataCache@@QEAAXPEAUdiskinfoex@@K@Z
; public: void __cdecl CDataCache::SetDriveLetterInUse(unsigned short,int) __ptr64
?SetDriveLetterInUse@CDataCache@@QEAAXGH@Z
; public: void __cdecl CDMNodeObj::SetFSId(__int64) __ptr64
?SetFSId@CDMNodeObj@@QEAAX_J@Z
; public: void __cdecl CDMComponentData::SetOcxViewType(void) __ptr64
?SetOcxViewType@CDMComponentData@@QEAAXXZ
; public: void __cdecl CDMComponentData::SetOcxViewTypeForce(void) __ptr64
?SetOcxViewTypeForce@CDMComponentData@@QEAAXXZ
; public: void __cdecl CTaskData::SetUIState(unsigned long) __ptr64
?SetUIState@CTaskData@@QEAAXK@Z
; public: void __cdecl CDataCache::SetVolumeList(struct volumeinfo * __ptr64,unsigned long) __ptr64
?SetVolumeList@CDataCache@@QEAAXPEAUvolumeinfo@@K@Z
; public: long __cdecl CContextMenu::ShowContextMenu(class CWnd * __ptr64,long,long,__int64) __ptr64
?ShowContextMenu@CContextMenu@@QEAAJPEAVCWnd@@JJ_J@Z
; public: int __cdecl CDataCache::SupportGpt(void) __ptr64
?SupportGpt@CDataCache@@QEAAHXZ
; public: int __cdecl CTaskData::SupportGpt(void) __ptr64
?SupportGpt@CTaskData@@QEAAHXZ
; public: void __cdecl CDMComponentData::UIStateChange(unsigned long) __ptr64
?UIStateChange@CDMComponentData@@QEAAXK@Z
; public: void __cdecl CDMSnapin::UpDateConsoleView(void) __ptr64
?UpDateConsoleView@CDMSnapin@@QEAAXXZ
; public: int __cdecl CDMNodeObj::VolumeContainsActiveRegion(void) __ptr64
?VolumeContainsActiveRegion@CDMNodeObj@@QEAAHXZ
; int __cdecl namecmp(unsigned short const * __ptr64,unsigned short const * __ptr64)
?namecmp@@YAHPEBG0@Z
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
