; 
; Exports of file MSDTCPRX.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY MSDTCPRX.dll
EXPORTS
DllGetDTCProxy
; public: __cdecl CSecurityDescriptor::CSecurityDescriptor(void) __ptr64
??0CSecurityDescriptor@@QEAA@XZ
; protected: __cdecl CService::CService(void) __ptr64
??0CService@@IEAA@XZ
; protected: __cdecl CServiceControlManager::CServiceControlManager(void) __ptr64
??0CServiceControlManager@@IEAA@XZ
; public: __cdecl CSecurityDescriptor::~CSecurityDescriptor(void) __ptr64
??1CSecurityDescriptor@@QEAA@XZ
; protected: __cdecl CService::~CService(void) __ptr64
??1CService@@IEAA@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: __cdecl CServiceControlManager::~CServiceControlManager(void) __ptr64
??1CServiceControlManager@@IEAA@XZ
; public: class CSecurityDescriptor & __ptr64 __cdecl CSecurityDescriptor::operator=(class CSecurityDescriptor const & __ptr64) __ptr64
??4CSecurityDescriptor@@QEAAAEAV0@AEBV0@@Z
; public: class CService & __ptr64 __cdecl CService::operator=(class CService const & __ptr64) __ptr64
??4CService@@QEAAAEAV0@AEBV0@@Z
; public: class CServiceControlManager & __ptr64 __cdecl CServiceControlManager::operator=(class CServiceControlManager const & __ptr64) __ptr64
??4CServiceControlManager@@QEAAAEAV0@AEBV0@@Z
; public: unsigned long __cdecl CService::AddRef(void) __ptr64
?AddRef@CService@@QEAAKXZ
; public: unsigned long __cdecl CServiceControlManager::AddRef(void) __ptr64
?AddRef@CServiceControlManager@@QEAAKXZ
; public: long __cdecl CSecurityDescriptor::AddSid(unsigned short * __ptr64,unsigned long,unsigned long) __ptr64
?AddSid@CSecurityDescriptor@@QEAAJPEAGKK@Z
; public: long __cdecl CSecurityDescriptor::AddSid(void * __ptr64,unsigned long,unsigned long) __ptr64
?AddSid@CSecurityDescriptor@@QEAAJPEAXKK@Z
; protected: long __cdecl CSecurityDescriptor::Alloc(unsigned long) __ptr64
?Alloc@CSecurityDescriptor@@IEAAJK@Z
; long __cdecl ApplyAccountSettings(int,unsigned short * __ptr64,unsigned long,unsigned short * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64,int)
?ApplyAccountSettings@@YAJHPEAGK000H@Z
; long __cdecl ApplyNamedSecurityChange(unsigned short * __ptr64,enum _SE_OBJECT_TYPE,void * __ptr64,void * __ptr64,unsigned long)
?ApplyNamedSecurityChange@@YAJPEAGW4_SE_OBJECT_TYPE@@PEAX2K@Z
; long __cdecl CheckForDCPromotionDemotion(unsigned short * __ptr64)
?CheckForDCPromotionDemotion@@YAJPEAG@Z
; public: long __cdecl CSecurityDescriptor::ClearAcl(void) __ptr64
?ClearAcl@CSecurityDescriptor@@QEAAJXZ
; public: long __cdecl CSecurityDescriptor::ClearInMemoryAcl(void) __ptr64
?ClearInMemoryAcl@CSecurityDescriptor@@QEAAJXZ
; void __cdecl CloseNetpEventLogHandle(void)
?CloseNetpEventLogHandle@@YAXXZ
; public: static long __cdecl CConnectionManager::Create(class CConnectionManager * __ptr64 * __ptr64)
?Create@CConnectionManager@@SAJPEAPEAV1@@Z
; public: static long __cdecl CNameService::Create(class CNameService * __ptr64 * __ptr64)
?Create@CNameService@@SAJPEAPEAV1@@Z
; public: static long __cdecl CService::Create(class CService * __ptr64 * __ptr64,unsigned short * __ptr64,class CServiceControlManager * __ptr64,unsigned long,unsigned short * __ptr64)
?Create@CService@@SAJPEAPEAV1@PEAGPEAVCServiceControlManager@@K1@Z
; public: static long __cdecl CServiceControlManager::Create(class CServiceControlManager * __ptr64 * __ptr64,unsigned long,unsigned short * __ptr64,unsigned short * __ptr64)
?Create@CServiceControlManager@@SAJPEAPEAV1@KPEAG1@Z
; void __cdecl CreateASRKey(void)
?CreateASRKey@@YAXXZ
; public: static long __cdecl CTmProxyCore::CreateInstance(class CTmProxyCore * __ptr64 * __ptr64,struct IUnknown * __ptr64)
?CreateInstance@CTmProxyCore@@SAJPEAPEAV1@PEAUIUnknown@@@Z
; long __cdecl CreateNewContact(struct IProperties * __ptr64 * __ptr64)
?CreateNewContact@@YAJPEAPEAUIProperties@@@Z
; long __cdecl CreateOrOpenMutexW(void * __ptr64 * __ptr64,unsigned short const * __ptr64,int)
?CreateOrOpenMutexW@@YAJPEAPEAXPEBGH@Z
; void __cdecl DeleteExistingContacts(unsigned short * __ptr64,struct IContactPool * __ptr64,unsigned short * __ptr64)
?DeleteExistingContacts@@YAXPEAGPEAUIContactPool@@0@Z
; int __cdecl DllGetDTCAdmin(struct _GUID const & __ptr64,struct _GUID const & __ptr64,void * __ptr64 * __ptr64)
?DllGetDTCAdmin@@YAHAEBU_GUID@@0PEAPEAX@Z
; long __cdecl DtcWriteToEventLogger(unsigned long,unsigned long,unsigned long,unsigned long,void * __ptr64,char * __ptr64)
?DtcWriteToEventLogger@@YAJKKKKPEAXPEAD@Z
; long __cdecl DtcWriteToEventLoggerEx(unsigned short,unsigned short,unsigned long,void * __ptr64,unsigned short,unsigned long,char const * __ptr64 * __ptr64,void * __ptr64)
?DtcWriteToEventLoggerEx@@YAJGGKPEAXGKPEAPEBD0@Z
; long __cdecl DtcWriteToEventLoggerExUnFiltered(unsigned short,unsigned short,unsigned long,void * __ptr64,unsigned short,unsigned long,char const * __ptr64 * __ptr64,void * __ptr64)
?DtcWriteToEventLoggerExUnFiltered@@YAJGGKPEAXGKPEAPEBD0@Z
; long __cdecl DtcWriteToEventLoggerExUnFilteredA(unsigned short,unsigned short,unsigned long,void * __ptr64,unsigned short,unsigned long,char const * __ptr64 * __ptr64,void * __ptr64)
?DtcWriteToEventLoggerExUnFilteredA@@YAJGGKPEAXGKPEAPEBD0@Z
; long __cdecl EraseDtcClient(unsigned short * __ptr64)
?EraseDtcClient@@YAJPEAG@Z
; public: long __cdecl CService::GetAccount(unsigned short * __ptr64,unsigned long * __ptr64) __ptr64
?GetAccount@CService@@QEAAJPEAGPEAK@Z
; long __cdecl GetAccountSid(unsigned short * __ptr64,unsigned short * __ptr64,void * __ptr64 * __ptr64)
?GetAccountSid@@YAJPEAG0PEAPEAX@Z
; public: long __cdecl CSecurityDescriptor::GetControl(unsigned short * __ptr64) __ptr64
?GetControl@CSecurityDescriptor@@QEAAJPEAG@Z
; unsigned short * __ptr64 __cdecl GetDefaultLogPath(void)
?GetDefaultLogPath@@YAPEAGXZ
; unsigned long __cdecl GetDefaultLogSize(void)
?GetDefaultLogSize@@YAKXZ
; long __cdecl GetDefaultSecurityConfigurationOptions(unsigned short * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64)
?GetDefaultSecurityConfigurationOptions@@YAJPEAGPEAK1@Z
; char * __ptr64 __cdecl GetDefaultServiceNameA(void)
?GetDefaultServiceNameA@@YAPEADXZ
; unsigned short * __ptr64 __cdecl GetDefaultServiceNameW(void)
?GetDefaultServiceNameW@@YAPEAGXZ
; unsigned short * __ptr64 __cdecl GetDefaultServicePath(void)
?GetDefaultServicePath@@YAPEAGXZ
; int __cdecl GetDtcCIDProps(struct _LOG_PROPERTIES & __ptr64,struct _DAC_PROPERTIES & __ptr64)
?GetDtcCIDProps@@YAHAEAU_LOG_PROPERTIES@@AEAU_DAC_PROPERTIES@@@Z
; int __cdecl GetDtcLogPath(unsigned long,unsigned short * __ptr64)
?GetDtcLogPath@@YAHKPEAG@Z
; int __cdecl GetDtcPath(unsigned long,unsigned short * __ptr64)
?GetDtcPath@@YAHKPEAG@Z
; long __cdecl GetDtcRpcSecurityLevel(unsigned short * __ptr64,enum _DTC_SECURITY_LEVEL * __ptr64,int)
?GetDtcRpcSecurityLevel@@YAJPEAGPEAW4_DTC_SECURITY_LEVEL@@H@Z
; unsigned short * __ptr64 __cdecl GetEventLogSource(void)
?GetEventLogSource@@YAPEAGXZ
; public: long __cdecl CService::GetHandle(struct SC_HANDLE__ * __ptr64 & __ptr64) __ptr64
?GetHandle@CService@@QEAAJAEAPEAUSC_HANDLE__@@@Z
; public: long __cdecl CServiceControlManager::GetHandle(struct SC_HANDLE__ * __ptr64 & __ptr64) __ptr64
?GetHandle@CServiceControlManager@@QEAAJAEAPEAUSC_HANDLE__@@@Z
; long __cdecl GetLastKnownDomainControllerState(unsigned short * __ptr64,unsigned long * __ptr64)
?GetLastKnownDomainControllerState@@YAJPEAGPEAK@Z
; long __cdecl GetLocalDtcClusteringVersion(unsigned long * __ptr64)
?GetLocalDtcClusteringVersion@@YAJPEAK@Z
; long __cdecl GetMsDtcSPN(unsigned short * __ptr64,unsigned short * __ptr64 * __ptr64)
?GetMsDtcSPN@@YAJPEAGPEAPEAG@Z
; public: long __cdecl CSecurityDescriptor::GetNamedInfo(unsigned short * __ptr64,enum _SE_OBJECT_TYPE) __ptr64
?GetNamedInfo@CSecurityDescriptor@@QEAAJPEAGW4_SE_OBJECT_TYPE@@@Z
; unsigned short * __ptr64 __cdecl GetOldDefaultLogPath(void)
?GetOldDefaultLogPath@@YAPEAGXZ
; long __cdecl GetSecurityConfigurationOptions(unsigned short * __ptr64,unsigned long * __ptr64,unsigned long * __ptr64,int)
?GetSecurityConfigurationOptions@@YAJPEAGPEAK1H@Z
; public: long __cdecl CSecurityDescriptor::GetSecurityDescriptor(void * __ptr64 * __ptr64) __ptr64
?GetSecurityDescriptor@CSecurityDescriptor@@QEAAJPEAPEAX@Z
; long __cdecl GetSecurityRegValueNonClusterW(unsigned short * __ptr64,unsigned short const * __ptr64,unsigned char * __ptr64,unsigned long * __ptr64)
?GetSecurityRegValueNonClusterW@@YAJPEAGPEBGPEAEPEAK@Z
; long __cdecl GetSecurityRegValueW(unsigned short * __ptr64,unsigned short const * __ptr64,unsigned char * __ptr64,unsigned long * __ptr64,int)
?GetSecurityRegValueW@@YAJPEAGPEBGPEAEPEAKH@Z
; long __cdecl GetSharedDtcClusteringVersion(unsigned long * __ptr64)
?GetSharedDtcClusteringVersion@@YAJPEAK@Z
; long __cdecl GetTmContactA(char * __ptr64,char * __ptr64,struct IProperties * __ptr64 * __ptr64)
?GetTmContactA@@YAJPEAD0PEAPEAUIProperties@@@Z
; long __cdecl GetTmContactW(unsigned short * __ptr64,unsigned short * __ptr64,struct IProperties * __ptr64 * __ptr64)
?GetTmContactW@@YAJPEAG0PEAPEAUIProperties@@@Z
; long __cdecl GetTmUIContactA(char * __ptr64,char * __ptr64,struct IProperties * __ptr64 * __ptr64)
?GetTmUIContactA@@YAJPEAD0PEAPEAUIProperties@@@Z
; long __cdecl GetTmUIContactW(unsigned short * __ptr64,unsigned short * __ptr64,struct IProperties * __ptr64 * __ptr64)
?GetTmUIContactW@@YAJPEAG0PEAPEAUIProperties@@@Z
; long __cdecl GetXATmSecurityKey(unsigned short * __ptr64,unsigned short * __ptr64,unsigned long * __ptr64)
?GetXATmSecurityKey@@YAJPEAG0PEAK@Z
; long __cdecl InstallDtc(unsigned short * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64,unsigned long,unsigned short * __ptr64,int)
?InstallDtc@@YAJPEAG0000K0H@Z
; long __cdecl InstallDtcClient(unsigned short * __ptr64,unsigned long,unsigned long)
?InstallDtcClient@@YAJPEAGKK@Z
; long __cdecl InstallTipGw(unsigned short * __ptr64)
?InstallTipGw@@YAJPEAG@Z
; long __cdecl InstallXaTm(unsigned short * __ptr64)
?InstallXaTm@@YAJPEAG@Z
; protected: long __cdecl CService::InternalInit(unsigned short * __ptr64,class CServiceControlManager * __ptr64,unsigned long,unsigned short * __ptr64) __ptr64
?InternalInit@CService@@IEAAJPEAGPEAVCServiceControlManager@@K0@Z
; protected: long __cdecl CServiceControlManager::InternalInit(unsigned long,unsigned short * __ptr64,unsigned short * __ptr64) __ptr64
?InternalInit@CServiceControlManager@@IEAAJKPEAG0@Z
; int __cdecl IsNtVersion5OrMore(void)
?IsNtVersion5OrMore@@YAHXZ
; long __cdecl JoinDtc(void)
?JoinDtc@@YAJXZ
; long __cdecl JoinDtcEx(unsigned short * __ptr64)
?JoinDtcEx@@YAJPEAG@Z
; long __cdecl LookupSpecialAccount(unsigned short * __ptr64,struct _SPECIAL_ACCOUNT_ * __ptr64 * __ptr64)
?LookupSpecialAccount@@YAJPEAGPEAPEAU_SPECIAL_ACCOUNT_@@@Z
; protected: long __cdecl CSecurityDescriptor::MakeAbsolute(void) __ptr64
?MakeAbsolute@CSecurityDescriptor@@IEAAJXZ
; long __cdecl MirrorXaTmSecurityKey(unsigned short * __ptr64)
?MirrorXaTmSecurityKey@@YAJPEAG@Z
; long __cdecl MsDtcSPNFree(unsigned short * __ptr64 * __ptr64)
?MsDtcSPNFree@@YAJPEAPEAG@Z
; public: long __cdecl CServiceControlManager::OpenServiceA(class CService * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned long) __ptr64
?OpenServiceA@CServiceControlManager@@QEAAJPEAPEAVCService@@PEAGK@Z
; long __cdecl PopulateLocalRegistry(void)
?PopulateLocalRegistry@@YAJXZ
; long __cdecl PopulateSharedClusterRegistryWithContacts(void)
?PopulateSharedClusterRegistryWithContacts@@YAJXZ
; long __cdecl PopulateSharedClusterRegistryWithLogInfo(void)
?PopulateSharedClusterRegistryWithLogInfo@@YAJXZ
; public: long __cdecl CSecurityDescriptor::QueryServiceObjectSecurity(struct SC_HANDLE__ * __ptr64,unsigned long) __ptr64
?QueryServiceObjectSecurity@CSecurityDescriptor@@QEAAJPEAUSC_HANDLE__@@K@Z
; public: unsigned long __cdecl CService::Release(void) __ptr64
?Release@CService@@QEAAKXZ
; public: unsigned long __cdecl CServiceControlManager::Release(void) __ptr64
?Release@CServiceControlManager@@QEAAKXZ
; long __cdecl RemoveDtc(unsigned short * __ptr64,unsigned short * __ptr64,unsigned short * __ptr64)
?RemoveDtc@@YAJPEAG00@Z
; public: long __cdecl CSecurityDescriptor::RemoveSid(unsigned short * __ptr64) __ptr64
?RemoveSid@CSecurityDescriptor@@QEAAJPEAG@Z
; public: long __cdecl CSecurityDescriptor::RemoveSid(void * __ptr64) __ptr64
?RemoveSid@CSecurityDescriptor@@QEAAJPEAX@Z
; protected: void __cdecl CSecurityDescriptor::Reset(void) __ptr64
?Reset@CSecurityDescriptor@@IEAAXXZ
; long __cdecl RidToSid(unsigned long,void * __ptr64 * __ptr64)
?RidToSid@@YAJKPEAPEAX@Z
; public: long __cdecl CService::SetAccount(unsigned short * __ptr64,unsigned short * __ptr64) __ptr64
?SetAccount@CService@@QEAAJPEAG0@Z
; long __cdecl SetAccountInfoInRegistryW(unsigned short * __ptr64)
?SetAccountInfoInRegistryW@@YAJPEAG@Z
; public: long __cdecl CSecurityDescriptor::SetControl(unsigned short,unsigned short) __ptr64
?SetControl@CSecurityDescriptor@@QEAAJGG@Z
; long __cdecl SetDomainControllerState(unsigned short * __ptr64)
?SetDomainControllerState@@YAJPEAG@Z
; int __cdecl SetDtcCIDProps(struct _LOG_PROPERTIES & __ptr64,struct _DAC_PROPERTIES & __ptr64)
?SetDtcCIDProps@@YAHAEAU_LOG_PROPERTIES@@AEAU_DAC_PROPERTIES@@@Z
; long __cdecl SetDtcClient(unsigned short * __ptr64,char * __ptr64,unsigned short * __ptr64)
?SetDtcClient@@YAJPEAGPEAD0@Z
; long __cdecl SetDtcRpcSecurityLevel(unsigned short * __ptr64,enum _DTC_SECURITY_LEVEL,int)
?SetDtcRpcSecurityLevel@@YAJPEAGW4_DTC_SECURITY_LEVEL@@H@Z
; long __cdecl SetDtcServerProtocol(char * __ptr64,char * __ptr64)
?SetDtcServerProtocol@@YAJPEAD0@Z
; void __cdecl SetEventLogSourceToMsdtcCore(void)
?SetEventLogSourceToMsdtcCore@@YAXXZ
; public: long __cdecl CSecurityDescriptor::SetNamedInfo(unsigned short * __ptr64,enum _SE_OBJECT_TYPE,unsigned long) __ptr64
?SetNamedInfo@CSecurityDescriptor@@QEAAJPEAGW4_SE_OBJECT_TYPE@@K@Z
; protected: long __cdecl CSecurityDescriptor::SetNewAcl(struct _ACL * __ptr64,unsigned long,int,int) __ptr64
?SetNewAcl@CSecurityDescriptor@@IEAAJPEAU_ACL@@KHH@Z
; public: long __cdecl CSecurityDescriptor::SetOwner(unsigned short * __ptr64,int) __ptr64
?SetOwner@CSecurityDescriptor@@QEAAJPEAGH@Z
; public: long __cdecl CSecurityDescriptor::SetOwner(void * __ptr64,int) __ptr64
?SetOwner@CSecurityDescriptor@@QEAAJPEAXH@Z
; long __cdecl SetSecurityConfigurationOptions(unsigned short * __ptr64,unsigned long,unsigned long)
?SetSecurityConfigurationOptions@@YAJPEAGKK@Z
; long __cdecl SetSecurityRegValueNonClusterW(unsigned short * __ptr64,unsigned short const * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long)
?SetSecurityRegValueNonClusterW@@YAJPEAGPEBGKPEAEK@Z
; long __cdecl SetSecurityRegValueW(unsigned short * __ptr64,unsigned short const * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long)
?SetSecurityRegValueW@@YAJPEAGPEBGKPEAEK@Z
; public: long __cdecl CSecurityDescriptor::SetServiceObjectSecurity(struct SC_HANDLE__ * __ptr64,unsigned long) __ptr64
?SetServiceObjectSecurity@CSecurityDescriptor@@QEAAJPEAUSC_HANDLE__@@K@Z
; public: long __cdecl CSecurityDescriptor::SetSpecialAccounts(unsigned long) __ptr64
?SetSpecialAccounts@CSecurityDescriptor@@QEAAJK@Z
; long __cdecl StringToSid(unsigned short * __ptr64,void * __ptr64 * __ptr64)
?StringToSid@@YAJPEAGPEAPEAX@Z
; long __cdecl UpdateTmNameObject(struct INameObject * __ptr64,struct INameObject * __ptr64 * __ptr64)
?UpdateTmNameObject@@YAJPEAUINameObject@@PEAPEAU1@@Z
; long __cdecl UpgradeDtc(int)
?UpgradeDtc@@YAJH@Z
; long __cdecl VerifyAccountInfo(void)
?VerifyAccountInfo@@YAJXZ
; int __cdecl Win95Present(void)
?Win95Present@@YAHXZ
; struct _SPECIAL_ACCOUNT_ *  g_aSpecialAccounts
?g_aSpecialAccounts@@3PAU_SPECIAL_ACCOUNT_@@A DATA
ClusterChangeDtcUserAccount
ClusterCryptoContainerCreate
ClusterCryptoContainerDelete
ClusterDaclCryptoContainer
ClusterUpdateAccountInformation
DecryptAccountInformation
DllGetClassObject
DllGetTransactionManagerCore
DllRegisterServer
DllUnregisterServer
EncryptAccountInformation
