; 
; Exports of file mqsec.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY mqsec.dll
EXPORTS
; public: __cdecl CCancelRpc::CCancelRpc(class CCancelRpc const & __ptr64) __ptr64
??0CCancelRpc@@QEAA@AEBV0@@Z
; public: __cdecl CCancelRpc::CCancelRpc(void) __ptr64
??0CCancelRpc@@QEAA@XZ
; public: __cdecl CColumns::CColumns(class CColumns const & __ptr64) __ptr64
??0CColumns@@QEAA@AEBV0@@Z
; public: __cdecl CColumns::CColumns(unsigned int) __ptr64
??0CColumns@@QEAA@I@Z
; public: __cdecl CDSBaseUpdate::CDSBaseUpdate(class CDSBaseUpdate const & __ptr64) __ptr64
??0CDSBaseUpdate@@QEAA@AEBV0@@Z
; public: __cdecl CDSBaseUpdate::CDSBaseUpdate(void) __ptr64
??0CDSBaseUpdate@@QEAA@XZ
; public: __cdecl COutputReport::COutputReport(void) __ptr64
??0COutputReport@@QEAA@XZ
; public: __cdecl CPropertyRestriction::CPropertyRestriction(class CPropertyRestriction const & __ptr64) __ptr64
??0CPropertyRestriction@@QEAA@AEBV0@@Z
; public: __cdecl CPropertyRestriction::CPropertyRestriction(unsigned long,unsigned long const & __ptr64,class CMQVariant const & __ptr64) __ptr64
??0CPropertyRestriction@@QEAA@KAEBKAEBVCMQVariant@@@Z
; public: __cdecl CPropertyRestriction::CPropertyRestriction(void) __ptr64
??0CPropertyRestriction@@QEAA@XZ
; public: __cdecl CRestriction::CRestriction(class CRestriction const & __ptr64) __ptr64
??0CRestriction@@QEAA@AEBV0@@Z
; public: __cdecl CRestriction::CRestriction(unsigned int) __ptr64
??0CRestriction@@QEAA@I@Z
; public: __cdecl CSort::CSort(class CSort const & __ptr64) __ptr64
??0CSort@@QEAA@AEBV0@@Z
; public: __cdecl CSort::CSort(unsigned int) __ptr64
??0CSort@@QEAA@I@Z
; public: __cdecl CSortKey::CSortKey(unsigned long const & __ptr64,unsigned long) __ptr64
??0CSortKey@@QEAA@AEBKK@Z
; public: __cdecl CSortKey::CSortKey(void) __ptr64
??0CSortKey@@QEAA@XZ
; public: __cdecl CCancelRpc::~CCancelRpc(void) __ptr64
??1CCancelRpc@@QEAA@XZ
; public: __cdecl CColumns::~CColumns(void) __ptr64
??1CColumns@@QEAA@XZ
; public: __cdecl CDSBaseUpdate::~CDSBaseUpdate(void) __ptr64
??1CDSBaseUpdate@@QEAA@XZ
; public: __cdecl COutputReport::~COutputReport(void) __ptr64
??1COutputReport@@QEAA@XZ
; public: __cdecl CPropertyRestriction::~CPropertyRestriction(void) __ptr64
??1CPropertyRestriction@@QEAA@XZ
; public: __cdecl CRestriction::~CRestriction(void) __ptr64
??1CRestriction@@QEAA@XZ
; public: __cdecl CSort::~CSort(void) __ptr64
??1CSort@@QEAA@XZ
; public: __cdecl CSortKey::~CSortKey(void) __ptr64
??1CSortKey@@QEAA@XZ
; public: class CCancelRpc & __ptr64 __cdecl CCancelRpc::operator=(class CCancelRpc const & __ptr64) __ptr64
??4CCancelRpc@@QEAAAEAV0@AEBV0@@Z
; public: class CDSBaseUpdate & __ptr64 __cdecl CDSBaseUpdate::operator=(class CDSBaseUpdate const & __ptr64) __ptr64
??4CDSBaseUpdate@@QEAAAEAV0@AEBV0@@Z
; public: class COutputReport & __ptr64 __cdecl COutputReport::operator=(class COutputReport const & __ptr64) __ptr64
??4COutputReport@@QEAAAEAV0@AEBV0@@Z
; public: class CPropertyRestriction & __ptr64 __cdecl CPropertyRestriction::operator=(class CPropertyRestriction const & __ptr64) __ptr64
??4CPropertyRestriction@@QEAAAEAV0@AEBV0@@Z
; public: class CRestriction & __ptr64 __cdecl CRestriction::operator=(class CRestriction const & __ptr64) __ptr64
??4CRestriction@@QEAAAEAV0@AEBV0@@Z
; public: class CSortKey & __ptr64 __cdecl CSortKey::operator=(class CSortKey const & __ptr64) __ptr64
??4CSortKey@@QEAAAEAV0@AEBV0@@Z
; public: void __cdecl CColumns::`default constructor closure'(void) __ptr64
??_FCColumns@@QEAAXXZ
; public: void __cdecl CRestriction::`default constructor closure'(void) __ptr64
??_FCRestriction@@QEAAXXZ
; public: void __cdecl CSort::`default constructor closure'(void) __ptr64
??_FCSort@@QEAAXXZ
; public: void __cdecl CCancelRpc::Add(void * __ptr64,__int64) __ptr64
?Add@CCancelRpc@@QEAAXPEAX_J@Z
; public: void __cdecl CColumns::Add(unsigned long const & __ptr64) __ptr64
?Add@CColumns@@QEAAXAEBK@Z
; public: void __cdecl CSort::Add(unsigned long const & __ptr64,unsigned long) __ptr64
?Add@CSort@@QEAAXAEBKK@Z
; public: void __cdecl CSort::Add(class CSortKey const & __ptr64) __ptr64
?Add@CSort@@QEAAXAEBVCSortKey@@@Z
; public: void __cdecl CRestriction::AddChild(class CPropertyRestriction const & __ptr64) __ptr64
?AddChild@CRestriction@@QEAAXAEBVCPropertyRestriction@@@Z
; public: void __cdecl CRestriction::AddRestriction(struct tagBLOB & __ptr64,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXAEAUtagBLOB@@KK@Z
; public: void __cdecl CRestriction::AddRestriction(class CMQVariant const & __ptr64,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXAEBVCMQVariant@@KK@Z
; public: void __cdecl CRestriction::AddRestriction(unsigned char,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXEKK@Z
; public: void __cdecl CRestriction::AddRestriction(short,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXFKK@Z
; public: void __cdecl CRestriction::AddRestriction(long,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXJKK@Z
; public: void __cdecl CRestriction::AddRestriction(unsigned long,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXKKK@Z
; public: void __cdecl CRestriction::AddRestriction(unsigned short * __ptr64,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXPEAGKK@Z
; public: void __cdecl CRestriction::AddRestriction(struct _GUID * __ptr64,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXPEAU_GUID@@KK@Z
; public: void __cdecl CRestriction::AddRestriction(struct tagCACLSID * __ptr64,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXPEAUtagCACLSID@@KK@Z
; public: void __cdecl CRestriction::AddRestriction(struct tagCALPWSTR * __ptr64,unsigned long,unsigned long) __ptr64
?AddRestriction@CRestriction@@QEAAXPEAUtagCALPWSTR@@KK@Z
; public: void __cdecl CCancelRpc::CancelRequests(__int64) __ptr64
?CancelRequests@CCancelRpc@@QEAAX_J@Z
; private: static unsigned long __cdecl CCancelRpc::CancelThread(void * __ptr64)
?CancelThread@CCancelRpc@@CAKPEAX@Z
; public: struct tagMQCOLUMNSET * __ptr64 __cdecl CColumns::CastToStruct(void) __ptr64
?CastToStruct@CColumns@@QEAAPEAUtagMQCOLUMNSET@@XZ
; public: struct tagMQRESTRICTION * __ptr64 __cdecl CRestriction::CastToStruct(void) __ptr64
?CastToStruct@CRestriction@@QEAAPEAUtagMQRESTRICTION@@XZ
; public: struct tagMQSORTSET * __ptr64 __cdecl CSort::CastToStruct(void) __ptr64
?CastToStruct@CSort@@QEAAPEAUtagMQSORTSET@@XZ
; void __cdecl ComposeRPCEndPointName(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64)
?ComposeRPCEndPointName@@YAXPEBG0PEAPEAG@Z
; private: long __cdecl CDSBaseUpdate::CopyProperty(struct tagPROPVARIANT & __ptr64,struct tagPROPVARIANT * __ptr64) __ptr64
?CopyProperty@CDSBaseUpdate@@AEAAJAEAUtagPROPVARIANT@@PEAU2@@Z
; public: unsigned int __cdecl CColumns::Count(void)const  __ptr64
?Count@CColumns@@QEBAIXZ
; public: unsigned int __cdecl CRestriction::Count(void)const  __ptr64
?Count@CRestriction@@QEBAIXZ
; public: unsigned int __cdecl CSort::Count(void)const  __ptr64
?Count@CSort@@QEBAIXZ
; long __cdecl DeleteFalconKeyValue(unsigned short const * __ptr64)
?DeleteFalconKeyValue@@YAJPEBG@Z
; private: void __cdecl CDSBaseUpdate::DeleteProperty(struct tagPROPVARIANT & __ptr64) __ptr64
?DeleteProperty@CDSBaseUpdate@@AEAAXAEAUtagPROPVARIANT@@@Z
FreeContextHandle
; public: unsigned long const & __ptr64 __cdecl CColumns::Get(unsigned int)const  __ptr64
?Get@CColumns@@QEBAAEBKI@Z
; public: class CSortKey const & __ptr64 __cdecl CSort::Get(unsigned int)const  __ptr64
?Get@CSort@@QEBAAEBVCSortKey@@I@Z
; public: class CPropertyRestriction const & __ptr64 __cdecl CRestriction::GetChild(unsigned int)const  __ptr64
?GetChild@CRestriction@@QEBAAEBVCPropertyRestriction@@I@Z
; public: unsigned char __cdecl CDSBaseUpdate::GetCommand(void) __ptr64
?GetCommand@CDSBaseUpdate@@QEAAEXZ
; long __cdecl GetComputerDnsNameInternal(unsigned short * __ptr64,unsigned long * __ptr64)
?GetComputerDnsNameInternal@@YAJPEAGPEAK@Z
; long __cdecl GetComputerNameInternal(unsigned short * __ptr64,unsigned long * __ptr64)
?GetComputerNameInternal@@YAJPEAGPEAK@Z
GetDomainFQDNName
; long __cdecl GetFalconKey(unsigned short const * __ptr64,struct HKEY__ * __ptr64 * __ptr64)
?GetFalconKey@@YAJPEBGPEAPEAUHKEY__@@@Z
GetFalconKeyValue
; unsigned short const * __ptr64 __cdecl GetFalconSectionName(void)
?GetFalconSectionName@@YAPEBGXZ
; unsigned long __cdecl GetFalconServiceName(unsigned short * __ptr64,unsigned long)
?GetFalconServiceName@@YAKPEAGK@Z
; public: struct _GUID * __ptr64 __cdecl CDSBaseUpdate::GetGuidIdentifier(void) __ptr64
?GetGuidIdentifier@CDSBaseUpdate@@QEAAPEAU_GUID@@XZ
; public: struct _GUID const * __ptr64 __cdecl CDSBaseUpdate::GetMasterId(void) __ptr64
?GetMasterId@CDSBaseUpdate@@QEAAPEBU_GUID@@XZ
; public: unsigned long __cdecl CDSBaseUpdate::GetObjectType(void) __ptr64
?GetObjectType@CDSBaseUpdate@@QEAAKXZ
; public: unsigned long __cdecl CSortKey::GetOrder(void)const  __ptr64
?GetOrder@CSortKey@@QEBAKXZ
; public: unsigned short * __ptr64 __cdecl CDSBaseUpdate::GetPathName(void) __ptr64
?GetPathName@CDSBaseUpdate@@QEAAPEAGXZ
; public: class CSeqNum const & __ptr64 __cdecl CDSBaseUpdate::GetPrevSeqNum(void)const  __ptr64
?GetPrevSeqNum@CDSBaseUpdate@@QEBAAEBVCSeqNum@@XZ
; public: unsigned long const & __ptr64 __cdecl CSortKey::GetProperty(void)const  __ptr64
?GetProperty@CSortKey@@QEBAAEBKXZ
; public: unsigned long * __ptr64 __cdecl CDSBaseUpdate::GetProps(void) __ptr64
?GetProps@CDSBaseUpdate@@QEAAPEAKXZ
; public: class CSeqNum const & __ptr64 __cdecl CDSBaseUpdate::GetPurgeSeqNum(void)const  __ptr64
?GetPurgeSeqNum@CDSBaseUpdate@@QEBAAEBVCSeqNum@@XZ
; public: class CSeqNum const & __ptr64 __cdecl CDSBaseUpdate::GetSeqNum(void)const  __ptr64
?GetSeqNum@CDSBaseUpdate@@QEBAAEBVCSeqNum@@XZ
; public: long __cdecl CDSBaseUpdate::GetSerializeSize(unsigned long * __ptr64) __ptr64
?GetSerializeSize@CDSBaseUpdate@@QEAAJPEAK@Z
GetSizes
; long __cdecl GetThisServerIpPort(unsigned short * __ptr64,unsigned long)
?GetThisServerIpPort@@YAJPEAGK@Z
; public: struct tagPROPVARIANT * __ptr64 __cdecl CDSBaseUpdate::GetVars(void) __ptr64
?GetVars@CDSBaseUpdate@@QEAAPEAUtagPROPVARIANT@@XZ
; private: void __cdecl CRestriction::Grow(void) __ptr64
?Grow@CRestriction@@AEAAXXZ
; long __cdecl HashMessageProperties(unsigned __int64,unsigned char const * __ptr64,unsigned long,unsigned long,unsigned char const * __ptr64,unsigned long,unsigned short const * __ptr64,unsigned long,struct QUEUE_FORMAT const * __ptr64,struct QUEUE_FORMAT const * __ptr64)
?HashMessageProperties@@YAJ_KPEBEKK1KPEBGKPEBUQUEUE_FORMAT@@3@Z
; long __cdecl HashProperties(unsigned __int64,unsigned long,unsigned long * __ptr64,struct tagPROPVARIANT * __ptr64)
?HashProperties@@YAJ_KKPEAKPEAUtagPROPVARIANT@@@Z
; public: void __cdecl CCancelRpc::Init(void) __ptr64
?Init@CCancelRpc@@QEAAXXZ
; public: long __cdecl CDSBaseUpdate::Init(unsigned char const * __ptr64,unsigned long * __ptr64,int) __ptr64
?Init@CDSBaseUpdate@@QEAAJPEBEPEAKH@Z
; public: long __cdecl CDSBaseUpdate::Init(struct _GUID const * __ptr64,class CSeqNum const & __ptr64,class CSeqNum const & __ptr64,class CSeqNum const & __ptr64,int,unsigned char,unsigned long,struct _GUID const * __ptr64,unsigned long,unsigned long * __ptr64,struct tagPROPVARIANT * __ptr64) __ptr64
?Init@CDSBaseUpdate@@QEAAJPEBU_GUID@@AEBVCSeqNum@@11HEK0KPEAKPEAUtagPROPVARIANT@@@Z
; public: long __cdecl CDSBaseUpdate::Init(struct _GUID const * __ptr64,class CSeqNum const & __ptr64,class CSeqNum const & __ptr64,class CSeqNum const & __ptr64,int,unsigned char,unsigned long,unsigned short * __ptr64,unsigned long,unsigned long * __ptr64,struct tagPROPVARIANT * __ptr64) __ptr64
?Init@CDSBaseUpdate@@QEAAJPEBU_GUID@@AEBVCSeqNum@@11HEKPEAGKPEAKPEAUtagPROPVARIANT@@@Z
; private: long __cdecl CDSBaseUpdate::InitProperty(unsigned char const * __ptr64,unsigned long * __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
?InitProperty@CDSBaseUpdate@@AEAAJPEBEPEAKKAEAUtagPROPVARIANT@@@Z
; bool __cdecl IsLocalSystemCluster(void)
?IsLocalSystemCluster@@YA_NXZ
; public: void __cdecl COutputReport::KeepErrorHistory(unsigned short const * __ptr64,unsigned short,long) __ptr64
?KeepErrorHistory@COutputReport@@QEAAXPEBGGJ@Z
MQSealBuffer
MQSec_AccessCheck
MQSec_AccessCheckForSelf
MQSec_AcquireCryptoProvider
MQSec_CanGenerateAudit
MQSec_ConvertSDToNT4Format
MQSec_ConvertSDToNT5Format
MQSec_CopySecurityDescriptor
MQSec_GetAdminSid
MQSec_GetAnonymousSid
MQSec_GetCryptoProvProperty
MQSec_GetDefaultSecDescriptor
MQSec_GetImpersonationObject
MQSec_GetLocalMachineSid
MQSec_GetLocalSystemSid
MQSec_GetNetworkServiceSid
MQSec_GetProcessSid
MQSec_GetProcessUserSid
MQSec_GetPubKeysFromDS
MQSec_GetThreadUserSid
MQSec_GetUserType
MQSec_GetWorldSid
MQSec_IsAnonymusSid
MQSec_IsDC
MQSec_IsGuestSid
MQSec_IsNetworkServiceSid
MQSec_IsSystemSid
MQSec_IsUnAuthenticatedUser
MQSec_MakeAbsoluteSD
MQSec_MakeSelfRelative
MQSec_MergeSecurityDescriptors
MQSec_PackPublicKey
MQSec_RpcAuthnLevel
MQSec_SetLocalRpcMutualAuth
MQSec_SetPrivilegeInThread
MQSec_SetSecurityDescriptorDacl
MQSec_StorePubKeys
MQSec_StorePubKeysInDS
MQSec_TraceThreadTokenInfo
MQSec_UnpackPublicKey
MQSec_UpdateLocalMachineSid
; long __cdecl MQSetCaConfig(unsigned long,class MQ_CA_CONFIG * __ptr64)
?MQSetCaConfig@@YAJKPEAVMQ_CA_CONFIG@@@Z
MQSigHashMessageProperties
MQUInitGlobalScurityVars
MQsspi_InitServerAuthntication
; private: void __cdecl CCancelRpc::ProcessEvents(void) __ptr64
?ProcessEvents@CCancelRpc@@AEAAXXZ
; void __cdecl ProduceRPCErrorTracing(unsigned short * __ptr64,unsigned long)
?ProduceRPCErrorTracing@@YAXPEAGK@Z
; public: unsigned long __cdecl CPropertyRestriction::Relation(void) __ptr64
?Relation@CPropertyRestriction@@QEAAKXZ
; public: void __cdecl CCancelRpc::Remove(void * __ptr64) __ptr64
?Remove@CCancelRpc@@QEAAXPEAX@Z
; public: void __cdecl CColumns::Remove(unsigned int) __ptr64
?Remove@CColumns@@QEAAXI@Z
; public: void __cdecl CSort::Remove(unsigned int) __ptr64
?Remove@CSort@@QEAAXI@Z
; class COutputReport  Report
?Report@@3VCOutputReport@@A DATA
; public: unsigned long __cdecl CCancelRpc::RpcCancelTimeout(void) __ptr64
?RpcCancelTimeout@CCancelRpc@@QEAAKXZ
; public: long __cdecl CDSBaseUpdate::Serialize(unsigned char * __ptr64,unsigned long * __ptr64,int) __ptr64
?Serialize@CDSBaseUpdate@@QEAAJPEAEPEAKH@Z
; private: long __cdecl CDSBaseUpdate::SerializeProperty(struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned long * __ptr64) __ptr64
?SerializeProperty@CDSBaseUpdate@@AEAAJAEAUtagPROPVARIANT@@PEAEPEAK@Z
ServerAcceptSecCtx
; public: void __cdecl CRestriction::SetChild(class CPropertyRestriction const & __ptr64,unsigned int) __ptr64
?SetChild@CRestriction@@QEAAXAEBVCPropertyRestriction@@I@Z
SetFalconKeyValue
SetFalconServiceName
; public: void __cdecl CSortKey::SetOrder(unsigned long const & __ptr64) __ptr64
?SetOrder@CSortKey@@QEAAXAEBK@Z
; public: void __cdecl CDSBaseUpdate::SetPrevSeqNum(class CSeqNum & __ptr64) __ptr64
?SetPrevSeqNum@CDSBaseUpdate@@QEAAXAEAVCSeqNum@@@Z
; public: void __cdecl CPropertyRestriction::SetProperty(unsigned long const & __ptr64) __ptr64
?SetProperty@CPropertyRestriction@@QEAAXAEBK@Z
; public: void __cdecl CSortKey::SetProperty(unsigned long const & __ptr64) __ptr64
?SetProperty@CSortKey@@QEAAXAEBK@Z
; public: void __cdecl CPropertyRestriction::SetRelation(unsigned long) __ptr64
?SetRelation@CPropertyRestriction@@QEAAXK@Z
; public: void __cdecl CPropertyRestriction::SetValue(struct tagBLOB & __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXAEAUtagBLOB@@@Z
; public: void __cdecl CPropertyRestriction::SetValue(class CMQVariant const & __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXAEBVCMQVariant@@@Z
; public: void __cdecl CPropertyRestriction::SetValue(unsigned char) __ptr64
?SetValue@CPropertyRestriction@@QEAAXE@Z
; public: void __cdecl CPropertyRestriction::SetValue(short) __ptr64
?SetValue@CPropertyRestriction@@QEAAXF@Z
; public: void __cdecl CPropertyRestriction::SetValue(long) __ptr64
?SetValue@CPropertyRestriction@@QEAAXJ@Z
; public: void __cdecl CPropertyRestriction::SetValue(unsigned long) __ptr64
?SetValue@CPropertyRestriction@@QEAAXK@Z
; public: void __cdecl CPropertyRestriction::SetValue(unsigned short * __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXPEAG@Z
; public: void __cdecl CPropertyRestriction::SetValue(struct _GUID * __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXPEAU_GUID@@@Z
; public: void __cdecl CPropertyRestriction::SetValue(struct tagCACLSID * __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXPEAUtagCACLSID@@@Z
; public: void __cdecl CPropertyRestriction::SetValue(struct tagCALPWSTR * __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXPEAUtagCALPWSTR@@@Z
; public: void __cdecl CCancelRpc::ShutDownCancelThread(void) __ptr64
?ShutDownCancelThread@CCancelRpc@@QEAAXXZ
ShutDownDebugWindow
; unsigned __int64 __cdecl UnalignedWcslen(unsigned short const * __ptr64 __ptr64)
?UnalignedWcslen@@YA_KPEFBG@Z
; public: class CMQVariant const & __ptr64 __cdecl CPropertyRestriction::Value(void) __ptr64
?Value@CPropertyRestriction@@QEAAAEBVCMQVariant@@XZ
; long __cdecl XactGetDTC(struct IUnknown * __ptr64 * __ptr64)
?XactGetDTC@@YAJPEAPEAUIUnknown@@@Z
; long __cdecl XactGetWhereabouts(unsigned long * __ptr64,unsigned char * __ptr64)
?XactGetWhereabouts@@YAJPEAKPEAE@Z
; class CCancelRpc  g_CancelRpc
?g_CancelRpc@@3VCCancelRpc@@A DATA
; class CHCryptProv  g_hProvVer
?g_hProvVer@@3VCHCryptProv@@A DATA
; public: unsigned char __cdecl CDSBaseUpdate::getNumOfProps(void) __ptr64
?getNumOfProps@CDSBaseUpdate@@QEAAEXZ
; long __cdecl mqrpcBindQMService(unsigned short * __ptr64,unsigned short * __ptr64,unsigned long * __ptr64,void * __ptr64 * __ptr64,enum PORTTYPE,unsigned long (__cdecl*)(void * __ptr64,unsigned long),unsigned long)
?mqrpcBindQMService@@YAJPEAG0PEAKPEAPEAXW4PORTTYPE@@P6AKPEAXK@ZK@Z
; unsigned long __cdecl mqrpcGetLocalCallPID(void * __ptr64)
?mqrpcGetLocalCallPID@@YAKPEAX@Z
; int __cdecl mqrpcIsLocalCall(void * __ptr64)
?mqrpcIsLocalCall@@YAHPEAX@Z
; int __cdecl mqrpcIsTcpipTransport(void * __ptr64)
?mqrpcIsTcpipTransport@@YAHPEAX@Z
; long __cdecl mqrpcUnbindQMService(void * __ptr64 * __ptr64,unsigned short * __ptr64 * __ptr64)
?mqrpcUnbindQMService@@YAJPEAPEAXPEAPEAG@Z
MQSigCloneCertFromReg
MQSigCloneCertFromSysStore
MQSigCreateCertificate
MQSigOpenUserCertStore
MSMQGetOperatingSystem
