; 
; Exports of file mqsec.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY mqsec.dll
EXPORTS
; public: __thiscall CCancelRpc::CCancelRpc(class CCancelRpc const &)
??0CCancelRpc@@QAE@ABV0@@Z
; public: __thiscall CCancelRpc::CCancelRpc(void)
??0CCancelRpc@@QAE@XZ
; public: __thiscall CColumns::CColumns(class CColumns const &)
??0CColumns@@QAE@ABV0@@Z
; public: __thiscall CColumns::CColumns(unsigned int)
??0CColumns@@QAE@I@Z
; public: __thiscall CDSBaseUpdate::CDSBaseUpdate(class CDSBaseUpdate const &)
??0CDSBaseUpdate@@QAE@ABV0@@Z
; public: __thiscall CDSBaseUpdate::CDSBaseUpdate(void)
??0CDSBaseUpdate@@QAE@XZ
; public: __thiscall COutputReport::COutputReport(void)
??0COutputReport@@QAE@XZ
; public: __thiscall CPropertyRestriction::CPropertyRestriction(class CPropertyRestriction const &)
??0CPropertyRestriction@@QAE@ABV0@@Z
; public: __thiscall CPropertyRestriction::CPropertyRestriction(unsigned long,unsigned long const &,class CMQVariant const &)
??0CPropertyRestriction@@QAE@KABKABVCMQVariant@@@Z
; public: __thiscall CPropertyRestriction::CPropertyRestriction(void)
??0CPropertyRestriction@@QAE@XZ
; public: __thiscall CRestriction::CRestriction(class CRestriction const &)
??0CRestriction@@QAE@ABV0@@Z
; public: __thiscall CRestriction::CRestriction(unsigned int)
??0CRestriction@@QAE@I@Z
; public: __thiscall CSort::CSort(class CSort const &)
??0CSort@@QAE@ABV0@@Z
; public: __thiscall CSort::CSort(unsigned int)
??0CSort@@QAE@I@Z
; public: __thiscall CSortKey::CSortKey(unsigned long const &,unsigned long)
??0CSortKey@@QAE@ABKK@Z
; public: __thiscall CSortKey::CSortKey(void)
??0CSortKey@@QAE@XZ
; public: __thiscall CCancelRpc::~CCancelRpc(void)
??1CCancelRpc@@QAE@XZ
; public: __thiscall CColumns::~CColumns(void)
??1CColumns@@QAE@XZ
; public: __thiscall CDSBaseUpdate::~CDSBaseUpdate(void)
??1CDSBaseUpdate@@QAE@XZ
; public: __thiscall COutputReport::~COutputReport(void)
??1COutputReport@@QAE@XZ
; public: __thiscall CPropertyRestriction::~CPropertyRestriction(void)
??1CPropertyRestriction@@QAE@XZ
; public: __thiscall CRestriction::~CRestriction(void)
??1CRestriction@@QAE@XZ
; public: __thiscall CSort::~CSort(void)
??1CSort@@QAE@XZ
; public: __thiscall CSortKey::~CSortKey(void)
??1CSortKey@@QAE@XZ
; public: class CCancelRpc & __thiscall CCancelRpc::operator=(class CCancelRpc const &)
??4CCancelRpc@@QAEAAV0@ABV0@@Z
; public: class CDSBaseUpdate & __thiscall CDSBaseUpdate::operator=(class CDSBaseUpdate const &)
??4CDSBaseUpdate@@QAEAAV0@ABV0@@Z
; public: class COutputReport & __thiscall COutputReport::operator=(class COutputReport const &)
??4COutputReport@@QAEAAV0@ABV0@@Z
; public: class CPropertyRestriction & __thiscall CPropertyRestriction::operator=(class CPropertyRestriction const &)
??4CPropertyRestriction@@QAEAAV0@ABV0@@Z
; public: class CRestriction & __thiscall CRestriction::operator=(class CRestriction const &)
??4CRestriction@@QAEAAV0@ABV0@@Z
; public: class CSortKey & __thiscall CSortKey::operator=(class CSortKey const &)
??4CSortKey@@QAEAAV0@ABV0@@Z
; public: void __thiscall CColumns::`default constructor closure'(void)
??_FCColumns@@QAEXXZ
; public: void __thiscall CRestriction::`default constructor closure'(void)
??_FCRestriction@@QAEXXZ
; public: void __thiscall CSort::`default constructor closure'(void)
??_FCSort@@QAEXXZ
; public: void __thiscall CCancelRpc::Add(void *,long)
?Add@CCancelRpc@@QAEXPAXJ@Z
; public: void __thiscall CColumns::Add(unsigned long const &)
?Add@CColumns@@QAEXABK@Z
; public: void __thiscall CSort::Add(unsigned long const &,unsigned long)
?Add@CSort@@QAEXABKK@Z
; public: void __thiscall CSort::Add(class CSortKey const &)
?Add@CSort@@QAEXABVCSortKey@@@Z
; public: void __thiscall CRestriction::AddChild(class CPropertyRestriction const &)
?AddChild@CRestriction@@QAEXABVCPropertyRestriction@@@Z
; public: void __thiscall CRestriction::AddRestriction(struct tagBLOB &,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXAAUtagBLOB@@KK@Z
; public: void __thiscall CRestriction::AddRestriction(class CMQVariant const &,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXABVCMQVariant@@KK@Z
; public: void __thiscall CRestriction::AddRestriction(unsigned char,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXEKK@Z
; public: void __thiscall CRestriction::AddRestriction(short,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXFKK@Z
; public: void __thiscall CRestriction::AddRestriction(long,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXJKK@Z
; public: void __thiscall CRestriction::AddRestriction(unsigned long,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXKKK@Z
; public: void __thiscall CRestriction::AddRestriction(unsigned short *,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXPAGKK@Z
; public: void __thiscall CRestriction::AddRestriction(struct _GUID *,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXPAU_GUID@@KK@Z
; public: void __thiscall CRestriction::AddRestriction(struct tagCACLSID *,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXPAUtagCACLSID@@KK@Z
; public: void __thiscall CRestriction::AddRestriction(struct tagCALPWSTR *,unsigned long,unsigned long)
?AddRestriction@CRestriction@@QAEXPAUtagCALPWSTR@@KK@Z
; public: void __thiscall CCancelRpc::CancelRequests(long)
?CancelRequests@CCancelRpc@@QAEXJ@Z
; private: static unsigned long __stdcall CCancelRpc::CancelThread(void *)
?CancelThread@CCancelRpc@@CGKPAX@Z
; public: struct tagMQCOLUMNSET * __thiscall CColumns::CastToStruct(void)
?CastToStruct@CColumns@@QAEPAUtagMQCOLUMNSET@@XZ
; public: struct tagMQRESTRICTION * __thiscall CRestriction::CastToStruct(void)
?CastToStruct@CRestriction@@QAEPAUtagMQRESTRICTION@@XZ
; public: struct tagMQSORTSET * __thiscall CSort::CastToStruct(void)
?CastToStruct@CSort@@QAEPAUtagMQSORTSET@@XZ
; void __stdcall ComposeRPCEndPointName(unsigned short const *,unsigned short const *,unsigned short * *)
?ComposeRPCEndPointName@@YGXPBG0PAPAG@Z
; private: long __thiscall CDSBaseUpdate::CopyProperty(struct tagPROPVARIANT &,struct tagPROPVARIANT *)
?CopyProperty@CDSBaseUpdate@@AAEJAAUtagPROPVARIANT@@PAU2@@Z
; public: unsigned int __thiscall CColumns::Count(void)const 
?Count@CColumns@@QBEIXZ
; public: unsigned int __thiscall CRestriction::Count(void)const 
?Count@CRestriction@@QBEIXZ
; public: unsigned int __thiscall CSort::Count(void)const 
?Count@CSort@@QBEIXZ
; long __stdcall DeleteFalconKeyValue(unsigned short const *)
?DeleteFalconKeyValue@@YGJPBG@Z
; private: void __thiscall CDSBaseUpdate::DeleteProperty(struct tagPROPVARIANT &)
?DeleteProperty@CDSBaseUpdate@@AAEXAAUtagPROPVARIANT@@@Z
FreeContextHandle
; public: unsigned long const & __thiscall CColumns::Get(unsigned int)const 
?Get@CColumns@@QBEABKI@Z
; public: class CSortKey const & __thiscall CSort::Get(unsigned int)const 
?Get@CSort@@QBEABVCSortKey@@I@Z
; public: class CPropertyRestriction const & __thiscall CRestriction::GetChild(unsigned int)const 
?GetChild@CRestriction@@QBEABVCPropertyRestriction@@I@Z
; public: unsigned char __thiscall CDSBaseUpdate::GetCommand(void)
?GetCommand@CDSBaseUpdate@@QAEEXZ
; long __stdcall GetComputerDnsNameInternal(unsigned short *,unsigned long *)
?GetComputerDnsNameInternal@@YGJPAGPAK@Z
; long __stdcall GetComputerNameInternal(unsigned short *,unsigned long *)
?GetComputerNameInternal@@YGJPAGPAK@Z
GetDomainFQDNName
; long __stdcall GetFalconKey(unsigned short const *,struct HKEY__ * *)
?GetFalconKey@@YGJPBGPAPAUHKEY__@@@Z
GetFalconKeyValue
; unsigned short const * __stdcall GetFalconSectionName(void)
?GetFalconSectionName@@YGPBGXZ
; unsigned long __stdcall GetFalconServiceName(unsigned short *,unsigned long)
?GetFalconServiceName@@YGKPAGK@Z
; public: struct _GUID * __thiscall CDSBaseUpdate::GetGuidIdentifier(void)
?GetGuidIdentifier@CDSBaseUpdate@@QAEPAU_GUID@@XZ
; public: struct _GUID const * __thiscall CDSBaseUpdate::GetMasterId(void)
?GetMasterId@CDSBaseUpdate@@QAEPBU_GUID@@XZ
; public: unsigned long __thiscall CDSBaseUpdate::GetObjectType(void)
?GetObjectType@CDSBaseUpdate@@QAEKXZ
; public: unsigned long __thiscall CSortKey::GetOrder(void)const 
?GetOrder@CSortKey@@QBEKXZ
; public: unsigned short * __thiscall CDSBaseUpdate::GetPathName(void)
?GetPathName@CDSBaseUpdate@@QAEPAGXZ
; public: class CSeqNum const & __thiscall CDSBaseUpdate::GetPrevSeqNum(void)const 
?GetPrevSeqNum@CDSBaseUpdate@@QBEABVCSeqNum@@XZ
; public: unsigned long const & __thiscall CSortKey::GetProperty(void)const 
?GetProperty@CSortKey@@QBEABKXZ
; public: unsigned long * __thiscall CDSBaseUpdate::GetProps(void)
?GetProps@CDSBaseUpdate@@QAEPAKXZ
; public: class CSeqNum const & __thiscall CDSBaseUpdate::GetPurgeSeqNum(void)const 
?GetPurgeSeqNum@CDSBaseUpdate@@QBEABVCSeqNum@@XZ
; public: class CSeqNum const & __thiscall CDSBaseUpdate::GetSeqNum(void)const 
?GetSeqNum@CDSBaseUpdate@@QBEABVCSeqNum@@XZ
; public: long __thiscall CDSBaseUpdate::GetSerializeSize(unsigned long *)
?GetSerializeSize@CDSBaseUpdate@@QAEJPAK@Z
GetSizes
; long __stdcall GetThisServerIpPort(unsigned short *,unsigned long)
?GetThisServerIpPort@@YGJPAGK@Z
; public: struct tagPROPVARIANT * __thiscall CDSBaseUpdate::GetVars(void)
?GetVars@CDSBaseUpdate@@QAEPAUtagPROPVARIANT@@XZ
; private: void __thiscall CRestriction::Grow(void)
?Grow@CRestriction@@AAEXXZ
; long __stdcall HashMessageProperties(unsigned long,unsigned char const *,unsigned long,unsigned long,unsigned char const *,unsigned long,unsigned short const *,unsigned long,struct QUEUE_FORMAT const *,struct QUEUE_FORMAT const *)
?HashMessageProperties@@YGJKPBEKK0KPBGKPBUQUEUE_FORMAT@@2@Z
; long __stdcall HashProperties(unsigned long,unsigned long,unsigned long *,struct tagPROPVARIANT *)
?HashProperties@@YGJKKPAKPAUtagPROPVARIANT@@@Z
; public: void __thiscall CCancelRpc::Init(void)
?Init@CCancelRpc@@QAEXXZ
; public: long __thiscall CDSBaseUpdate::Init(unsigned char const *,unsigned long *,int)
?Init@CDSBaseUpdate@@QAEJPBEPAKH@Z
; public: long __thiscall CDSBaseUpdate::Init(struct _GUID const *,class CSeqNum const &,class CSeqNum const &,class CSeqNum const &,int,unsigned char,unsigned long,struct _GUID const *,unsigned long,unsigned long *,struct tagPROPVARIANT *)
?Init@CDSBaseUpdate@@QAEJPBU_GUID@@ABVCSeqNum@@11HEK0KPAKPAUtagPROPVARIANT@@@Z
; public: long __thiscall CDSBaseUpdate::Init(struct _GUID const *,class CSeqNum const &,class CSeqNum const &,class CSeqNum const &,int,unsigned char,unsigned long,unsigned short *,unsigned long,unsigned long *,struct tagPROPVARIANT *)
?Init@CDSBaseUpdate@@QAEJPBU_GUID@@ABVCSeqNum@@11HEKPAGKPAKPAUtagPROPVARIANT@@@Z
; private: long __thiscall CDSBaseUpdate::InitProperty(unsigned char const *,unsigned long *,unsigned long,struct tagPROPVARIANT &)
?InitProperty@CDSBaseUpdate@@AAEJPBEPAKKAAUtagPROPVARIANT@@@Z
; bool __stdcall IsLocalSystemCluster(void)
?IsLocalSystemCluster@@YG_NXZ
; public: void __thiscall COutputReport::KeepErrorHistory(unsigned short const *,unsigned short,long)
?KeepErrorHistory@COutputReport@@QAEXPBGGJ@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 __stdcall MQSetCaConfig(unsigned long,class MQ_CA_CONFIG *)
?MQSetCaConfig@@YGJKPAVMQ_CA_CONFIG@@@Z
MQSigHashMessageProperties
MQUInitGlobalScurityVars
MQsspi_InitServerAuthntication
; private: void __thiscall CCancelRpc::ProcessEvents(void)
?ProcessEvents@CCancelRpc@@AAEXXZ
; void __stdcall ProduceRPCErrorTracing(unsigned short *,unsigned long)
?ProduceRPCErrorTracing@@YGXPAGK@Z
; public: unsigned long __thiscall CPropertyRestriction::Relation(void)
?Relation@CPropertyRestriction@@QAEKXZ
; public: void __thiscall CCancelRpc::Remove(void *)
?Remove@CCancelRpc@@QAEXPAX@Z
; public: void __thiscall CColumns::Remove(unsigned int)
?Remove@CColumns@@QAEXI@Z
; public: void __thiscall CSort::Remove(unsigned int)
?Remove@CSort@@QAEXI@Z
; class COutputReport  Report
?Report@@3VCOutputReport@@A DATA
; public: unsigned long __thiscall CCancelRpc::RpcCancelTimeout(void)
?RpcCancelTimeout@CCancelRpc@@QAEKXZ
; public: long __thiscall CDSBaseUpdate::Serialize(unsigned char *,unsigned long *,int)
?Serialize@CDSBaseUpdate@@QAEJPAEPAKH@Z
; private: long __thiscall CDSBaseUpdate::SerializeProperty(struct tagPROPVARIANT &,unsigned char *,unsigned long *)
?SerializeProperty@CDSBaseUpdate@@AAEJAAUtagPROPVARIANT@@PAEPAK@Z
ServerAcceptSecCtx
; public: void __thiscall CRestriction::SetChild(class CPropertyRestriction const &,unsigned int)
?SetChild@CRestriction@@QAEXABVCPropertyRestriction@@I@Z
SetFalconKeyValue
SetFalconServiceName
; public: void __thiscall CSortKey::SetOrder(unsigned long const &)
?SetOrder@CSortKey@@QAEXABK@Z
; public: void __thiscall CDSBaseUpdate::SetPrevSeqNum(class CSeqNum &)
?SetPrevSeqNum@CDSBaseUpdate@@QAEXAAVCSeqNum@@@Z
; public: void __thiscall CPropertyRestriction::SetProperty(unsigned long const &)
?SetProperty@CPropertyRestriction@@QAEXABK@Z
; public: void __thiscall CSortKey::SetProperty(unsigned long const &)
?SetProperty@CSortKey@@QAEXABK@Z
; public: void __thiscall CPropertyRestriction::SetRelation(unsigned long)
?SetRelation@CPropertyRestriction@@QAEXK@Z
; public: void __thiscall CPropertyRestriction::SetValue(struct tagBLOB &)
?SetValue@CPropertyRestriction@@QAEXAAUtagBLOB@@@Z
; public: void __thiscall CPropertyRestriction::SetValue(class CMQVariant const &)
?SetValue@CPropertyRestriction@@QAEXABVCMQVariant@@@Z
; public: void __thiscall CPropertyRestriction::SetValue(unsigned char)
?SetValue@CPropertyRestriction@@QAEXE@Z
; public: void __thiscall CPropertyRestriction::SetValue(short)
?SetValue@CPropertyRestriction@@QAEXF@Z
; public: void __thiscall CPropertyRestriction::SetValue(long)
?SetValue@CPropertyRestriction@@QAEXJ@Z
; public: void __thiscall CPropertyRestriction::SetValue(unsigned long)
?SetValue@CPropertyRestriction@@QAEXK@Z
; public: void __thiscall CPropertyRestriction::SetValue(unsigned short *)
?SetValue@CPropertyRestriction@@QAEXPAG@Z
; public: void __thiscall CPropertyRestriction::SetValue(struct _GUID *)
?SetValue@CPropertyRestriction@@QAEXPAU_GUID@@@Z
; public: void __thiscall CPropertyRestriction::SetValue(struct tagCACLSID *)
?SetValue@CPropertyRestriction@@QAEXPAUtagCACLSID@@@Z
; public: void __thiscall CPropertyRestriction::SetValue(struct tagCALPWSTR *)
?SetValue@CPropertyRestriction@@QAEXPAUtagCALPWSTR@@@Z
; public: void __thiscall CCancelRpc::ShutDownCancelThread(void)
?ShutDownCancelThread@CCancelRpc@@QAEXXZ
ShutDownDebugWindow
; unsigned int __stdcall UnalignedWcslen(unsigned short const *)
?UnalignedWcslen@@YGIPBG@Z
; public: class CMQVariant const & __thiscall CPropertyRestriction::Value(void)
?Value@CPropertyRestriction@@QAEABVCMQVariant@@XZ
; long __stdcall XactGetDTC(struct IUnknown * *)
?XactGetDTC@@YGJPAPAUIUnknown@@@Z
; long __stdcall XactGetWhereabouts(unsigned long *,unsigned char *)
?XactGetWhereabouts@@YGJPAKPAE@Z
; class CCancelRpc  g_CancelRpc
?g_CancelRpc@@3VCCancelRpc@@A DATA
; class CHCryptProv  g_hProvVer
?g_hProvVer@@3VCHCryptProv@@A DATA
; public: unsigned char __thiscall CDSBaseUpdate::getNumOfProps(void)
?getNumOfProps@CDSBaseUpdate@@QAEEXZ
; long __stdcall mqrpcBindQMService(unsigned short *,unsigned short *,unsigned long *,void * *,enum PORTTYPE,unsigned long (__stdcall*)(void *,unsigned long),unsigned long)
?mqrpcBindQMService@@YGJPAG0PAKPAPAXW4PORTTYPE@@P6GKPAXK@ZK@Z
; unsigned long __stdcall mqrpcGetLocalCallPID(void *)
?mqrpcGetLocalCallPID@@YGKPAX@Z
; int __stdcall mqrpcIsLocalCall(void *)
?mqrpcIsLocalCall@@YGHPAX@Z
; int __stdcall mqrpcIsTcpipTransport(void *)
?mqrpcIsTcpipTransport@@YGHPAX@Z
; long __stdcall mqrpcUnbindQMService(void * *,unsigned short * *)
?mqrpcUnbindQMService@@YGJPAPAXPAPAG@Z
MQSigCloneCertFromReg
MQSigCloneCertFromSysStore
MQSigCreateCertificate
MQSigOpenUserCertStore
MSMQGetOperatingSystem
