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