; 
; Exports of file MSDTCUIU.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY MSDTCUIU.dll
EXPORTS
InitDACDLL
TermDACDLL
TermDACInstance
DoDACPropSheet
DoDACAdvanced
GetDACStatsMinMaxInfo
; public: __cdecl CDac::CDac(class CDac const & __ptr64) __ptr64
??0CDac@@QEAA@AEBV0@@Z
; public: __cdecl CDac::CDac(unsigned long) __ptr64
??0CDac@@QEAA@K@Z
; public: __cdecl CDac::~CDac(void) __ptr64
??1CDac@@QEAA@XZ
; public: class CDac & __ptr64 __cdecl CDac::operator=(class CDac const & __ptr64) __ptr64
??4CDac@@QEAAAEAV0@AEBV0@@Z
; public: int __cdecl CDac::Connect(struct HWND__ * __ptr64,struct INTServiceControl * __ptr64) __ptr64
?Connect@CDac@@QEAAHPEAUHWND__@@PEAUINTServiceControl@@@Z
; public: static long __cdecl CUicCore::Create(class CUicCore * __ptr64 * __ptr64)
?Create@CUicCore@@SAJPEAPEAV1@@Z
; public: class CDialog * __ptr64 __cdecl CDac::CreateAdvancedPropertySheet(class CWnd * __ptr64) __ptr64
?CreateAdvancedPropertySheet@CDac@@QEAAPEAVCDialog@@PEAVCWnd@@@Z
; public: int __cdecl CDac::ErrorMessage(unsigned long,unsigned int) __ptr64
?ErrorMessage@CDac@@QEAAHKI@Z
; public: unsigned long __cdecl CDac::GetAdminAccess(void) __ptr64
?GetAdminAccess@CDac@@QEAAKXZ
; public: char * __ptr64 __cdecl CDac::GetHostNameA(void) __ptr64
?GetHostNameA@CDac@@QEAAPEADXZ
; public: unsigned short * __ptr64 __cdecl CDac::GetHostNameW(void) __ptr64
?GetHostNameW@CDac@@QEAAPEAGXZ
; public: struct HWND__ * __ptr64 __cdecl CDac::GetOwnerHwnd(void) __ptr64
?GetOwnerHwnd@CDac@@QEAAPEAUHWND__@@XZ
; public: unsigned short * __ptr64 __cdecl CDac::GetVirtualHostName(void) __ptr64
?GetVirtualHostName@CDac@@QEAAPEAGXZ
; public: long __cdecl CDac::Init(unsigned short * __ptr64) __ptr64
?Init@CDac@@QEAAJPEAG@Z
; public: int __cdecl CDac::IsConnected(void) __ptr64
?IsConnected@CDac@@QEAAHXZ
; public: int __cdecl CDac::ProcessCommand(unsigned __int64,__int64) __ptr64
?ProcessCommand@CDac@@QEAAH_K_J@Z
; void __cdecl RegisterErrorSink(struct IDacErrorSink * __ptr64)
?RegisterErrorSink@@YAXPEAUIDacErrorSink@@@Z
RunDACExe
; public: long __cdecl CDac::ServiceRequest(unsigned long,void * __ptr64,unsigned long,bool) __ptr64
?ServiceRequest@CDac@@QEAAJKPEAXK_N@Z
; public: void __cdecl CDac::SetHostNameA(char * __ptr64) __ptr64
?SetHostNameA@CDac@@QEAAXPEAD@Z
; public: void __cdecl CDac::SetHostNameW(unsigned short * __ptr64) __ptr64
?SetHostNameW@CDac@@QEAAXPEAG@Z
; public: void __cdecl CDac::SetOwnerWnd(class CWnd * __ptr64) __ptr64
?SetOwnerWnd@CDac@@QEAAXPEAVCWnd@@@Z
; class CDac * __ptr64 __cdecl ValidateDACInstance(void * __ptr64 * __ptr64,unsigned short * __ptr64)
?ValidateDACInstance@@YAPEAVCDac@@PEAPEAXPEAG@Z
DllGetClassObject
DllGetDTCUIC
DllRegisterServer
DllUnregisterServer
DtcPerfClose
DtcPerfCollect
DtcPerfOpen
PerfDllRegisterServer
ShutDownUIC
