; 
; 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: __thiscall CDac::CDac(class CDac const &)
??0CDac@@QAE@ABV0@@Z
; public: __thiscall CDac::CDac(unsigned long)
??0CDac@@QAE@K@Z
; public: __thiscall CDac::~CDac(void)
??1CDac@@QAE@XZ
; public: class CDac & __thiscall CDac::operator=(class CDac const &)
??4CDac@@QAEAAV0@ABV0@@Z
; public: int __thiscall CDac::Connect(struct HWND__ *,struct INTServiceControl *)
?Connect@CDac@@QAEHPAUHWND__@@PAUINTServiceControl@@@Z
; public: static long __stdcall CUicCore::Create(class CUicCore * *)
?Create@CUicCore@@SGJPAPAV1@@Z
; public: class CDialog * __thiscall CDac::CreateAdvancedPropertySheet(class CWnd *)
?CreateAdvancedPropertySheet@CDac@@QAEPAVCDialog@@PAVCWnd@@@Z
; public: int __thiscall CDac::ErrorMessage(unsigned long,unsigned int)
?ErrorMessage@CDac@@QAEHKI@Z
; public: unsigned long __thiscall CDac::GetAdminAccess(void)
?GetAdminAccess@CDac@@QAEKXZ
; public: char * __thiscall CDac::GetHostNameA(void)
?GetHostNameA@CDac@@QAEPADXZ
; public: unsigned short * __thiscall CDac::GetHostNameW(void)
?GetHostNameW@CDac@@QAEPAGXZ
; public: struct HWND__ * __thiscall CDac::GetOwnerHwnd(void)
?GetOwnerHwnd@CDac@@QAEPAUHWND__@@XZ
; public: unsigned short * __thiscall CDac::GetVirtualHostName(void)
?GetVirtualHostName@CDac@@QAEPAGXZ
; public: long __thiscall CDac::Init(unsigned short *)
?Init@CDac@@QAEJPAG@Z
; public: int __thiscall CDac::IsConnected(void)
?IsConnected@CDac@@QAEHXZ
; public: int __thiscall CDac::ProcessCommand(unsigned int,long)
?ProcessCommand@CDac@@QAEHIJ@Z
; void __stdcall RegisterErrorSink(struct IDacErrorSink *)
?RegisterErrorSink@@YGXPAUIDacErrorSink@@@Z
RunDACExe
; public: long __thiscall CDac::ServiceRequest(unsigned long,void *,unsigned long,bool)
?ServiceRequest@CDac@@QAEJKPAXK_N@Z
; public: void __thiscall CDac::SetHostNameA(char *)
?SetHostNameA@CDac@@QAEXPAD@Z
; public: void __thiscall CDac::SetHostNameW(unsigned short *)
?SetHostNameW@CDac@@QAEXPAG@Z
; public: void __thiscall CDac::SetOwnerWnd(class CWnd *)
?SetOwnerWnd@CDac@@QAEXPAVCWnd@@@Z
; class CDac * __stdcall ValidateDACInstance(void * *,unsigned short *)
?ValidateDACInstance@@YGPAVCDac@@PAPAXPAG@Z
DllGetClassObject
DllGetDTCUIC
DllRegisterServer
DllUnregisterServer
DtcPerfClose
DtcPerfCollect
DtcPerfOpen
PerfDllRegisterServer
ShutDownUIC
