; 
; 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
