; 
; Exports of file MSDTCPRX.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY MSDTCPRX.dll
EXPORTS
DllGetDTCProxy
; public: __thiscall CSecurityDescriptor::CSecurityDescriptor(void)
??0CSecurityDescriptor@@QAE@XZ
; protected: __thiscall CService::CService(void)
??0CService@@IAE@XZ
; protected: __thiscall CServiceControlManager::CServiceControlManager(void)
??0CServiceControlManager@@IAE@XZ
; public: __thiscall CSecurityDescriptor::~CSecurityDescriptor(void)
??1CSecurityDescriptor@@QAE@XZ
; protected: __thiscall CService::~CService(void)
??1CService@@IAE@XZ
DTC_XaOpen
DTC_XaStart
DTC_XaEnd
DTC_XaPrepare
DTC_XaCommit
DTC_XaRollback
DTC_XaRecover
DTC_XaForget
DTC_XaComplete
DTC_XaClose
DTC_AxReg
DTC_AxUnReg
ax_reg
ax_unreg
ShutDownCM
DllGetDTCConnectionManager
DllGetDTCUtilObject
ContactToNameObject
SysPrepDtcReinstall
; protected: __thiscall CServiceControlManager::~CServiceControlManager(void)
??1CServiceControlManager@@IAE@XZ
; public: class CSecurityDescriptor & __thiscall CSecurityDescriptor::operator=(class CSecurityDescriptor const &)
??4CSecurityDescriptor@@QAEAAV0@ABV0@@Z
; public: class CService & __thiscall CService::operator=(class CService const &)
??4CService@@QAEAAV0@ABV0@@Z
; public: class CServiceControlManager & __thiscall CServiceControlManager::operator=(class CServiceControlManager const &)
??4CServiceControlManager@@QAEAAV0@ABV0@@Z
; public: unsigned long __thiscall CService::AddRef(void)
?AddRef@CService@@QAEKXZ
; public: unsigned long __thiscall CServiceControlManager::AddRef(void)
?AddRef@CServiceControlManager@@QAEKXZ
; public: long __thiscall CSecurityDescriptor::AddSid(unsigned short *,unsigned long,unsigned long)
?AddSid@CSecurityDescriptor@@QAEJPAGKK@Z
; public: long __thiscall CSecurityDescriptor::AddSid(void *,unsigned long,unsigned long)
?AddSid@CSecurityDescriptor@@QAEJPAXKK@Z
; protected: long __thiscall CSecurityDescriptor::Alloc(unsigned long)
?Alloc@CSecurityDescriptor@@IAEJK@Z
; long __stdcall ApplyAccountSettings(int,unsigned short *,unsigned long,unsigned short *,unsigned short *,unsigned short *,int)
?ApplyAccountSettings@@YGJHPAGK000H@Z
; long __stdcall ApplyNamedSecurityChange(unsigned short *,enum _SE_OBJECT_TYPE,void *,void *,unsigned long)
?ApplyNamedSecurityChange@@YGJPAGW4_SE_OBJECT_TYPE@@PAX2K@Z
; long __stdcall CheckForDCPromotionDemotion(unsigned short *)
?CheckForDCPromotionDemotion@@YGJPAG@Z
; public: long __thiscall CSecurityDescriptor::ClearAcl(void)
?ClearAcl@CSecurityDescriptor@@QAEJXZ
; public: long __thiscall CSecurityDescriptor::ClearInMemoryAcl(void)
?ClearInMemoryAcl@CSecurityDescriptor@@QAEJXZ
; void __stdcall CloseNetpEventLogHandle(void)
?CloseNetpEventLogHandle@@YGXXZ
; public: static long __stdcall CConnectionManager::Create(class CConnectionManager * *)
?Create@CConnectionManager@@SGJPAPAV1@@Z
; public: static long __stdcall CNameService::Create(class CNameService * *)
?Create@CNameService@@SGJPAPAV1@@Z
; public: static long __stdcall CService::Create(class CService * *,unsigned short *,class CServiceControlManager *,unsigned long,unsigned short *)
?Create@CService@@SGJPAPAV1@PAGPAVCServiceControlManager@@K1@Z
; public: static long __stdcall CServiceControlManager::Create(class CServiceControlManager * *,unsigned long,unsigned short *,unsigned short *)
?Create@CServiceControlManager@@SGJPAPAV1@KPAG1@Z
; void __stdcall CreateASRKey(void)
?CreateASRKey@@YGXXZ
; public: static long __stdcall CTmProxyCore::CreateInstance(class CTmProxyCore * *,struct IUnknown *)
?CreateInstance@CTmProxyCore@@SGJPAPAV1@PAUIUnknown@@@Z
; long __stdcall CreateNewContact(struct IProperties * *)
?CreateNewContact@@YGJPAPAUIProperties@@@Z
; long __stdcall CreateOrOpenMutexW(void * *,unsigned short const *,int)
?CreateOrOpenMutexW@@YGJPAPAXPBGH@Z
; void __stdcall DeleteExistingContacts(unsigned short *,struct IContactPool *,unsigned short *)
?DeleteExistingContacts@@YGXPAGPAUIContactPool@@0@Z
; int __stdcall DllGetDTCAdmin(struct _GUID const &,struct _GUID const &,void * *)
?DllGetDTCAdmin@@YGHABU_GUID@@0PAPAX@Z
; long __stdcall DtcWriteToEventLogger(unsigned long,unsigned long,unsigned long,unsigned long,void *,char *)
?DtcWriteToEventLogger@@YGJKKKKPAXPAD@Z
; long __stdcall DtcWriteToEventLoggerEx(unsigned short,unsigned short,unsigned long,void *,unsigned short,unsigned long,char const * *,void *)
?DtcWriteToEventLoggerEx@@YGJGGKPAXGKPAPBD0@Z
; long __stdcall DtcWriteToEventLoggerExUnFiltered(unsigned short,unsigned short,unsigned long,void *,unsigned short,unsigned long,char const * *,void *)
?DtcWriteToEventLoggerExUnFiltered@@YGJGGKPAXGKPAPBD0@Z
; long __stdcall DtcWriteToEventLoggerExUnFilteredA(unsigned short,unsigned short,unsigned long,void *,unsigned short,unsigned long,char const * *,void *)
?DtcWriteToEventLoggerExUnFilteredA@@YGJGGKPAXGKPAPBD0@Z
; long __stdcall EraseDtcClient(unsigned short *)
?EraseDtcClient@@YGJPAG@Z
; public: long __thiscall CService::GetAccount(unsigned short *,unsigned long *)
?GetAccount@CService@@QAEJPAGPAK@Z
; long __stdcall GetAccountSid(unsigned short *,unsigned short *,void * *)
?GetAccountSid@@YGJPAG0PAPAX@Z
; public: long __thiscall CSecurityDescriptor::GetControl(unsigned short *)
?GetControl@CSecurityDescriptor@@QAEJPAG@Z
; unsigned short * __stdcall GetDefaultLogPath(void)
?GetDefaultLogPath@@YGPAGXZ
; unsigned long __stdcall GetDefaultLogSize(void)
?GetDefaultLogSize@@YGKXZ
; long __stdcall GetDefaultSecurityConfigurationOptions(unsigned short *,unsigned long *,unsigned long *)
?GetDefaultSecurityConfigurationOptions@@YGJPAGPAK1@Z
; char * __cdecl GetDefaultServiceNameA(void)
?GetDefaultServiceNameA@@YAPADXZ
; unsigned short * __cdecl GetDefaultServiceNameW(void)
?GetDefaultServiceNameW@@YAPAGXZ
; unsigned short * __stdcall GetDefaultServicePath(void)
?GetDefaultServicePath@@YGPAGXZ
; int __stdcall GetDtcCIDProps(struct _LOG_PROPERTIES &,struct _DAC_PROPERTIES &)
?GetDtcCIDProps@@YGHAAU_LOG_PROPERTIES@@AAU_DAC_PROPERTIES@@@Z
; int __stdcall GetDtcLogPath(unsigned long,unsigned short *)
?GetDtcLogPath@@YGHKPAG@Z
; int __stdcall GetDtcPath(unsigned long,unsigned short *)
?GetDtcPath@@YGHKPAG@Z
; long __stdcall GetDtcRpcSecurityLevel(unsigned short *,enum _DTC_SECURITY_LEVEL *,int)
?GetDtcRpcSecurityLevel@@YGJPAGPAW4_DTC_SECURITY_LEVEL@@H@Z
; unsigned short * __stdcall GetEventLogSource(void)
?GetEventLogSource@@YGPAGXZ
; public: long __thiscall CService::GetHandle(struct SC_HANDLE__ * &)
?GetHandle@CService@@QAEJAAPAUSC_HANDLE__@@@Z
; public: long __thiscall CServiceControlManager::GetHandle(struct SC_HANDLE__ * &)
?GetHandle@CServiceControlManager@@QAEJAAPAUSC_HANDLE__@@@Z
; long __stdcall GetLastKnownDomainControllerState(unsigned short *,unsigned long *)
?GetLastKnownDomainControllerState@@YGJPAGPAK@Z
; long __stdcall GetLocalDtcClusteringVersion(unsigned long *)
?GetLocalDtcClusteringVersion@@YGJPAK@Z
; long __stdcall GetMsDtcSPN(unsigned short *,unsigned short * *)
?GetMsDtcSPN@@YGJPAGPAPAG@Z
; public: long __thiscall CSecurityDescriptor::GetNamedInfo(unsigned short *,enum _SE_OBJECT_TYPE)
?GetNamedInfo@CSecurityDescriptor@@QAEJPAGW4_SE_OBJECT_TYPE@@@Z
; unsigned short * __stdcall GetOldDefaultLogPath(void)
?GetOldDefaultLogPath@@YGPAGXZ
; long __stdcall GetSecurityConfigurationOptions(unsigned short *,unsigned long *,unsigned long *,int)
?GetSecurityConfigurationOptions@@YGJPAGPAK1H@Z
; public: long __thiscall CSecurityDescriptor::GetSecurityDescriptor(void * *)
?GetSecurityDescriptor@CSecurityDescriptor@@QAEJPAPAX@Z
; long __stdcall GetSecurityRegValueNonClusterW(unsigned short *,unsigned short const *,unsigned char *,unsigned long *)
?GetSecurityRegValueNonClusterW@@YGJPAGPBGPAEPAK@Z
; long __stdcall GetSecurityRegValueW(unsigned short *,unsigned short const *,unsigned char *,unsigned long *,int)
?GetSecurityRegValueW@@YGJPAGPBGPAEPAKH@Z
; long __stdcall GetSharedDtcClusteringVersion(unsigned long *)
?GetSharedDtcClusteringVersion@@YGJPAK@Z
; long __cdecl GetTmContactA(char *,char *,struct IProperties * *)
?GetTmContactA@@YAJPAD0PAPAUIProperties@@@Z
; long __cdecl GetTmContactW(unsigned short *,unsigned short *,struct IProperties * *)
?GetTmContactW@@YAJPAG0PAPAUIProperties@@@Z
; long __cdecl GetTmUIContactA(char *,char *,struct IProperties * *)
?GetTmUIContactA@@YAJPAD0PAPAUIProperties@@@Z
; long __cdecl GetTmUIContactW(unsigned short *,unsigned short *,struct IProperties * *)
?GetTmUIContactW@@YAJPAG0PAPAUIProperties@@@Z
; long __stdcall GetXATmSecurityKey(unsigned short *,unsigned short *,unsigned long *)
?GetXATmSecurityKey@@YGJPAG0PAK@Z
; long __stdcall InstallDtc(unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned long,unsigned short *,int)
?InstallDtc@@YGJPAG0000K0H@Z
; long __stdcall InstallDtcClient(unsigned short *,unsigned long,unsigned long)
?InstallDtcClient@@YGJPAGKK@Z
; long __stdcall InstallTipGw(unsigned short *)
?InstallTipGw@@YGJPAG@Z
; long __stdcall InstallXaTm(unsigned short *)
?InstallXaTm@@YGJPAG@Z
; protected: long __thiscall CService::InternalInit(unsigned short *,class CServiceControlManager *,unsigned long,unsigned short *)
?InternalInit@CService@@IAEJPAGPAVCServiceControlManager@@K0@Z
; protected: long __thiscall CServiceControlManager::InternalInit(unsigned long,unsigned short *,unsigned short *)
?InternalInit@CServiceControlManager@@IAEJKPAG0@Z
; int __stdcall IsNtVersion5OrMore(void)
?IsNtVersion5OrMore@@YGHXZ
; long __stdcall JoinDtc(void)
?JoinDtc@@YGJXZ
; long __stdcall JoinDtcEx(unsigned short *)
?JoinDtcEx@@YGJPAG@Z
; long __stdcall LookupSpecialAccount(unsigned short *,struct _SPECIAL_ACCOUNT_ * *)
?LookupSpecialAccount@@YGJPAGPAPAU_SPECIAL_ACCOUNT_@@@Z
; protected: long __thiscall CSecurityDescriptor::MakeAbsolute(void)
?MakeAbsolute@CSecurityDescriptor@@IAEJXZ
; long __stdcall MirrorXaTmSecurityKey(unsigned short *)
?MirrorXaTmSecurityKey@@YGJPAG@Z
; long __stdcall MsDtcSPNFree(unsigned short * *)
?MsDtcSPNFree@@YGJPAPAG@Z
; public: long __thiscall CServiceControlManager::OpenServiceA(class CService * *,unsigned short *,unsigned long)
?OpenServiceA@CServiceControlManager@@QAEJPAPAVCService@@PAGK@Z
; long __stdcall PopulateLocalRegistry(void)
?PopulateLocalRegistry@@YGJXZ
; long __stdcall PopulateSharedClusterRegistryWithContacts(void)
?PopulateSharedClusterRegistryWithContacts@@YGJXZ
; long __stdcall PopulateSharedClusterRegistryWithLogInfo(void)
?PopulateSharedClusterRegistryWithLogInfo@@YGJXZ
; public: long __thiscall CSecurityDescriptor::QueryServiceObjectSecurity(struct SC_HANDLE__ *,unsigned long)
?QueryServiceObjectSecurity@CSecurityDescriptor@@QAEJPAUSC_HANDLE__@@K@Z
; public: unsigned long __thiscall CService::Release(void)
?Release@CService@@QAEKXZ
; public: unsigned long __thiscall CServiceControlManager::Release(void)
?Release@CServiceControlManager@@QAEKXZ
; long __stdcall RemoveDtc(unsigned short *,unsigned short *,unsigned short *)
?RemoveDtc@@YGJPAG00@Z
; public: long __thiscall CSecurityDescriptor::RemoveSid(unsigned short *)
?RemoveSid@CSecurityDescriptor@@QAEJPAG@Z
; public: long __thiscall CSecurityDescriptor::RemoveSid(void *)
?RemoveSid@CSecurityDescriptor@@QAEJPAX@Z
; protected: void __thiscall CSecurityDescriptor::Reset(void)
?Reset@CSecurityDescriptor@@IAEXXZ
; long __stdcall RidToSid(unsigned long,void * *)
?RidToSid@@YGJKPAPAX@Z
; public: long __thiscall CService::SetAccount(unsigned short *,unsigned short *)
?SetAccount@CService@@QAEJPAG0@Z
; long __stdcall SetAccountInfoInRegistryW(unsigned short *)
?SetAccountInfoInRegistryW@@YGJPAG@Z
; public: long __thiscall CSecurityDescriptor::SetControl(unsigned short,unsigned short)
?SetControl@CSecurityDescriptor@@QAEJGG@Z
; long __stdcall SetDomainControllerState(unsigned short *)
?SetDomainControllerState@@YGJPAG@Z
; int __stdcall SetDtcCIDProps(struct _LOG_PROPERTIES &,struct _DAC_PROPERTIES &)
?SetDtcCIDProps@@YGHAAU_LOG_PROPERTIES@@AAU_DAC_PROPERTIES@@@Z
; long __stdcall SetDtcClient(unsigned short *,char *,unsigned short *)
?SetDtcClient@@YGJPAGPAD0@Z
; long __stdcall SetDtcRpcSecurityLevel(unsigned short *,enum _DTC_SECURITY_LEVEL,int)
?SetDtcRpcSecurityLevel@@YGJPAGW4_DTC_SECURITY_LEVEL@@H@Z
; long __stdcall SetDtcServerProtocol(char *,char *)
?SetDtcServerProtocol@@YGJPAD0@Z
; void __stdcall SetEventLogSourceToMsdtcCore(void)
?SetEventLogSourceToMsdtcCore@@YGXXZ
; public: long __thiscall CSecurityDescriptor::SetNamedInfo(unsigned short *,enum _SE_OBJECT_TYPE,unsigned long)
?SetNamedInfo@CSecurityDescriptor@@QAEJPAGW4_SE_OBJECT_TYPE@@K@Z
; protected: long __thiscall CSecurityDescriptor::SetNewAcl(struct _ACL *,unsigned long,int,int)
?SetNewAcl@CSecurityDescriptor@@IAEJPAU_ACL@@KHH@Z
; public: long __thiscall CSecurityDescriptor::SetOwner(unsigned short *,int)
?SetOwner@CSecurityDescriptor@@QAEJPAGH@Z
; public: long __thiscall CSecurityDescriptor::SetOwner(void *,int)
?SetOwner@CSecurityDescriptor@@QAEJPAXH@Z
; long __stdcall SetSecurityConfigurationOptions(unsigned short *,unsigned long,unsigned long)
?SetSecurityConfigurationOptions@@YGJPAGKK@Z
; long __stdcall SetSecurityRegValueNonClusterW(unsigned short *,unsigned short const *,unsigned long,unsigned char *,unsigned long)
?SetSecurityRegValueNonClusterW@@YGJPAGPBGKPAEK@Z
; long __stdcall SetSecurityRegValueW(unsigned short *,unsigned short const *,unsigned long,unsigned char *,unsigned long)
?SetSecurityRegValueW@@YGJPAGPBGKPAEK@Z
; public: long __thiscall CSecurityDescriptor::SetServiceObjectSecurity(struct SC_HANDLE__ *,unsigned long)
?SetServiceObjectSecurity@CSecurityDescriptor@@QAEJPAUSC_HANDLE__@@K@Z
; public: long __thiscall CSecurityDescriptor::SetSpecialAccounts(unsigned long)
?SetSpecialAccounts@CSecurityDescriptor@@QAEJK@Z
; long __stdcall StringToSid(unsigned short *,void * *)
?StringToSid@@YGJPAGPAPAX@Z
; long __stdcall UpdateTmNameObject(struct INameObject *,struct INameObject * *)
?UpdateTmNameObject@@YGJPAUINameObject@@PAPAU1@@Z
; long __stdcall UpgradeDtc(int)
?UpgradeDtc@@YGJH@Z
; long __stdcall VerifyAccountInfo(void)
?VerifyAccountInfo@@YGJXZ
; int __stdcall Win95Present(void)
?Win95Present@@YGHXZ
; struct _SPECIAL_ACCOUNT_ *  g_aSpecialAccounts
?g_aSpecialAccounts@@3PAU_SPECIAL_ACCOUNT_@@A DATA
_ClusterChangeDtcUserAccount@4
_ClusterCryptoContainerCreate@20
_ClusterCryptoContainerDelete@12
_ClusterDaclCryptoContainer@4
_ClusterUpdateAccountInformation@12
_DecryptAccountInformation@24
DllGetClassObject
DllGetTransactionManagerCore
DllRegisterServer
DllUnregisterServer
_EncryptAccountInformation@16
