; 
; Exports of file dmivcitf.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY dmivcitf.dll
EXPORTS
; public: void __cdecl CDataCache::AddLDMObjMapEntry(struct _LDM_OBJ_MAP_ENTRY * __ptr64) __ptr64
?AddLDMObjMapEntry@CDataCache@@QEAAXPEAU_LDM_OBJ_MAP_ENTRY@@@Z
CreateDataCacheX
CreateServerRequestsX
; public: int __cdecl CDMSnapin::GetBottomViewStyle(void) __ptr64
?GetBottomViewStyle@CDMSnapin@@QEAAHXZ
; public: unsigned long __cdecl CDataCache::GetDiskCount(void) __ptr64
?GetDiskCount@CDataCache@@QEAAKXZ
; public: int __cdecl CDMSnapin::GetDiskScaling(void) __ptr64
?GetDiskScaling@CDMSnapin@@QEAAHXZ
; public: int __cdecl CDMSnapin::GetFilterToggle(void) __ptr64
?GetFilterToggle@CDMSnapin@@QEAAHXZ
; 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::GetNumMembers(void) __ptr64
?GetNumMembers@CDMNodeObj@@QEAAKXZ
; public: class CWnd * __ptr64 __cdecl CTaskData::GetOcxFrameCWndPtr(void) __ptr64
?GetOcxFrameCWndPtr@CTaskData@@QEAAPEAVCWnd@@XZ
; public: void __cdecl CTaskData::GetRegionColorStructPtr(struct _REGION_COLORS * __ptr64 * __ptr64,int & __ptr64) __ptr64
?GetRegionColorStructPtr@CTaskData@@QEAAXPEAPEAU_REGION_COLORS@@AEAH@Z
; public: int __cdecl CDMSnapin::GetRegionScaling(void) __ptr64
?GetRegionScaling@CDMSnapin@@QEAAHXZ
; public: class CString  __cdecl CDataCache::GetServerName(void) __ptr64
?GetServerName@CDataCache@@QEAA?AVCString@@XZ
; public: int __cdecl CDMSnapin::GetTopViewStyle(void) __ptr64
?GetTopViewStyle@CDMSnapin@@QEAAHXZ
; public: unsigned long __cdecl CDataCache::GetVolumeCount(void) __ptr64
?GetVolumeCount@CDataCache@@QEAAKXZ
; public: int __cdecl CDMSnapin::GetWaitCursor(void) __ptr64
?GetWaitCursor@CDMSnapin@@QEAAHXZ
HrGetErrorData
LoadPropertyPageData
