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