; 
; Exports of file query.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY query.dll
EXPORTS
; class CCoTaskAllocator  CoTaskAllocator
?CoTaskAllocator@@3VCCoTaskAllocator@@A DATA
; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct tagPROPVARIANT & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
??0CAllocStorageVariant@@QEAA@AEAUtagPROPVARIANT@@AEAVPMemoryAllocator@@@Z
; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(class PDeSerStream & __ptr64,class PMemoryAllocator & __ptr64) __ptr64
??0CAllocStorageVariant@@QEAA@AEAVPDeSerStream@@AEAVPMemoryAllocator@@@Z
; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(char const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
??0CAllocStorageVariant@@QEAA@PEBDAEAVPMemoryAllocator@@@Z
; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(unsigned short const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
??0CAllocStorageVariant@@QEAA@PEBGAEAVPMemoryAllocator@@@Z
; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(struct _GUID const * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
??0CAllocStorageVariant@@QEAA@PEBU_GUID@@AEAVPMemoryAllocator@@@Z
; public: __cdecl CAllocStorageVariant::CAllocStorageVariant(enum VARENUM,unsigned long,class PMemoryAllocator & __ptr64) __ptr64
??0CAllocStorageVariant@@QEAA@W4VARENUM@@KAEAVPMemoryAllocator@@@Z
; public: __cdecl CCatState::CCatState(void) __ptr64
??0CCatState@@QEAA@XZ
; public: __cdecl CCategorizationSet::CCategorizationSet(class CCategorizationSet const & __ptr64) __ptr64
??0CCategorizationSet@@QEAA@AEBV0@@Z
; public: __cdecl CCategorizationSet::CCategorizationSet(unsigned int) __ptr64
??0CCategorizationSet@@QEAA@I@Z
; public: __cdecl CCiAdminParams::CCiAdminParams(class CLangList * __ptr64) __ptr64
??0CCiAdminParams@@QEAA@PEAVCLangList@@@Z
; public: __cdecl CCiRegParams::CCiRegParams(unsigned short const * __ptr64) __ptr64
??0CCiRegParams@@QEAA@PEBG@Z
; public: __cdecl CColumnSet::CColumnSet(unsigned int) __ptr64
??0CColumnSet@@QEAA@I@Z
; 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 CContentRestriction::CContentRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long,unsigned long) __ptr64
??0CContentRestriction@@QEAA@PEBGAEBVCFullPropSpec@@KK@Z
; public: __cdecl CDFA::CDFA(unsigned short const * __ptr64,class CTimeLimit & __ptr64,unsigned char) __ptr64
??0CDFA@@QEAA@PEBGAEAVCTimeLimit@@E@Z
; public: __cdecl CDbColId::CDbColId(struct _GUID const & __ptr64,unsigned short const * __ptr64) __ptr64
??0CDbColId@@QEAA@AEBU_GUID@@PEBG@Z
; public: __cdecl CDbColId::CDbColId(struct tagDBID const & __ptr64) __ptr64
??0CDbColId@@QEAA@AEBUtagDBID@@@Z
; public: __cdecl CDbColId::CDbColId(class CDbColId const & __ptr64) __ptr64
??0CDbColId@@QEAA@AEBV0@@Z
; public: __cdecl CDbColId::CDbColId(void) __ptr64
??0CDbColId@@QEAA@XZ
; public: __cdecl CDbColumns::CDbColumns(unsigned int) __ptr64
??0CDbColumns@@QEAA@I@Z
; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long,unsigned long) __ptr64
??0CDbContentRestriction@@QEAA@PEBGAEBUtagDBID@@KK@Z
; public: __cdecl CDbContentRestriction::CDbContentRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long,unsigned long) __ptr64
??0CDbContentRestriction@@QEAA@PEBGAEBVCDbColumnNode@@KK@Z
; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,struct tagDBID const & __ptr64,unsigned long) __ptr64
??0CDbNatLangRestriction@@QEAA@PEBGAEBUtagDBID@@K@Z
; public: __cdecl CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const * __ptr64,class CDbColumnNode const & __ptr64,unsigned long) __ptr64
??0CDbNatLangRestriction@@QEAA@PEBGAEBVCDbColumnNode@@K@Z
; public: __cdecl CDbQueryResults::CDbQueryResults(void) __ptr64
??0CDbQueryResults@@QEAA@XZ
; public: __cdecl CDbSelectNode::CDbSelectNode(void) __ptr64
??0CDbSelectNode@@QEAA@XZ
; public: __cdecl CDbSortSet::CDbSortSet(unsigned int) __ptr64
??0CDbSortSet@@QEAA@I@Z
; public: __cdecl CDefColumnRegEntry::CDefColumnRegEntry(void) __ptr64
??0CDefColumnRegEntry@@QEAA@XZ
; public: __cdecl CDriveInfo::CDriveInfo(unsigned short const * __ptr64,unsigned long) __ptr64
??0CDriveInfo@@QEAA@PEBGK@Z
; public: __cdecl CDynStream::CDynStream(class PMmStream * __ptr64) __ptr64
??0CDynStream@@QEAA@PEAVPMmStream@@@Z
; public: __cdecl CEventItem::CEventItem(unsigned short,unsigned short,unsigned long,unsigned short,unsigned long,void const * __ptr64) __ptr64
??0CEventItem@@QEAA@GGKGKPEBX@Z
; public: __cdecl CEventLog::CEventLog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
??0CEventLog@@QEAA@PEBG0@Z
; public: __cdecl CException::CException(long) __ptr64
??0CException@@QEAA@J@Z
; public: __cdecl CException::CException(void) __ptr64
??0CException@@QEAA@XZ
; public: __cdecl CFileBuffer::CFileBuffer(class CFileMapView & __ptr64,unsigned int) __ptr64
??0CFileBuffer@@QEAA@AEAVCFileMapView@@I@Z
; public: __cdecl CFileMapView::CFileMapView(unsigned short const * __ptr64) __ptr64
??0CFileMapView@@QEAA@PEBG@Z
; public: __cdecl CFilterDaemon::CFilterDaemon(class CiProxy & __ptr64,class CCiFrameworkParams & __ptr64,class CLangList & __ptr64,unsigned char * __ptr64,unsigned long,struct ICiCFilterClient * __ptr64) __ptr64
??0CFilterDaemon@@QEAA@AEAVCiProxy@@AEAVCCiFrameworkParams@@AEAVCLangList@@PEAEKPEAUICiCFilterClient@@@Z
; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64) __ptr64
??0CFullPath@@QEAA@PEBG@Z
; public: __cdecl CFullPath::CFullPath(unsigned short const * __ptr64,unsigned int) __ptr64
??0CFullPath@@QEAA@PEBGI@Z
; public: __cdecl CFullPropSpec::CFullPropSpec(class PDeSerStream & __ptr64) __ptr64
??0CFullPropSpec@@QEAA@AEAVPDeSerStream@@@Z
; public: __cdecl CFullPropSpec::CFullPropSpec(class CFullPropSpec const & __ptr64) __ptr64
??0CFullPropSpec@@QEAA@AEBV0@@Z
; public: __cdecl CFullPropSpec::CFullPropSpec(void) __ptr64
??0CFullPropSpec@@QEAA@XZ
; public: __cdecl CFwAsyncWorkItem::CFwAsyncWorkItem(class CWorkManager & __ptr64,class CWorkQueue & __ptr64) __ptr64
??0CFwAsyncWorkItem@@QEAA@AEAVCWorkManager@@AEAVCWorkQueue@@@Z
; public: __cdecl CFwEventItem::CFwEventItem(unsigned short,unsigned long,unsigned short,unsigned long,void * __ptr64) __ptr64
??0CFwEventItem@@QEAA@GKGKPEAX@Z
; public: __cdecl CGenericCiProxy::CGenericCiProxy(class CSharedNameGen & __ptr64,unsigned long,unsigned long) __ptr64
??0CGenericCiProxy@@QEAA@AEAVCSharedNameGen@@KK@Z
; public: __cdecl CGetDbProps::CGetDbProps(void) __ptr64
??0CGetDbProps@@QEAA@XZ
; public: __cdecl CImpersonateRemoteAccess::CImpersonateRemoteAccess(class CImpersonationTokenCache * __ptr64) __ptr64
??0CImpersonateRemoteAccess@@QEAA@PEAVCImpersonationTokenCache@@@Z
; public: __cdecl CImpersonationTokenCache::CImpersonationTokenCache(unsigned short const * __ptr64) __ptr64
??0CImpersonationTokenCache@@QEAA@PEBG@Z
; public: __cdecl CIndexTable::CIndexTable(class CiStorage & __ptr64,class CTransaction & __ptr64) __ptr64
??0CIndexTable@@QEAA@AEAVCiStorage@@AEAVCTransaction@@@Z
; public: __cdecl CInternalPropertyRestriction::CInternalPropertyRestriction(unsigned long,unsigned long,class CStorageVariant const & __ptr64,class CRestriction * __ptr64) __ptr64
??0CInternalPropertyRestriction@@QEAA@KKAEBVCStorageVariant@@PEAVCRestriction@@@Z
; public: __cdecl CKeyArray::CKeyArray(int,int) __ptr64
??0CKeyArray@@QEAA@HH@Z
; public: __cdecl CLangList::CLangList(struct ICiCLangRes * __ptr64,unsigned long) __ptr64
??0CLangList@@QEAA@PEAUICiCLangRes@@K@Z
; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(unsigned long) __ptr64
??0CLocalGlobalPropertyList@@QEAA@K@Z
; public: __cdecl CLocalGlobalPropertyList::CLocalGlobalPropertyList(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
??0CLocalGlobalPropertyList@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
; public: __cdecl CMachineAdmin::CMachineAdmin(unsigned short const * __ptr64,int) __ptr64
??0CMachineAdmin@@QEAA@PEBGH@Z
; public: __cdecl CMemSerStream::CMemSerStream(unsigned int) __ptr64
??0CMemSerStream@@QEAA@I@Z
; public: __cdecl CMemSerStream::CMemSerStream(unsigned char * __ptr64,unsigned long) __ptr64
??0CMemSerStream@@QEAA@PEAEK@Z
; public: __cdecl CMetaDataMgr::CMetaDataMgr(int,enum CiVRootTypeEnum,unsigned long,unsigned short const * __ptr64) __ptr64
??0CMetaDataMgr@@QEAA@HW4CiVRootTypeEnum@@KPEBG@Z
; public: __cdecl CMmStream::CMmStream(unsigned long,int) __ptr64
??0CMmStream@@QEAA@KH@Z
; public: __cdecl CMmStreamConsecBuf::CMmStreamConsecBuf(void) __ptr64
??0CMmStreamConsecBuf@@QEAA@XZ
; public: __cdecl CNatLanguageRestriction::CNatLanguageRestriction(unsigned short const * __ptr64,class CFullPropSpec const & __ptr64,unsigned long) __ptr64
??0CNatLanguageRestriction@@QEAA@PEBGAEBVCFullPropSpec@@K@Z
; public: __cdecl CNodeRestriction::CNodeRestriction(unsigned long,unsigned int) __ptr64
??0CNodeRestriction@@QEAA@KI@Z
; public: __cdecl CNormalizer::CNormalizer(class PNoiseList & __ptr64) __ptr64
??0CNormalizer@@QEAA@AEAVPNoiseList@@@Z
; public: __cdecl CPathParser::CPathParser(unsigned short const * __ptr64,unsigned long) __ptr64
??0CPathParser@@QEAA@PEBGK@Z
; public: __cdecl CPerfMon::CPerfMon(unsigned short const * __ptr64) __ptr64
??0CPerfMon@@QEAA@PEBG@Z
; public: __cdecl CPersDeComp::CPersDeComp(class PDirectory & __ptr64,unsigned long,class CPhysIndex & __ptr64,unsigned long,int,int) __ptr64
??0CPersDeComp@@QEAA@AEAVPDirectory@@KAEAVCPhysIndex@@KHH@Z
; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,unsigned int,class PMmStream * __ptr64,int,unsigned int,int) __ptr64
??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KIPEAVPMmStream@@HIH@Z
; protected: __cdecl CPhysStorage::CPhysStorage(class PStorage & __ptr64,class PStorageObject & __ptr64,unsigned long,class PMmStream * __ptr64,enum CPhysStorage::EOpenMode,int,unsigned int,int) __ptr64
??0CPhysStorage@@IEAA@AEAVPStorage@@AEAVPStorageObject@@KPEAVPMmStream@@W4EOpenMode@1@HIH@Z
; public: __cdecl CPidLookupTable::CPidLookupTable(void) __ptr64
??0CPidLookupTable@@QEAA@XZ
; public: __cdecl CPidRemapper::CPidRemapper(class XInterface<struct IPropertyMapper> & __ptr64) __ptr64
??0CPidRemapper@@QEAA@AEAV?$XInterface@UIPropertyMapper@@@@@Z
; public: __cdecl CPidRemapper::CPidRemapper(class CPidMapper const & __ptr64,class XInterface<struct IPropertyMapper> & __ptr64,class CRestriction * __ptr64,class CColumnSet * __ptr64,class CSortSet * __ptr64) __ptr64
??0CPidRemapper@@QEAA@AEBVCPidMapper@@AEAV?$XInterface@UIPropertyMapper@@@@PEAVCRestriction@@PEAVCColumnSet@@PEAVCSortSet@@@Z
; public: __cdecl CPropListFile::CPropListFile(class CEmptyPropertyList * __ptr64,int,unsigned short const * __ptr64,unsigned long) __ptr64
??0CPropListFile@@QEAA@PEAVCEmptyPropertyList@@HPEBGK@Z
; public: __cdecl CPropNameArray::CPropNameArray(class PDeSerStream & __ptr64) __ptr64
??0CPropNameArray@@QEAA@AEAVPDeSerStream@@@Z
; public: __cdecl CPropNameArray::CPropNameArray(unsigned int) __ptr64
??0CPropNameArray@@QEAA@I@Z
; public: __cdecl CPropStoreManager::CPropStoreManager(unsigned long) __ptr64
??0CPropStoreManager@@QEAA@K@Z
; public: __cdecl CPropertyRestriction::CPropertyRestriction(unsigned long,class CFullPropSpec const & __ptr64,class CStorageVariant const & __ptr64) __ptr64
??0CPropertyRestriction@@QEAA@KAEBVCFullPropSpec@@AEBVCStorageVariant@@@Z
; public: __cdecl CPropertyRestriction::CPropertyRestriction(void) __ptr64
??0CPropertyRestriction@@QEAA@XZ
; public: __cdecl CPropertyStoreWids::CPropertyStoreWids(class CPropStoreManager & __ptr64) __ptr64
??0CPropertyStoreWids@@QEAA@AEAVCPropStoreManager@@@Z
; public: __cdecl CPropertyValueParser::CPropertyValueParser(class CQueryScanner & __ptr64,unsigned short,unsigned long) __ptr64
??0CPropertyValueParser@@QEAA@AEAVCQueryScanner@@GK@Z
; public: __cdecl CQueryScanner::CQueryScanner(unsigned short const * __ptr64,int,unsigned long,int) __ptr64
??0CQueryScanner@@QEAA@PEBGHKH@Z
; public: __cdecl CRangeKeyRepository::CRangeKeyRepository(void) __ptr64
??0CRangeKeyRepository@@QEAA@XZ
; public: __cdecl CRcovStrmAppendTrans::CRcovStrmAppendTrans(class PRcovStorageObj & __ptr64) __ptr64
??0CRcovStrmAppendTrans@@QEAA@AEAVPRcovStorageObj@@@Z
; public: __cdecl CRcovStrmMDTrans::CRcovStrmMDTrans(class PRcovStorageObj & __ptr64,enum CRcovStrmMDTrans::MDOp,unsigned long) __ptr64
??0CRcovStrmMDTrans@@QEAA@AEAVPRcovStorageObj@@W4MDOp@0@K@Z
; protected: __cdecl CRcovStrmTrans::CRcovStrmTrans(class PRcovStorageObj & __ptr64,enum RcovOpType) __ptr64
??0CRcovStrmTrans@@IEAA@AEAVPRcovStorageObj@@W4RcovOpType@@@Z
; public: __cdecl CRegAccess::CRegAccess(unsigned long,unsigned short const * __ptr64) __ptr64
??0CRegAccess@@QEAA@KPEBG@Z
; public: __cdecl CRegChangeEvent::CRegChangeEvent(unsigned short const * __ptr64,int) __ptr64
??0CRegChangeEvent@@QEAA@PEBGH@Z
; public: __cdecl CRegNotify::CRegNotify(unsigned short const * __ptr64) __ptr64
??0CRegNotify@@QEAA@PEBG@Z
; public: __cdecl CRequestClient::CRequestClient(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
??0CRequestClient@@QEAA@PEBGPEAUIDBProperties@@@Z
; public: __cdecl CRequestQueue::CRequestQueue(unsigned int,unsigned int,unsigned int,int,unsigned int,unsigned int,struct _GUID const & __ptr64) __ptr64
??0CRequestQueue@@QEAA@IIIHIIAEBU_GUID@@@Z
; public: __cdecl CScopeRestriction::CScopeRestriction(unsigned short const * __ptr64,int,int) __ptr64
??0CScopeRestriction@@QEAA@PEBGHH@Z
; public: __cdecl CSdidLookupTable::CSdidLookupTable(void) __ptr64
??0CSdidLookupTable@@QEAA@XZ
; public: __cdecl CSizeSerStream::CSizeSerStream(void) __ptr64
??0CSizeSerStream@@QEAA@XZ
; public: __cdecl CSort::CSort(unsigned int) __ptr64
??0CSort@@QEAA@I@Z
; public: __cdecl CSortSet::CSortSet(unsigned int) __ptr64
??0CSortSet@@QEAA@I@Z
; public: __cdecl CStandardPropMapper::CStandardPropMapper(void) __ptr64
??0CStandardPropMapper@@QEAA@XZ
; public: __cdecl CSvcQuery::CSvcQuery(unsigned short const * __ptr64,struct IDBProperties * __ptr64) __ptr64
??0CSvcQuery@@QEAA@PEBGPEAUIDBProperties@@@Z
; public: __cdecl CSynRestriction::CSynRestriction(class CKey const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
??0CSynRestriction@@QEAA@AEBVCKey@@KKKH@Z
; public: __cdecl CTimeLimit::CTimeLimit(unsigned long,unsigned long) __ptr64
??0CTimeLimit@@QEAA@KK@Z
; public: __cdecl CTransaction::CTransaction(void) __ptr64
??0CTransaction@@QEAA@XZ
; public: __cdecl CUnfilteredRestriction::CUnfilteredRestriction(void) __ptr64
??0CUnfilteredRestriction@@QEAA@XZ
; public: __cdecl CValueNormalizer::CValueNormalizer(class PKeyRepository & __ptr64) __ptr64
??0CValueNormalizer@@QEAA@AEAVPKeyRepository@@@Z
; public: __cdecl CVirtualString::CVirtualString(unsigned int) __ptr64
??0CVirtualString@@QEAA@I@Z
; public: __cdecl CWin32RegAccess::CWin32RegAccess(struct HKEY__ * __ptr64,unsigned short const * __ptr64) __ptr64
??0CWin32RegAccess@@QEAA@PEAUHKEY__@@PEBG@Z
; public: __cdecl CWordRestriction::CWordRestriction(class CKeyBuf const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
??0CWordRestriction@@QEAA@AEBVCKeyBuf@@KKKH@Z
; public: __cdecl CWorkQueue::CWorkQueue(unsigned int,enum CWorkQueue::WorkQueueType) __ptr64
??0CWorkQueue@@QEAA@IW4WorkQueueType@0@@Z
; public: __cdecl CiStorage::CiStorage(unsigned short const * __ptr64,struct ICiCAdviseStatus & __ptr64,unsigned long,unsigned long,int) __ptr64
??0CiStorage@@QEAA@PEBGAEAUICiCAdviseStatus@@KKH@Z
; public: __cdecl SStorageObject::SStorageObject(class PStorageObject * __ptr64) __ptr64
??0SStorageObject@@QEAA@PEAVPStorageObject@@@Z
; protected: __cdecl CAllocStorageVariant::~CAllocStorageVariant(void) __ptr64
??1CAllocStorageVariant@@IEAA@XZ
; public: __cdecl CCatState::~CCatState(void) __ptr64
??1CCatState@@QEAA@XZ
; public: __cdecl CCatalogAdmin::~CCatalogAdmin(void) __ptr64
??1CCatalogAdmin@@QEAA@XZ
; public: __cdecl CCatalogEnum::~CCatalogEnum(void) __ptr64
??1CCatalogEnum@@QEAA@XZ
; public: __cdecl CColumns::~CColumns(void) __ptr64
??1CColumns@@QEAA@XZ
; public: __cdecl CContentRestriction::~CContentRestriction(void) __ptr64
??1CContentRestriction@@QEAA@XZ
; public: __cdecl CDFA::~CDFA(void) __ptr64
??1CDFA@@QEAA@XZ
; public: __cdecl CDbCmdTreeNode::~CDbCmdTreeNode(void) __ptr64
??1CDbCmdTreeNode@@QEAA@XZ
; public: __cdecl CDbColumns::~CDbColumns(void) __ptr64
??1CDbColumns@@QEAA@XZ
; public: __cdecl CDbPropSet::~CDbPropSet(void) __ptr64
??1CDbPropSet@@QEAA@XZ
; public: __cdecl CDbQueryResults::~CDbQueryResults(void) __ptr64
??1CDbQueryResults@@QEAA@XZ
; public: __cdecl CDbSortSet::~CDbSortSet(void) __ptr64
??1CDbSortSet@@QEAA@XZ
; public: __cdecl CDynStream::~CDynStream(void) __ptr64
??1CDynStream@@QEAA@XZ
; public: __cdecl CEventItem::~CEventItem(void) __ptr64
??1CEventItem@@QEAA@XZ
; public: __cdecl CEventLog::~CEventLog(void) __ptr64
??1CEventLog@@QEAA@XZ
; public: __cdecl CFileMapView::~CFileMapView(void) __ptr64
??1CFileMapView@@QEAA@XZ
; public: __cdecl CFilterDaemon::~CFilterDaemon(void) __ptr64
??1CFilterDaemon@@QEAA@XZ
; public: virtual __cdecl CFwAsyncWorkItem::~CFwAsyncWorkItem(void) __ptr64
??1CFwAsyncWorkItem@@UEAA@XZ
; public: __cdecl CFwEventItem::~CFwEventItem(void) __ptr64
??1CFwEventItem@@QEAA@XZ
; public: virtual __cdecl CGenericCiProxy::~CGenericCiProxy(void) __ptr64
??1CGenericCiProxy@@UEAA@XZ
; public: __cdecl CImpersonateClient::~CImpersonateClient(void) __ptr64
??1CImpersonateClient@@QEAA@XZ
; public: __cdecl CImpersonateSystem::~CImpersonateSystem(void) __ptr64
??1CImpersonateSystem@@QEAA@XZ
; public: __cdecl CImpersonationTokenCache::~CImpersonationTokenCache(void) __ptr64
??1CImpersonationTokenCache@@QEAA@XZ
; public: __cdecl CInternalPropertyRestriction::~CInternalPropertyRestriction(void) __ptr64
??1CInternalPropertyRestriction@@QEAA@XZ
; public: __cdecl CKeyArray::~CKeyArray(void) __ptr64
??1CKeyArray@@QEAA@XZ
; public: __cdecl CLangList::~CLangList(void) __ptr64
??1CLangList@@QEAA@XZ
; public: __cdecl CMachineAdmin::~CMachineAdmin(void) __ptr64
??1CMachineAdmin@@QEAA@XZ
; public: virtual __cdecl CMemSerStream::~CMemSerStream(void) __ptr64
??1CMemSerStream@@UEAA@XZ
; public: __cdecl CMetaDataMgr::~CMetaDataMgr(void) __ptr64
??1CMetaDataMgr@@QEAA@XZ
; public: virtual __cdecl CMmStream::~CMmStream(void) __ptr64
??1CMmStream@@UEAA@XZ
; public: __cdecl CMmStreamConsecBuf::~CMmStreamConsecBuf(void) __ptr64
??1CMmStreamConsecBuf@@QEAA@XZ
; public: __cdecl CNatLanguageRestriction::~CNatLanguageRestriction(void) __ptr64
??1CNatLanguageRestriction@@QEAA@XZ
; public: __cdecl CNodeRestriction::~CNodeRestriction(void) __ptr64
??1CNodeRestriction@@QEAA@XZ
; public: __cdecl CNotRestriction::~CNotRestriction(void) __ptr64
??1CNotRestriction@@QEAA@XZ
; public: __cdecl COccRestriction::~COccRestriction(void) __ptr64
??1COccRestriction@@QEAA@XZ
; public: __cdecl CParseCommandTree::~CParseCommandTree(void) __ptr64
??1CParseCommandTree@@QEAA@XZ
; public: __cdecl CPerfMon::~CPerfMon(void) __ptr64
??1CPerfMon@@QEAA@XZ
; public: __cdecl CPhraseRestriction::~CPhraseRestriction(void) __ptr64
??1CPhraseRestriction@@QEAA@XZ
; public: virtual __cdecl CPhysStorage::~CPhysStorage(void) __ptr64
??1CPhysStorage@@UEAA@XZ
; public: __cdecl CPidLookupTable::~CPidLookupTable(void) __ptr64
??1CPidLookupTable@@QEAA@XZ
; public: __cdecl CPidRemapper::~CPidRemapper(void) __ptr64
??1CPidRemapper@@QEAA@XZ
; public: __cdecl CProcess::~CProcess(void) __ptr64
??1CProcess@@QEAA@XZ
; public: __cdecl CPropStoreManager::~CPropStoreManager(void) __ptr64
??1CPropStoreManager@@QEAA@XZ
; public: virtual __cdecl CPropertyList::~CPropertyList(void) __ptr64
??1CPropertyList@@UEAA@XZ
; public: __cdecl CPropertyRestriction::~CPropertyRestriction(void) __ptr64
??1CPropertyRestriction@@QEAA@XZ
; public: __cdecl CPropertyStore::~CPropertyStore(void) __ptr64
??1CPropertyStore@@QEAA@XZ
; public: __cdecl CPropertyStoreWids::~CPropertyStoreWids(void) __ptr64
??1CPropertyStoreWids@@QEAA@XZ
; public: __cdecl CQueryUnknown::~CQueryUnknown(void) __ptr64
??1CQueryUnknown@@QEAA@XZ
; public: virtual __cdecl CRangeKeyRepository::~CRangeKeyRepository(void) __ptr64
??1CRangeKeyRepository@@UEAA@XZ
; public: __cdecl CRegChangeEvent::~CRegChangeEvent(void) __ptr64
??1CRegChangeEvent@@QEAA@XZ
; protected: virtual __cdecl CRegNotify::~CRegNotify(void) __ptr64
??1CRegNotify@@MEAA@XZ
; public: __cdecl CRestriction::~CRestriction(void) __ptr64
??1CRestriction@@QEAA@XZ
; public: __cdecl CScopeAdmin::~CScopeAdmin(void) __ptr64
??1CScopeAdmin@@QEAA@XZ
; public: __cdecl CScopeEnum::~CScopeEnum(void) __ptr64
??1CScopeEnum@@QEAA@XZ
; public: __cdecl CScopeRestriction::~CScopeRestriction(void) __ptr64
??1CScopeRestriction@@QEAA@XZ
; public: __cdecl CSdidLookupTable::~CSdidLookupTable(void) __ptr64
??1CSdidLookupTable@@QEAA@XZ
; public: virtual __cdecl CSizeSerStream::~CSizeSerStream(void) __ptr64
??1CSizeSerStream@@UEAA@XZ
; public: __cdecl CSort::~CSort(void) __ptr64
??1CSort@@QEAA@XZ
; public: __cdecl CSynRestriction::~CSynRestriction(void) __ptr64
??1CSynRestriction@@QEAA@XZ
; public: __cdecl CVirtualString::~CVirtualString(void) __ptr64
??1CVirtualString@@QEAA@XZ
; public: __cdecl CWin32RegAccess::~CWin32RegAccess(void) __ptr64
??1CWin32RegAccess@@QEAA@XZ
; public: __cdecl CWordRestriction::~CWordRestriction(void) __ptr64
??1CWordRestriction@@QEAA@XZ
; public: __cdecl CWorkManager::~CWorkManager(void) __ptr64
??1CWorkManager@@QEAA@XZ
; public: __cdecl CWorkQueue::~CWorkQueue(void) __ptr64
??1CWorkQueue@@QEAA@XZ
; public: __cdecl SStorageObject::~SStorageObject(void) __ptr64
??1SStorageObject@@QEAA@XZ
; public: class CDbColId & __ptr64 __cdecl CDbColId::operator=(class CDbColId const & __ptr64) __ptr64
??4CDbColId@@QEAAAEAV0@AEBV0@@Z
; public: int __cdecl CDbColId::operator==(class CDbColId const & __ptr64)const  __ptr64
??8CDbColId@@QEBAHAEBV0@@Z
; public: void __cdecl CWorkManager::AbortWorkItems(void) __ptr64
?AbortWorkItems@CWorkManager@@QEAAXXZ
; public: void __cdecl CQueryScanner::Accept(void) __ptr64
?Accept@CQueryScanner@@QEAAXXZ
; public: void __cdecl CQueryScanner::AcceptCommand(void) __ptr64
?AcceptCommand@CQueryScanner@@QEAAXXZ
; public: void __cdecl CQueryScanner::AcceptWord(void) __ptr64
?AcceptWord@CQueryScanner@@QEAAXXZ
; public: int __cdecl CSdidLookupTable::AccessCheck(unsigned long,void * __ptr64,unsigned long,int & __ptr64) __ptr64
?AccessCheck@CSdidLookupTable@@QEAAHKPEAXKAEAH@Z
; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqLine(int) __ptr64
?AcqLine@CQueryScanner@@QEAAPEAGH@Z
; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPath(void) __ptr64
?AcqPath@CQueryScanner@@QEAAPEAGXZ
; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqPhrase(void) __ptr64
?AcqPhrase@CQueryScanner@@QEAAPEAGXZ
; public: class CRangeRestriction * __ptr64 __cdecl CRangeKeyRepository::AcqRst(void) __ptr64
?AcqRst@CRangeKeyRepository@@QEAAPEAVCRangeRestriction@@XZ
; public: unsigned short * __ptr64 __cdecl CQueryScanner::AcqWord(void) __ptr64
?AcqWord@CQueryScanner@@QEAAPEAGXZ
; private: void __cdecl CPropertyStore::AcquireRead(class CReadWriteLockRecord & __ptr64) __ptr64
?AcquireRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
; public: int __cdecl CDbColumns::Add(class CDbColId const & __ptr64,unsigned int) __ptr64
?Add@CDbColumns@@QEAAHAEBVCDbColId@@I@Z
; public: void __cdecl CDbQueryResults::Add(unsigned short * __ptr64,unsigned long) __ptr64
?Add@CDbQueryResults@@QEAAXPEAGK@Z
; public: int __cdecl CDbSortSet::Add(class CDbColId const & __ptr64,unsigned long,unsigned int) __ptr64
?Add@CDbSortSet@@QEAAHAEBVCDbColId@@KI@Z
; public: int __cdecl CDbSortSet::Add(class CDbSortKey const & __ptr64,unsigned int) __ptr64
?Add@CDbSortSet@@QEAAHAEBVCDbSortKey@@I@Z
; public: int __cdecl CKeyArray::Add(int,class CKey const & __ptr64) __ptr64
?Add@CKeyArray@@QEAAHHAEBVCKey@@@Z
; public: int __cdecl CKeyArray::Add(int,class CKeyBuf const & __ptr64) __ptr64
?Add@CKeyArray@@QEAAHHAEBVCKeyBuf@@@Z
; public: void __cdecl CWorkQueue::Add(class PWorkItem * __ptr64) __ptr64
?Add@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
; public: void __cdecl CEventItem::AddArg(unsigned long) __ptr64
?AddArg@CEventItem@@QEAAXK@Z
; public: void __cdecl CEventItem::AddArg(unsigned short const * __ptr64) __ptr64
?AddArg@CEventItem@@QEAAXPEBG@Z
; public: void __cdecl CFwEventItem::AddArg(unsigned long) __ptr64
?AddArg@CFwEventItem@@QEAAXK@Z
; public: void __cdecl CFwEventItem::AddArg(unsigned short const * __ptr64) __ptr64
?AddArg@CFwEventItem@@QEAAXPEBG@Z
; public: void __cdecl CCatalogAdmin::AddCachedProperty(class CFullPropSpec const & __ptr64,unsigned long,unsigned long,unsigned long,int) __ptr64
?AddCachedProperty@CCatalogAdmin@@QEAAXAEBVCFullPropSpec@@KKKH@Z
; public: void __cdecl CCatState::AddCatalog(class XPtrST<unsigned short> & __ptr64) __ptr64
?AddCatalog@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
; public: void __cdecl CMachineAdmin::AddCatalog(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?AddCatalog@CMachineAdmin@@QEAAXPEBG0@Z
; public: void __cdecl CNodeRestriction::AddChild(class CRestriction * __ptr64,unsigned int & __ptr64) __ptr64
?AddChild@CNodeRestriction@@QEAAXPEAVCRestriction@@AEAI@Z
; public: void __cdecl CCatState::AddDir(class XPtrST<unsigned short> & __ptr64) __ptr64
?AddDir@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
; public: virtual void __cdecl CPropertyList::AddEntry(class CPropEntry * __ptr64,int) __ptr64
?AddEntry@CPropertyList@@UEAAXPEAVCPropEntry@@H@Z
; public: void __cdecl CEventItem::AddError(unsigned long) __ptr64
?AddError@CEventItem@@QEAAXK@Z
; public: void __cdecl CSynRestriction::AddKey(class CKeyBuf const & __ptr64) __ptr64
?AddKey@CSynRestriction@@QEAAXAEBVCKeyBuf@@@Z
; public: void __cdecl CCatState::AddMachine(class XPtrST<unsigned short> & __ptr64) __ptr64
?AddMachine@CCatState@@QEAAXAEAV?$XPtrST@G@@@Z
; public: virtual unsigned long __cdecl CDbProperties::AddRef(void) __ptr64
?AddRef@CDbProperties@@UEAAKXZ
; public: virtual unsigned long __cdecl CEmptyPropertyList::AddRef(void) __ptr64
?AddRef@CEmptyPropertyList@@UEAAKXZ
; public: virtual unsigned long __cdecl CEnumString::AddRef(void) __ptr64
?AddRef@CEnumString@@UEAAKXZ
; public: virtual unsigned long __cdecl CEnumWorkid::AddRef(void) __ptr64
?AddRef@CEnumWorkid@@UEAAKXZ
; public: virtual unsigned long __cdecl CFwPropertyMapper::AddRef(void) __ptr64
?AddRef@CFwPropertyMapper@@UEAAKXZ
; public: virtual unsigned long __cdecl CQueryUnknown::AddRef(void) __ptr64
?AddRef@CQueryUnknown@@UEAAKXZ
; public: void __cdecl CWorkQueue::AddRefWorkThreads(void) __ptr64
?AddRefWorkThreads@CWorkQueue@@QEAAXXZ
; public: void __cdecl CCatalogAdmin::AddScope(unsigned short const * __ptr64,unsigned short const * __ptr64,int,unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?AddScope@CCatalogAdmin@@QEAAXPEBG0H00@Z
; public: int __cdecl CDbSortNode::AddSortColumn(struct tagDBID const & __ptr64,int,unsigned long) __ptr64
?AddSortColumn@CDbSortNode@@QEAAHAEBUtagDBID@@HK@Z
; public: int __cdecl CDbNestingNode::AddTable(class CDbCmdTreeNode * __ptr64) __ptr64
?AddTable@CDbNestingNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
; public: void __cdecl CWorkManager::AddToWorkList(class CFwAsyncWorkItem * __ptr64) __ptr64
?AddToWorkList@CWorkManager@@QEAAXPEAVCFwAsyncWorkItem@@@Z
; public: void __cdecl CFwAsyncWorkItem::AddToWorkQueue(void) __ptr64
?AddToWorkQueue@CFwAsyncWorkItem@@QEAAXXZ
; public: static unsigned short * __ptr64 __cdecl CDbCmdTreeNode::AllocAndCopyWString(unsigned short const * __ptr64)
?AllocAndCopyWString@CDbCmdTreeNode@@SAPEAGPEBG@Z
; unsigned short * __ptr64 __cdecl AllocHeapAndCopy(unsigned short const * __ptr64,unsigned long & __ptr64)
?AllocHeapAndCopy@@YAPEAGPEBGAEAK@Z
; unsigned short * __ptr64 __cdecl AllocHeapAndGetWString(class PDeSerStream & __ptr64)
?AllocHeapAndGetWString@@YAPEAGAEAVPDeSerStream@@@Z
; public: void __cdecl CEnumString::Append(unsigned short const * __ptr64) __ptr64
?Append@CEnumString@@QEAAXPEBG@Z
; public: void __cdecl CEnumWorkid::Append(unsigned long) __ptr64
?Append@CEnumWorkid@@QEAAXK@Z
; protected: void __cdecl CDbCmdTreeNode::AppendChild(class CDbCmdTreeNode * __ptr64) __ptr64
?AppendChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
; protected: int __cdecl CDbListAnchor::AppendListElement(unsigned short,struct tagDBID const & __ptr64) __ptr64
?AppendListElement@CDbListAnchor@@IEAAHGAEBUtagDBID@@@Z
; protected: int __cdecl CDbListAnchor::AppendListElement(class CDbCmdTreeNode * __ptr64) __ptr64
?AppendListElement@CDbListAnchor@@IEAAHPEAVCDbCmdTreeNode@@@Z
; public: int __cdecl CDbProjectListAnchor::AppendListElement(struct tagDBID const & __ptr64,unsigned short * __ptr64) __ptr64
?AppendListElement@CDbProjectListAnchor@@QEAAHAEBUtagDBID@@PEAG@Z
; public: unsigned __int64 __cdecl CPropStoreManager::BeginTransaction(void) __ptr64
?BeginTransaction@CPropStoreManager@@QEAA_KXZ
; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct _GUID const & __ptr64,struct IFilter * __ptr64 * __ptr64,int)
?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@AEBU_GUID@@PEAPEAUIFilter@@H@Z
; public: static long __cdecl CCiOle::BindIFilter(unsigned short const * __ptr64,struct IUnknown * __ptr64,struct IFilter * __ptr64 * __ptr64,int)
?BindIFilter@CCiOle@@SAJPEBGPEAUIUnknown@@PEAPEAUIFilter@@H@Z
; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowBuffer(unsigned long,int,int) __ptr64
?BorrowBuffer@CPhysStorage@@QEAAPEAKKHH@Z
; public: unsigned long * __ptr64 __cdecl CPhysStorage::BorrowNewBuffer(unsigned long) __ptr64
?BorrowNewBuffer@CPhysStorage@@QEAAPEAKK@Z
; void __cdecl BuildRegistryPropertiesKey(class XArray<unsigned short> & __ptr64,unsigned short const * __ptr64)
?BuildRegistryPropertiesKey@@YAXAEAV?$XArray@G@@PEBG@Z
; void __cdecl BuildRegistryScopesKey(class XArray<unsigned short> & __ptr64,unsigned short const * __ptr64)
?BuildRegistryScopesKey@@YAXAEAV?$XArray@G@@PEBG@Z
; void __cdecl CIShutdown(void)
?CIShutdown@@YAXXZ
; public: void __cdecl CCatState::ChangeCurrentCatalog(unsigned short const * __ptr64) __ptr64
?ChangeCurrentCatalog@CCatState@@QEAAXPEBG@Z
; public: void __cdecl CCatState::ChangeCurrentDepth(int) __ptr64
?ChangeCurrentDepth@CCatState@@QEAAXH@Z
; public: void __cdecl CCatState::ChangeCurrentMachine(unsigned short const * __ptr64) __ptr64
?ChangeCurrentMachine@CCatState@@QEAAXPEBG@Z
; public: void __cdecl CCatState::ChangeCurrentScope(unsigned short const * __ptr64) __ptr64
?ChangeCurrentScope@CCatState@@QEAAXPEBG@Z
; private: void __cdecl CPropStoreInfo::ChangeDirty(int) __ptr64
?ChangeDirty@CPropStoreInfo@@AEAAXH@Z
; public: long __cdecl CLocalGlobalPropertyList::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
?CheckError@CLocalGlobalPropertyList@@QEAAJAEAKPEAPEAG@Z
; public: long __cdecl CPropListFile::CheckError(unsigned long & __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
?CheckError@CPropListFile@@QEAAJAEAKPEAPEAG@Z
; public: static int __cdecl CiStorage::CheckHasIndexTable(unsigned short const * __ptr64)
?CheckHasIndexTable@CiStorage@@SAHPEBG@Z
CiCreateSecurityDescriptor
; int __cdecl CiGetPassword(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64)
?CiGetPassword@@YAHPEBG0PEAG@Z
; void * __ptr64 __cdecl CiNtOpen(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
?CiNtOpen@@YAPEAXPEBGKKK@Z
; long __cdecl CiNtOpenNoThrow(void * __ptr64 & __ptr64,unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long)
?CiNtOpenNoThrow@@YAJAEAPEAXPEBGKKK@Z
; public: void __cdecl CDbColId::Cleanup(void) __ptr64
?Cleanup@CDbColId@@QEAAXXZ
; protected: void __cdecl CDbCmdTreeNode::CleanupDataValue(void) __ptr64
?CleanupDataValue@CDbCmdTreeNode@@IEAAXXZ
; public: void __cdecl CCombinedPropertyList::ClearList(void) __ptr64
?ClearList@CCombinedPropertyList@@QEAAXXZ
; public: void __cdecl CPropertyList::ClearList(void) __ptr64
?ClearList@CPropertyList@@QEAAXXZ
; public: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::Clone(int)const  __ptr64
?Clone@CDbCmdTreeNode@@QEBAPEAV1@H@Z
; public: virtual long __cdecl CEnumString::Clone(struct IEnumString * __ptr64 * __ptr64) __ptr64
?Clone@CEnumString@@UEAAJPEAPEAUIEnumString@@@Z
; public: class CNodeRestriction * __ptr64 __cdecl CNodeRestriction::Clone(void)const  __ptr64
?Clone@CNodeRestriction@@QEBAPEAV1@XZ
; public: class COccRestriction * __ptr64 __cdecl COccRestriction::Clone(void)const  __ptr64
?Clone@COccRestriction@@QEBAPEAV1@XZ
; public: class CRestriction * __ptr64 __cdecl CRestriction::Clone(void)const  __ptr64
?Clone@CRestriction@@QEBAPEAV1@XZ
; public: void __cdecl CPhysStorage::Close(void) __ptr64
?Close@CPhysStorage@@QEAAXXZ
; protected: void __cdecl CPipeClient::Close(void) __ptr64
?Close@CPipeClient@@IEAAXXZ
; public: void __cdecl COLEPropManager::CPropSetMap::Close(void) __ptr64
?Close@CPropSetMap@COLEPropManager@@QEAAXXZ
; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecord * __ptr64) __ptr64
?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecord@@@Z
; public: void __cdecl CPropStoreManager::CloseRecord(class CCompositePropRecordForWrites * __ptr64) __ptr64
?CloseRecord@CPropStoreManager@@QEAAXPEAVCCompositePropRecordForWrites@@@Z
; public: void __cdecl CRcovStrmAppendTrans::Commit(void) __ptr64
?Commit@CRcovStrmAppendTrans@@QEAAXXZ
; public: void __cdecl CRcovStrmMDTrans::Commit(void) __ptr64
?Commit@CRcovStrmMDTrans@@QEAAXXZ
; public: void __cdecl CRcovStrmWriteTrans::Commit(void) __ptr64
?Commit@CRcovStrmWriteTrans@@QEAAXXZ
; public: static int __cdecl CDriveInfo::ContainsDrive(unsigned short const * __ptr64)
?ContainsDrive@CDriveInfo@@SAHPEBG@Z
; public: void __cdecl CMachineAdmin::CreateSubdirs(unsigned short const * __ptr64) __ptr64
?CreateSubdirs@CMachineAdmin@@QEAAXPEBG@Z
; public: void __cdecl CRequestClient::DataWriteRead(void * __ptr64,unsigned long,void * __ptr64,unsigned long,unsigned long & __ptr64) __ptr64
?DataWriteRead@CRequestClient@@QEAAXPEAXK0KAEAK@Z
; void __cdecl DecodeEscapes(unsigned short * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64)
?DecodeEscapes@@YAXPEAGAEAK0@Z
; void __cdecl DecodeHtmlNumeric(unsigned short * __ptr64)
?DecodeHtmlNumeric@@YAXPEAG@Z
; void __cdecl DecodeURLEscapes(unsigned char * __ptr64,unsigned long & __ptr64,unsigned short * __ptr64,unsigned long)
?DecodeURLEscapes@@YAXPEAEAEAKPEAGK@Z
; public: void __cdecl CPropStoreManager::DeleteRecord(unsigned long) __ptr64
?DeleteRecord@CPropStoreManager@@QEAAXK@Z
; public: void __cdecl CCatalogAdmin::DeleteRegistryParamNoThrow(unsigned short const * __ptr64) __ptr64
?DeleteRegistryParamNoThrow@CCatalogAdmin@@QEAAXPEBG@Z
; public: static unsigned int __cdecl CiStorage::DetermineDriveType(unsigned short const * __ptr64)
?DetermineDriveType@CiStorage@@SAIPEBG@Z
; public: int __cdecl CMachineAdmin::DisableCI(void) __ptr64
?DisableCI@CMachineAdmin@@QEAAHXZ
; public: void __cdecl CRegNotify::DisableNotification(void) __ptr64
?DisableNotification@CRegNotify@@QEAAXXZ
; public: void __cdecl CMetaDataMgr::DisableVPathNotify(void) __ptr64
?DisableVPathNotify@CMetaDataMgr@@QEAAXXZ
; public: void __cdecl CRequestClient::Disconnect(void) __ptr64
?Disconnect@CRequestClient@@QEAAXXZ
; public: long __cdecl CCopyRcovObject::DoIt(void) __ptr64
?DoIt@CCopyRcovObject@@QEAAJXZ
; public: long __cdecl CFilterDaemon::DoUpdates(void) __ptr64
?DoUpdates@CFilterDaemon@@QEAAJXZ
; public: void __cdecl CFwAsyncWorkItem::Done(void) __ptr64
?Done@CFwAsyncWorkItem@@QEAAXXZ
; long __cdecl DumpWorkId(unsigned short const * __ptr64,unsigned long,unsigned char * __ptr64,unsigned long & __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
?DumpWorkId@@YAJPEBGKPEAEAEAK00K@Z
; public: void __cdecl CPidLookupTable::Empty(void) __ptr64
?Empty@CPidLookupTable@@QEAAXXZ
; public: void __cdecl CPropStoreManager::Empty(void) __ptr64
?Empty@CPropStoreManager@@QEAAXXZ
; public: void __cdecl CRcovStrmWriteTrans::Empty(void) __ptr64
?Empty@CRcovStrmWriteTrans@@QEAAXXZ
; public: void __cdecl CSdidLookupTable::Empty(void) __ptr64
?Empty@CSdidLookupTable@@QEAAXXZ
; public: int __cdecl CMachineAdmin::EnableCI(void) __ptr64
?EnableCI@CMachineAdmin@@QEAAHXZ
; public: void __cdecl CMetaDataMgr::EnableVPathNotify(class CMetaDataVPathChangeCallBack * __ptr64) __ptr64
?EnableVPathNotify@CMetaDataMgr@@QEAAXPEAVCMetaDataVPathChangeCallBack@@@Z
; public: void __cdecl CPropStoreManager::EndTransaction(unsigned __int64,int,unsigned long,unsigned long) __ptr64
?EndTransaction@CPropStoreManager@@QEAAX_KHKK@Z
; public: int __cdecl CWin32RegAccess::Enum(unsigned short * __ptr64,unsigned long) __ptr64
?Enum@CWin32RegAccess@@QEAAHPEAGK@Z
; public: virtual long __cdecl CEmptyPropertyList::EnumPropInfo(unsigned long,unsigned short const * __ptr64 * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
?EnumPropInfo@CEmptyPropertyList@@UEAAJKPEAPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
; public: void __cdecl CMetaDataMgr::EnumVPaths(class CMetaDataCallBack & __ptr64) __ptr64
?EnumVPaths@CMetaDataMgr@@QEAAXAEAVCMetaDataCallBack@@@Z
; public: void __cdecl CMetaDataMgr::EnumVServers(class CMetaDataVirtualServerCallBack & __ptr64) __ptr64
?EnumVServers@CMetaDataMgr@@QEAAXAEAVCMetaDataVirtualServerCallBack@@@Z
; public: static void __cdecl CiStorage::EnumerateFilesInDir(unsigned short const * __ptr64,class CEnumString & __ptr64)
?EnumerateFilesInDir@CiStorage@@SAXPEBGAEAVCEnumString@@@Z
; public: int __cdecl CPidLookupTable::EnumerateProperty(class CFullPropSpec & __ptr64,unsigned int & __ptr64) __ptr64
?EnumerateProperty@CPidLookupTable@@QEAAHAEAVCFullPropSpec@@AEAI@Z
; public: void __cdecl CRegAccess::EnumerateValues(unsigned short * __ptr64,class CRegCallBack & __ptr64) __ptr64
?EnumerateValues@CRegAccess@@QEAAXPEAGAEAVCRegCallBack@@@Z
; public: int __cdecl CMmStreamConsecBuf::Eof(void) __ptr64
?Eof@CMmStreamConsecBuf@@QEAAHXZ
; public: int __cdecl CMetaDataMgr::ExtensionHasScriptMap(unsigned short const * __ptr64) __ptr64
?ExtensionHasScriptMap@CMetaDataMgr@@QEAAHPEBG@Z
; public: virtual long __cdecl CPidConverter::FPSToPROPID(class CFullPropSpec const & __ptr64,unsigned long & __ptr64) __ptr64
?FPSToPROPID@CPidConverter@@UEAAJAEBVCFullPropSpec@@AEAK@Z
; public: void __cdecl CPropStoreManager::FastInit(class CiStorage * __ptr64) __ptr64
?FastInit@CPropStoreManager@@QEAAXPEAVCiStorage@@@Z
; public: void __cdecl COLEPropManager::FetchProperty(struct _GUID const & __ptr64,struct tagPROPSPEC const & __ptr64,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
?FetchProperty@COLEPropManager@@QEAAXAEBU_GUID@@AEBUtagPROPSPEC@@PEAUtagPROPVARIANT@@PEAI@Z
; public: int __cdecl CKeyArray::FillMax(int) __ptr64
?FillMax@CKeyArray@@QEAAHH@Z
; public: class CPropEntry const * __ptr64 __cdecl CEmptyPropertyList::Find(class CDbColId const & __ptr64) __ptr64
?Find@CEmptyPropertyList@@QEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(class CDbColId const & __ptr64) __ptr64
?Find@CPropertyList@@UEAAPEBVCPropEntry@@AEBVCDbColId@@@Z
; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Find(unsigned short const * __ptr64) __ptr64
?Find@CPropertyList@@UEAAPEBVCPropEntry@@PEBG@Z
; public: int __cdecl CPidLookupTable::FindPropid(class CFullPropSpec const & __ptr64,unsigned long & __ptr64,int) __ptr64
?FindPropid@CPidLookupTable@@QEAAHAEBVCFullPropSpec@@AEAKH@Z
; public: void __cdecl CDynStream::Flush(void) __ptr64
?Flush@CDynStream@@QEAAXXZ
; public: void __cdecl CPhysStorage::Flush(int) __ptr64
?Flush@CPhysStorage@@QEAAXH@Z
; public: void __cdecl CPropStoreManager::Flush(void) __ptr64
?Flush@CPropStoreManager@@QEAAXXZ
; public: static void __cdecl CCiOle::FlushIdle(void)
?FlushIdle@CCiOle@@SAXXZ
; public: struct tagDBCOMMANDTREE * __ptr64 __cdecl CTextToTree::FormFullTree(void) __ptr64
?FormFullTree@CTextToTree@@QEAAPEAUtagDBCOMMANDTREE@@XZ
; class CDbCmdTreeNode * __ptr64 __cdecl FormQueryTree(class CDbCmdTreeNode & __ptr64,class CCatState & __ptr64,struct IColumnMapper * __ptr64,int,int)
?FormQueryTree@@YAPEAVCDbCmdTreeNode@@AEAV1@AEAVCCatState@@PEAUIColumnMapper@@HH@Z
FsCiShutdown
; public: unsigned long __cdecl CRegAccess::Get(unsigned short const * __ptr64) __ptr64
?Get@CRegAccess@@QEAAKPEBG@Z
; public: void __cdecl CRegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int) __ptr64
?Get@CRegAccess@@QEAAXPEBGPEAGI@Z
; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
?Get@CWin32RegAccess@@QEAAHPEBGAEAK@Z
; public: int __cdecl CWin32RegAccess::Get(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned int,int) __ptr64
?Get@CWin32RegAccess@@QEAAHPEBGPEAGIH@Z
; public: virtual long __cdecl CPropertyList::GetAllEntries(class CPropEntry * __ptr64 * __ptr64,unsigned long) __ptr64
?GetAllEntries@CPropertyList@@UEAAJPEAPEAVCPropEntry@@K@Z
; public: short __cdecl CAllocStorageVariant::GetBOOL(unsigned int)const  __ptr64
?GetBOOL@CAllocStorageVariant@@QEBAFI@Z
; public: unsigned long __cdecl CPropStoreManager::GetBackupSize(unsigned long) __ptr64
?GetBackupSize@CPropStoreManager@@QEAAKK@Z
; public: virtual void __cdecl CMemDeSerStream::GetBlob(unsigned char * __ptr64,unsigned long) __ptr64
?GetBlob@CMemDeSerStream@@UEAAXPEAEK@Z
; unsigned long __cdecl GetBrowserCodepage(class CWebServer & __ptr64,unsigned long)
?GetBrowserCodepage@@YAKAEAVCWebServer@@K@Z
; public: virtual unsigned char __cdecl CMemDeSerStream::GetByte(void) __ptr64
?GetByte@CMemDeSerStream@@UEAAEXZ
; public: unsigned short const * __ptr64 __cdecl CCatState::GetCD(void) __ptr64
?GetCD@CCatState@@QEAAPEBGXZ
; public: int __cdecl CWebServer::GetCGIVariable(char const * __ptr64,class XArray<unsigned short> & __ptr64,unsigned long & __ptr64) __ptr64
?GetCGIVariable@CWebServer@@QEAAHPEBDAEAV?$XArray@G@@AEAK@Z
; public: int __cdecl CWebServer::GetCGIVariableW(unsigned short const * __ptr64,class XArray<unsigned short> & __ptr64,unsigned long & __ptr64) __ptr64
?GetCGIVariableW@CWebServer@@QEAAHPEBGAEAV?$XArray@G@@AEAK@Z
; public: struct _GUID  __cdecl CAllocStorageVariant::GetCLSID(unsigned int)const  __ptr64
?GetCLSID@CAllocStorageVariant@@QEBA?AU_GUID@@I@Z
; public: union tagCY  __cdecl CAllocStorageVariant::GetCY(unsigned int)const  __ptr64
?GetCY@CAllocStorageVariant@@QEBA?ATtagCY@@I@Z
; public: unsigned short const * __ptr64 __cdecl CCatState::GetCategory(unsigned int)const  __ptr64
?GetCategory@CCatState@@QEBAPEBGI@Z
; public: virtual void __cdecl CMemDeSerStream::GetChar(char * __ptr64,unsigned long) __ptr64
?GetChar@CMemDeSerStream@@UEAAXPEADK@Z
; public: unsigned short const * __ptr64 __cdecl CCatState::GetColumn(unsigned int)const  __ptr64
?GetColumn@CCatState@@QEBAPEBGI@Z
; public: unsigned short __cdecl CQueryScanner::GetCommandChar(void) __ptr64
?GetCommandChar@CQueryScanner@@QEAAGXZ
; public: double __cdecl CAllocStorageVariant::GetDATE(unsigned int)const  __ptr64
?GetDATE@CAllocStorageVariant@@QEBANI@Z
; public: int __cdecl CCatalogAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
?GetDWORDParam@CCatalogAdmin@@QEAAHPEBGAEAK@Z
; public: int __cdecl CMachineAdmin::GetDWORDParam(unsigned short const * __ptr64,unsigned long & __ptr64) __ptr64
?GetDWORDParam@CMachineAdmin@@QEAAHPEBGAEAK@Z
; public: void __cdecl CDriveInfo::GetDiskSpace(__int64 & __ptr64,__int64 & __ptr64) __ptr64
?GetDiskSpace@CDriveInfo@@QEAAXAEA_J0@Z
; public: virtual double __cdecl CMemDeSerStream::GetDouble(void) __ptr64
?GetDouble@CMemDeSerStream@@UEAANXZ
; public: static void __cdecl CDriveInfo::GetDrive(unsigned short const * __ptr64,unsigned short * __ptr64)
?GetDrive@CDriveInfo@@SAXPEBGPEAG@Z
; public: unsigned char * __ptr64 __cdecl CGenericCiProxy::GetEntryBuffer(unsigned long & __ptr64) __ptr64
?GetEntryBuffer@CGenericCiProxy@@QEAAPEAEAEAK@Z
; public: struct _FILETIME  __cdecl CAllocStorageVariant::GetFILETIME(unsigned int)const  __ptr64
?GetFILETIME@CAllocStorageVariant@@QEBA?AU_FILETIME@@I@Z
; public: int __cdecl CPathParser::GetFileName(unsigned short * __ptr64,unsigned long & __ptr64)const  __ptr64
?GetFileName@CPathParser@@QEBAHPEAGAEAK@Z
; public: enum CDriveInfo::eFileSystem  __cdecl CDriveInfo::GetFileSystem(int) __ptr64
?GetFileSystem@CDriveInfo@@QEAA?AW4eFileSystem@1@H@Z
; public: virtual float __cdecl CMemDeSerStream::GetFloat(void) __ptr64
?GetFloat@CMemDeSerStream@@UEAAMXZ
; public: virtual void __cdecl CMemDeSerStream::GetGUID(struct _GUID & __ptr64) __ptr64
?GetGUID@CMemDeSerStream@@UEAAXAEAU_GUID@@@Z
; class CPropListFile * __ptr64 __cdecl GetGlobalPropListFile(void)
?GetGlobalPropListFile@@YAPEAVCPropListFile@@XZ
; class CStaticPropertyList * __ptr64 __cdecl GetGlobalStaticPropertyList(void)
?GetGlobalStaticPropertyList@@YAPEAVCStaticPropertyList@@XZ
; public: short __cdecl CAllocStorageVariant::GetI2(unsigned int)const  __ptr64
?GetI2@CAllocStorageVariant@@QEBAFI@Z
; public: long __cdecl CAllocStorageVariant::GetI4(unsigned int)const  __ptr64
?GetI4@CAllocStorageVariant@@QEBAJI@Z
; public: union _LARGE_INTEGER  __cdecl CAllocStorageVariant::GetI8(unsigned int)const  __ptr64
?GetI8@CAllocStorageVariant@@QEBA?AT_LARGE_INTEGER@@I@Z
; unsigned long __cdecl GetLCIDFromString(unsigned short * __ptr64)
?GetLCIDFromString@@YAKPEAG@Z
; public: char * __ptr64 __cdecl CAllocStorageVariant::GetLPSTR(unsigned int)const  __ptr64
?GetLPSTR@CAllocStorageVariant@@QEBAPEADI@Z
; public: unsigned short * __ptr64 __cdecl CAllocStorageVariant::GetLPWSTR(unsigned int)const  __ptr64
?GetLPWSTR@CAllocStorageVariant@@QEBAPEAGI@Z
; public: unsigned short const * __ptr64 __cdecl CCatalogAdmin::GetLocation(void) __ptr64
?GetLocation@CCatalogAdmin@@QEAAPEBGXZ
; public: virtual long __cdecl CMemDeSerStream::GetLong(void) __ptr64
?GetLong@CMemDeSerStream@@UEAAJXZ
; public: int __cdecl CQueryScanner::GetNumber(unsigned long & __ptr64,int & __ptr64) __ptr64
?GetNumber@CQueryScanner@@QEAAHAEAKAEAH@Z
; public: int __cdecl CQueryScanner::GetNumber(double & __ptr64) __ptr64
?GetNumber@CQueryScanner@@QEAAHAEAN@Z
; public: int __cdecl CQueryScanner::GetNumber(__int64 & __ptr64,int & __ptr64) __ptr64
?GetNumber@CQueryScanner@@QEAAHAEA_JAEAH@Z
; public: int __cdecl CQueryScanner::GetNumber(unsigned __int64 & __ptr64,int & __ptr64) __ptr64
?GetNumber@CQueryScanner@@QEAAHAEA_KAEAH@Z
; public: void __cdecl CKeyDeComp::GetOffset(struct BitOffset & __ptr64) __ptr64
?GetOffset@CKeyDeComp@@QEAAXAEAUBitOffset@@@Z
; long __cdecl GetOleDBErrorInfo(struct IUnknown * __ptr64,struct _GUID const & __ptr64,unsigned long,unsigned int,struct tagERRORINFO * __ptr64,struct IErrorInfo * __ptr64 * __ptr64)
?GetOleDBErrorInfo@@YAJPEAUIUnknown@@AEBU_GUID@@KIPEAUtagERRORINFO@@PEAPEAUIErrorInfo@@@Z
; long __cdecl GetOleError(class CException & __ptr64)
?GetOleError@@YAJAEAVCException@@@Z
; public: unsigned long __cdecl CWebServer::GetPhysicalPath(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long,unsigned long) __ptr64
?GetPhysicalPath@CWebServer@@QEAAKPEBGPEAGKK@Z
; public: int __cdecl CEmptyPropertyList::GetPropInfo(class CDbColId const & __ptr64,unsigned short const * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
?GetPropInfo@CEmptyPropertyList@@QEAAHAEBVCDbColId@@PEAPEBGPEAGPEAI@Z
; public: int __cdecl CEmptyPropertyList::GetPropInfo(unsigned short const * __ptr64,class CDbColId * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
?GetPropInfo@CEmptyPropertyList@@QEAAHPEBGPEAPEAVCDbColId@@PEAGPEAI@Z
; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromId(struct tagDBID const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
?GetPropInfoFromId@CEmptyPropertyList@@UEAAJPEBUtagDBID@@PEAPEAGPEAGPEAI@Z
; public: virtual long __cdecl CEmptyPropertyList::GetPropInfoFromName(unsigned short const * __ptr64,struct tagDBID * __ptr64 * __ptr64,unsigned short * __ptr64,unsigned int * __ptr64) __ptr64
?GetPropInfoFromName@CEmptyPropertyList@@UEAAJPEBGPEAPEAUtagDBID@@PEAGPEAI@Z
; public: static unsigned short __cdecl CEmptyPropertyList::GetPropType(unsigned int)
?GetPropType@CEmptyPropertyList@@SAGI@Z
; public: static unsigned int __cdecl CEmptyPropertyList::GetPropTypeCount(void)
?GetPropTypeCount@CEmptyPropertyList@@SAIXZ
; public: static unsigned short const * __ptr64 __cdecl CEmptyPropertyList::GetPropTypeName(unsigned int)
?GetPropTypeName@CEmptyPropertyList@@SAPEBGI@Z
; public: virtual long __cdecl CDbProperties::GetProperties(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPSET * __ptr64 * __ptr64) __ptr64
?GetProperties@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPSET@@@Z
; public: void __cdecl CGetDbProps::GetProperties(struct IDBProperties * __ptr64,unsigned long) __ptr64
?GetProperties@CGetDbProps@@QEAAXPEAUIDBProperties@@K@Z
; public: virtual long __cdecl CDbProperties::GetPropertyInfo(unsigned long,struct tagDBPROPIDSET const * __ptr64 const,unsigned long * __ptr64,struct tagDBPROPINFOSET * __ptr64 * __ptr64,unsigned short * __ptr64 * __ptr64) __ptr64
?GetPropertyInfo@CDbProperties@@UEAAJKQEBUtagDBPROPIDSET@@PEAKPEAPEAUtagDBPROPINFOSET@@PEAPEAG@Z
; public: float __cdecl CAllocStorageVariant::GetR4(unsigned int)const  __ptr64
?GetR4@CAllocStorageVariant@@QEBAMI@Z
; public: double __cdecl CAllocStorageVariant::GetR8(unsigned int)const  __ptr64
?GetR8@CAllocStorageVariant@@QEBANI@Z
; public: int __cdecl CMachineAdmin::GetSZParam(unsigned short const * __ptr64,unsigned short * __ptr64,unsigned long) __ptr64
?GetSZParam@CMachineAdmin@@QEAAHPEBGPEAGK@Z
; long __cdecl GetScodeError(class CException & __ptr64)
?GetScodeError@@YAJAEAVCException@@@Z
; int __cdecl GetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64)
?GetSecret@@YAHPEBG0PEAPEAGPEAK@Z
; public: unsigned long __cdecl CDriveInfo::GetSectorSize(void) __ptr64
?GetSectorSize@CDriveInfo@@QEAAKXZ
; public: void __cdecl CCatState::GetSortProp(unsigned int,unsigned short const * __ptr64 * __ptr64,enum SORTDIR * __ptr64)const  __ptr64
?GetSortProp@CCatState@@QEBAXIPEAPEBGPEAW4SORTDIR@@@Z
; void __cdecl GetStackTrace(char * __ptr64,unsigned long)
?GetStackTrace@@YAXPEADK@Z
; public: unsigned char const * __ptr64 __cdecl CGenericCiProxy::GetStartupData(struct _GUID & __ptr64,unsigned long & __ptr64) __ptr64
?GetStartupData@CGenericCiProxy@@QEAAPEBEAEAU_GUID@@AEAK@Z
; public: class PStorage & __ptr64 __cdecl CPropStoreManager::GetStorage(unsigned long) __ptr64
?GetStorage@CPropStoreManager@@QEAAAEAVPStorage@@K@Z
; public: unsigned short * __ptr64 __cdecl CKey::GetStr(void)const  __ptr64
?GetStr@CKey@@QEBAPEAGXZ
; public: unsigned short * __ptr64 __cdecl CKeyBuf::GetStr(void)const  __ptr64
?GetStr@CKeyBuf@@QEBAPEAGXZ
; public: virtual char * __ptr64 __cdecl CMemDeSerStream::GetString(void) __ptr64
?GetString@CMemDeSerStream@@UEAAPEADXZ
; class CDbRestriction * __ptr64 __cdecl GetStringDbRestriction(unsigned short const * __ptr64,unsigned long,struct IColumnMapper * __ptr64,unsigned long)
?GetStringDbRestriction@@YAPEAVCDbRestriction@@PEBGKPEAUIColumnMapper@@K@Z
; void __cdecl GetStringFromLCID(unsigned long,unsigned short * __ptr64)
?GetStringFromLCID@@YAXKPEAG@Z
; public: unsigned long __cdecl CPropStoreManager::GetTotalSizeInKB(void) __ptr64
?GetTotalSizeInKB@CPropStoreManager@@QEAAKXZ
; public: unsigned long __cdecl CPropertyStore::GetTotalSizeInKB(void) __ptr64
?GetTotalSizeInKB@CPropertyStore@@QEAAKXZ
; public: virtual unsigned long __cdecl CMemDeSerStream::GetULong(void) __ptr64
?GetULong@CMemDeSerStream@@UEAAKXZ
; public: virtual unsigned short __cdecl CMemDeSerStream::GetUShort(void) __ptr64
?GetUShort@CMemDeSerStream@@UEAAGXZ
; public: void __cdecl CIndexTable::GetUserHdrInfo(unsigned int & __ptr64,int & __ptr64) __ptr64
?GetUserHdrInfo@CIndexTable@@QEAAXAEAIAEAH@Z
; public: unsigned long __cdecl CMetaDataMgr::GetVPathAccess(unsigned short const * __ptr64) __ptr64
?GetVPathAccess@CMetaDataMgr@@QEAAKPEBG@Z
; public: unsigned long __cdecl CMetaDataMgr::GetVPathAuthorization(unsigned short const * __ptr64) __ptr64
?GetVPathAuthorization@CMetaDataMgr@@QEAAKPEBG@Z
; public: unsigned long __cdecl CMetaDataMgr::GetVPathSSLAccess(unsigned short const * __ptr64) __ptr64
?GetVPathSSLAccess@CMetaDataMgr@@QEAAKPEBG@Z
; public: unsigned short const * __ptr64 __cdecl CDriveInfo::GetVolumeName(int) __ptr64
?GetVolumeName@CDriveInfo@@QEAAPEBGH@Z
; public: virtual void __cdecl CMemDeSerStream::GetWChar(unsigned short * __ptr64,unsigned long) __ptr64
?GetWChar@CMemDeSerStream@@UEAAXPEAGK@Z
; public: virtual unsigned short * __ptr64 __cdecl CMemDeSerStream::GetWString(void) __ptr64
?GetWString@CMemDeSerStream@@UEAAPEAGXZ
; public: long __cdecl CDbCmdTreeNode::GetWeight(void)const  __ptr64
?GetWeight@CDbCmdTreeNode@@QEBAJXZ
; public: void __cdecl CDynStream::Grow(class PStorage & __ptr64,unsigned long) __ptr64
?Grow@CDynStream@@QEAAXAEAVPStorage@@K@Z
; private: void __cdecl CVirtualString::GrowBuffer(unsigned long) __ptr64
?GrowBuffer@CVirtualString@@AEAAXK@Z
; void __cdecl HTMLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long)
?HTMLEscapeW@@YAXPEBGAEAVCVirtualString@@K@Z
; private: void __cdecl CImpersonateClient::Impersonate(void) __ptr64
?Impersonate@CImpersonateClient@@AEAAXXZ
; public: void __cdecl CFileMapView::Init(void) __ptr64
?Init@CFileMapView@@QEAAXXZ
; public: void __cdecl CMmStreamConsecBuf::Init(class PMmStream * __ptr64) __ptr64
?Init@CMmStreamConsecBuf@@QEAAXPEAVPMmStream@@@Z
; public: int __cdecl CPidLookupTable::Init(class PRcovStorageObj * __ptr64) __ptr64
?Init@CPidLookupTable@@QEAAHPEAVPRcovStorageObj@@@Z
; public: void __cdecl CRcovStorageHdr::Init(unsigned long) __ptr64
?Init@CRcovStorageHdr@@QEAAXK@Z
; public: void __cdecl CRegChangeEvent::Init(void) __ptr64
?Init@CRegChangeEvent@@QEAAXXZ
; public: int __cdecl CSdidLookupTable::Init(class CiStorage * __ptr64) __ptr64
?Init@CSdidLookupTable@@QEAAHPEAVCiStorage@@@Z
; public: virtual void __cdecl CPropertyList::InitIterator(void) __ptr64
?InitIterator@CPropertyList@@UEAAXXZ
; public: void __cdecl CImpersonationTokenCache::Initialize(unsigned short const * __ptr64,int,int,int,unsigned long,unsigned long,unsigned long) __ptr64
?Initialize@CImpersonationTokenCache@@QEAAXPEBGHHHKKK@Z
; public: void __cdecl CDynStream::InitializeForRead(void) __ptr64
?InitializeForRead@CDynStream@@QEAAXXZ
; public: void __cdecl CDynStream::InitializeForWrite(unsigned long) __ptr64
?InitializeForWrite@CDynStream@@QEAAXK@Z
; protected: void __cdecl CDbCmdTreeNode::InsertChild(class CDbCmdTreeNode * __ptr64) __ptr64
?InsertChild@CDbCmdTreeNode@@IEAAXPEAV1@@Z
; public: int __cdecl CMachineAdmin::IsCIEnabled(void) __ptr64
?IsCIEnabled@CMachineAdmin@@QEAAHXZ
; public: int __cdecl CMachineAdmin::IsCIPaused(void) __ptr64
?IsCIPaused@CMachineAdmin@@QEAAHXZ
; public: int __cdecl CMachineAdmin::IsCIStarted(void) __ptr64
?IsCIStarted@CMachineAdmin@@QEAAHXZ
; public: int __cdecl CMachineAdmin::IsCIStopped(void) __ptr64
?IsCIStopped@CMachineAdmin@@QEAAHXZ
; public: int __cdecl CCatalogAdmin::IsCatalogInactive(void) __ptr64
?IsCatalogInactive@CCatalogAdmin@@QEAAHXZ
; int __cdecl IsDirectoryWritable(unsigned short const * __ptr64)
?IsDirectoryWritable@@YAHPEBG@Z
; public: static int __cdecl CMetaDataMgr::IsIISAdminUp(int & __ptr64)
?IsIISAdminUp@CMetaDataMgr@@SAHAEAH@Z
; public: static int __cdecl CImpersonateSystem::IsImpersonated(void)
?IsImpersonated@CImpersonateSystem@@SAHXZ
; public: int __cdecl CRestriction::IsLeaf(void)const  __ptr64
?IsLeaf@CRestriction@@QEBAHXZ
; int __cdecl IsNullPointerVariant(struct tagPROPVARIANT * __ptr64)
?IsNullPointerVariant@@YAHPEAUtagPROPVARIANT@@@Z
; public: int __cdecl CCatalogAdmin::IsPaused(void) __ptr64
?IsPaused@CCatalogAdmin@@QEAAHXZ
; public: static int __cdecl CImpersonateSystem::IsRunningAsSystem(void)
?IsRunningAsSystem@CImpersonateSystem@@SAHXZ
; public: int __cdecl CDriveInfo::IsSameDrive(unsigned short const * __ptr64) __ptr64
?IsSameDrive@CDriveInfo@@QEAAHPEBG@Z
; long __cdecl IsScopeValid(unsigned short const * __ptr64,unsigned int,int)
?IsScopeValid@@YAJPEBGIH@Z
; public: int __cdecl CCatalogAdmin::IsStarted(void) __ptr64
?IsStarted@CCatalogAdmin@@QEAAHXZ
; public: int __cdecl CCatalogAdmin::IsStopped(void) __ptr64
?IsStopped@CCatalogAdmin@@QEAAHXZ
; public: int __cdecl CAllocStorageVariant::IsValid(void)const  __ptr64
?IsValid@CAllocStorageVariant@@QEBAHXZ
; public: int __cdecl CNodeRestriction::IsValid(void)const  __ptr64
?IsValid@CNodeRestriction@@QEBAHXZ
; public: int __cdecl COccRestriction::IsValid(void)const  __ptr64
?IsValid@COccRestriction@@QEBAHXZ
; public: int __cdecl CRestriction::IsValid(void)const  __ptr64
?IsValid@CRestriction@@QEBAHXZ
; public: int __cdecl CFilterDaemon::IsWaitingForDocument(void) __ptr64
?IsWaitingForDocument@CFilterDaemon@@QEAAHXZ
; public: int __cdecl CDriveInfo::IsWriteProtected(void) __ptr64
?IsWriteProtected@CDriveInfo@@QEAAHXZ
; public: void __cdecl CLocalGlobalPropertyList::Load(unsigned short const * __ptr64 const) __ptr64
?Load@CLocalGlobalPropertyList@@QEAAXQEBG@Z
; unsigned long __cdecl LocaleToCodepage(unsigned long)
?LocaleToCodepage@@YAKK@Z
; private: unsigned long __cdecl CPropertyStore::LokNewWorkId(unsigned long,int,int) __ptr64
?LokNewWorkId@CPropertyStore@@AEAAKKHH@Z
; public: int __cdecl CCatStateInfo::LokUpdate(void) __ptr64
?LokUpdate@CCatStateInfo@@QEAAHXZ
; public: void __cdecl CPropStoreManager::LongInit(int & __ptr64,unsigned long & __ptr64,void (__cdecl*)(unsigned long,int,void const * __ptr64),void const * __ptr64) __ptr64
?LongInit@CPropStoreManager@@QEAAXAEAHAEAKP6AXKHPEBX@Z2@Z
; private: unsigned int __cdecl CPropStoreInfo::Lookup(unsigned long) __ptr64
?Lookup@CPropStoreInfo@@AEAAIK@Z
; public: unsigned long __cdecl CSdidLookupTable::LookupSDID(void * __ptr64,unsigned long) __ptr64
?LookupSDID@CSdidLookupTable@@QEAAKPEAXK@Z
; public: void __cdecl CPhysStorage::MakeBackupCopy(class CPhysStorage & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
?MakeBackupCopy@CPhysStorage@@QEAAXAEAV1@AEAVPSaveProgressTracker@@@Z
; public: void __cdecl CPidLookupTable::MakeBackupCopy(class PRcovStorageObj & __ptr64,class PSaveProgressTracker & __ptr64) __ptr64
?MakeBackupCopy@CPidLookupTable@@QEAAXAEAVPRcovStorageObj@@AEAVPSaveProgressTracker@@@Z
; public: void __cdecl CPropStoreManager::MakeBackupCopy(struct IProgressNotify * __ptr64,int & __ptr64,class CiStorage & __ptr64,struct ICiEnumWorkids * __ptr64,struct IEnumString * __ptr64 * __ptr64) __ptr64
?MakeBackupCopy@CPropStoreManager@@QEAAXPEAUIProgressNotify@@AEAHAEAVCiStorage@@PEAUICiEnumWorkids@@PEAPEAUIEnumString@@@Z
; long __cdecl MakeICommand(struct IUnknown * __ptr64 * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
?MakeICommand@@YAJPEAPEAUIUnknown@@PEBG1PEAU1@@Z
; long __cdecl MakeISearch(struct ISearchQueryHits * __ptr64 * __ptr64,class CDbRestriction * __ptr64,unsigned short const * __ptr64)
?MakeISearch@@YAJPEAPEAUISearchQueryHits@@PEAVCDbRestriction@@PEBG@Z
; long __cdecl MakeLocalICommand(struct IUnknown * __ptr64 * __ptr64,struct ICiCDocStore * __ptr64,struct IUnknown * __ptr64)
?MakeLocalICommand@@YAJPEAPEAUIUnknown@@PEAUICiCDocStore@@PEAU1@@Z
; long __cdecl MakeMetadataICommand(struct IUnknown * __ptr64 * __ptr64,enum CiMetaData,unsigned short const * __ptr64,unsigned short const * __ptr64,struct IUnknown * __ptr64)
?MakeMetadataICommand@@YAJPEAPEAUIUnknown@@W4CiMetaData@@PEBG2PEAU1@@Z
; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64) __ptr64
?MakePath@CFullPath@@QEAAXPEBG@Z
; public: void __cdecl CFullPath::MakePath(unsigned short const * __ptr64,unsigned int) __ptr64
?MakePath@CFullPath@@QEAAXPEBGI@Z
; private: void __cdecl CImpersonateSystem::MakePrivileged(void) __ptr64
?MakePrivileged@CImpersonateSystem@@AEAAXXZ
; public: void __cdecl CMmStreamConsecBuf::Map(unsigned long) __ptr64
?Map@CMmStreamConsecBuf@@QEAAXK@Z
; public: int __cdecl CDynStream::MarkDirty(void) __ptr64
?MarkDirty@CDynStream@@QEAAHXZ
; public: void __cdecl CBaseStorageVariant::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CBaseStorageVariant@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CContentRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CContentRestriction@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CDbCmdTreeNode::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CDbCmdTreeNode@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CFullPropSpec::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CFullPropSpec@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CNatLanguageRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CNatLanguageRestriction@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CNodeRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CNodeRestriction@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CNotRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CNotRestriction@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CPropNameArray::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CPropNameArray@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CPropertyRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CPropertyRestriction@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CRestriction@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CVectorRestriction::Marshall(class PSerStream & __ptr64)const  __ptr64
?Marshall@CVectorRestriction@@QEBAXAEAVPSerStream@@@Z
; public: int __cdecl CBufferCache::MinPageInUse(unsigned long & __ptr64) __ptr64
?MinPageInUse@CBufferCache@@QEAAHAEAK@Z
; public: int __cdecl CPhysStorage::MinPageInUse(unsigned long & __ptr64) __ptr64
?MinPageInUse@CPhysStorage@@QEAAHAEAK@Z
; unsigned long __cdecl MultiByteToXArrayWideChar(unsigned char const * __ptr64,unsigned long,unsigned int,class XArray<unsigned short> & __ptr64)
?MultiByteToXArrayWideChar@@YAKPEBEKIAEAV?$XArray@G@@@Z
; unsigned __int64 __cdecl My_wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
?My_wcstoui64@@YA_KPEBGPEAPEAGH@Z
; public: unsigned long __cdecl CPidRemapper::NameToReal(class CFullPropSpec const * __ptr64) __ptr64
?NameToReal@CPidRemapper@@QEAAKPEBVCFullPropSpec@@@Z
; public: static struct IStemmer * __ptr64 __cdecl CCiOle::NewStemmer(struct _GUID const & __ptr64)
?NewStemmer@CCiOle@@SAPEAUIStemmer@@AEBU_GUID@@@Z
; public: static struct IWordBreaker * __ptr64 __cdecl CCiOle::NewWordBreaker(struct _GUID const & __ptr64)
?NewWordBreaker@CCiOle@@SAPEAUIWordBreaker@@AEBU_GUID@@@Z
; public: int __cdecl CCatalogEnum::Next(void) __ptr64
?Next@CCatalogEnum@@QEAAHXZ
; public: virtual long __cdecl CEnumString::Next(unsigned long,unsigned short * __ptr64 * __ptr64,unsigned long * __ptr64) __ptr64
?Next@CEnumString@@UEAAJKPEAPEAGPEAK@Z
; public: virtual long __cdecl CEnumWorkid::Next(unsigned long,unsigned long * __ptr64,unsigned long * __ptr64) __ptr64
?Next@CEnumWorkid@@UEAAJKPEAK0@Z
; public: virtual class CPropEntry const * __ptr64 __cdecl CPropertyList::Next(void) __ptr64
?Next@CPropertyList@@UEAAPEBVCPropEntry@@XZ
; public: int __cdecl CScopeEnum::Next(void) __ptr64
?Next@CScopeEnum@@QEAAHXZ
; public: unsigned long __cdecl CPropertyStoreWids::NextWorkId(void) __ptr64
?NextWorkId@CPropertyStoreWids@@QEAAKXZ
; public: unsigned int __cdecl CCatState::NumberOfColumns(void)const  __ptr64
?NumberOfColumns@CCatState@@QEBAIXZ
; public: unsigned int __cdecl CCatState::NumberOfSortProps(void)const  __ptr64
?NumberOfSortProps@CCatState@@QEBAIXZ
; public: void __cdecl CMmStream::Open(unsigned short const * __ptr64,unsigned long,unsigned long,unsigned long,unsigned long,int) __ptr64
?Open@CMmStream@@QEAAXPEBGKKKKH@Z
; public: int __cdecl COLEPropManager::Open(class CFunnyPath const & __ptr64) __ptr64
?Open@COLEPropManager@@QEAAHAEBVCFunnyPath@@@Z
; public: void __cdecl CMmStream::OpenExclusive(unsigned short * __ptr64,int) __ptr64
?OpenExclusive@CMmStream@@QEAAXPEAGH@Z
; struct _iobuf * __ptr64 __cdecl OpenFileFromPath(unsigned short const * __ptr64)
?OpenFileFromPath@@YAPEAU_iobuf@@PEBG@Z
; public: class CCompositePropRecord * __ptr64 __cdecl CPropStoreManager::OpenRecord(unsigned long,unsigned char * __ptr64) __ptr64
?OpenRecord@CPropStoreManager@@QEAAPEAVCCompositePropRecord@@KPEAE@Z
; public: class CCompositePropRecordForWrites * __ptr64 __cdecl CPropStoreManager::OpenRecordForWrites(unsigned long,unsigned char * __ptr64) __ptr64
?OpenRecordForWrites@CPropStoreManager@@QEAAPEAVCCompositePropRecordForWrites@@KPEAE@Z
; long __cdecl ParseCatalogURL(unsigned short const * __ptr64,class XPtrST<unsigned short> & __ptr64,class XPtrST<unsigned short> & __ptr64)
?ParseCatalogURL@@YAJPEBGAEAV?$XPtrST@G@@1@Z
; public: class CRestriction * __ptr64 __cdecl CParseCommandTree::ParseExpression(class CDbCmdTreeNode * __ptr64) __ptr64
?ParseExpression@CParseCommandTree@@QEAAPEAVCRestriction@@PEAVCDbCmdTreeNode@@@Z
; public: static void __cdecl CPropertyList::ParseOneLine(class CQueryScanner & __ptr64,int,class XPtr<class CPropEntry> & __ptr64)
?ParseOneLine@CPropertyList@@SAXAEAVCQueryScanner@@HAEAV?$XPtr@VCPropEntry@@@@@Z
; public: class CDbRestriction * __ptr64 __cdecl CQueryParser::ParseQueryPhrase(void) __ptr64
?ParseQueryPhrase@CQueryParser@@QEAAPEAVCDbRestriction@@XZ
; class CDbColumns * __ptr64 __cdecl ParseStringColumns(unsigned short const * __ptr64,struct IColumnMapper * __ptr64,unsigned long,class PVariableSet * __ptr64,class CDynArray<unsigned short> * __ptr64)
?ParseStringColumns@@YAPEAVCDbColumns@@PEBGPEAUIColumnMapper@@KPEAVPVariableSet@@PEAV?$CDynArray@G@@@Z
; public: int __cdecl CCatalogAdmin::Pause(void) __ptr64
?Pause@CCatalogAdmin@@QEAAHXZ
; public: int __cdecl CMachineAdmin::PauseCI(void) __ptr64
?PauseCI@CMachineAdmin@@QEAAHXZ
; public: virtual unsigned long __cdecl CMemDeSerStream::PeekULong(void) __ptr64
?PeekULong@CMemDeSerStream@@UEAAKXZ
; public: unsigned long __cdecl CPidMapper::PidToRealPid(unsigned long) __ptr64
?PidToRealPid@CPidMapper@@QEAAKK@Z
; public: unsigned long __cdecl CStandardPropMapper::PropertyToPropId(class CFullPropSpec const & __ptr64,int) __ptr64
?PropertyToPropId@CStandardPropMapper@@QEAAKAEBVCFullPropSpec@@H@Z
; public: virtual long __cdecl CFwPropertyMapper::PropertyToPropid(struct tagFULLPROPSPEC const * __ptr64,int,unsigned long * __ptr64) __ptr64
?PropertyToPropid@CFwPropertyMapper@@UEAAJPEBUtagFULLPROPSPEC@@HPEAK@Z
; public: void __cdecl CValueNormalizer::PutMaxValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
?PutMaxValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
; public: void __cdecl CValueNormalizer::PutMinValue(unsigned long,unsigned long & __ptr64,enum VARENUM) __ptr64
?PutMinValue@CValueNormalizer@@QEAAXKAEAKW4VARENUM@@@Z
; public: void __cdecl CValueNormalizer::PutValue(unsigned long,unsigned long & __ptr64,class CStorageVariant const & __ptr64) __ptr64
?PutValue@CValueNormalizer@@QEAAXKAEAKAEBVCStorageVariant@@@Z
; void __cdecl PutWString(class PSerStream & __ptr64,unsigned short const * __ptr64)
?PutWString@@YAXAEAVPSerStream@@PEBG@Z
; private: class CDbRestriction * __ptr64 __cdecl CQueryParser::Query(class CDbNodeRestriction * __ptr64) __ptr64
?Query@CQueryParser@@AEAAPEAVCDbRestriction@@PEAVCDbNodeRestriction@@@Z
; public: class CCatalogAdmin * __ptr64 __cdecl CCatalogEnum::QueryCatalogAdmin(void) __ptr64
?QueryCatalogAdmin@CCatalogEnum@@QEAAPEAVCCatalogAdmin@@XZ
; public: class CCatalogAdmin * __ptr64 __cdecl CMachineAdmin::QueryCatalogAdmin(unsigned short const * __ptr64) __ptr64
?QueryCatalogAdmin@CMachineAdmin@@QEAAPEAVCCatalogAdmin@@PEBG@Z
; public: class CCatalogEnum * __ptr64 __cdecl CMachineAdmin::QueryCatalogEnum(void) __ptr64
?QueryCatalogEnum@CMachineAdmin@@QEAAPEAVCCatalogEnum@@XZ
; public: virtual long __cdecl CDbProperties::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CDbProperties@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: virtual long __cdecl CEmptyPropertyList::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CEmptyPropertyList@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: virtual long __cdecl CEnumString::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CEnumString@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: virtual long __cdecl CEnumWorkid::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CEnumWorkid@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: virtual long __cdecl CFwPropertyMapper::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CFwPropertyMapper@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: virtual long __cdecl CQueryUnknown::QueryInterface(struct _GUID const & __ptr64,void * __ptr64 * __ptr64) __ptr64
?QueryInterface@CQueryUnknown@@UEAAJAEBU_GUID@@PEAPEAX@Z
; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryPidLookupTable(unsigned long) __ptr64
?QueryPidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
; public: class CScopeAdmin * __ptr64 __cdecl CCatalogAdmin::QueryScopeAdmin(unsigned short const * __ptr64) __ptr64
?QueryScopeAdmin@CCatalogAdmin@@QEAAPEAVCScopeAdmin@@PEBG@Z
; public: class CScopeAdmin * __ptr64 __cdecl CScopeEnum::QueryScopeAdmin(void) __ptr64
?QueryScopeAdmin@CScopeEnum@@QEAAPEAVCScopeAdmin@@XZ
; public: class CScopeEnum * __ptr64 __cdecl CCatalogAdmin::QueryScopeEnum(void) __ptr64
?QueryScopeEnum@CCatalogAdmin@@QEAAPEAVCScopeEnum@@XZ
; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryScopeList(unsigned long) __ptr64
?QueryScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QuerySdidLookupTable(unsigned long) __ptr64
?QuerySdidLookupTable@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
; public: class PRcovStorageObj * __ptr64 __cdecl CiStorage::QueryVirtualScopeList(unsigned long) __ptr64
?QueryVirtualScopeList@CiStorage@@QEAAPEAVPRcovStorageObj@@K@Z
; public: void __cdecl CPidRemapper::ReBuild(class CPidMapper const & __ptr64) __ptr64
?ReBuild@CPidRemapper@@QEAAXAEBVCPidMapper@@@Z
; public: void __cdecl CQueryUnknown::ReInit(unsigned long,class CRowset * __ptr64 * __ptr64) __ptr64
?ReInit@CQueryUnknown@@QEAAXKPEAPEAVCRowset@@@Z
; public: void __cdecl CImpersonationTokenCache::ReInitializeIISScopes(void) __ptr64
?ReInitializeIISScopes@CImpersonationTokenCache@@QEAAXXZ
; private: virtual void __cdecl CPhysIndex::ReOpenStream(void) __ptr64
?ReOpenStream@CPhysIndex@@EEAAXXZ
; public: unsigned long __cdecl CDynStream::Read(void * __ptr64,unsigned long) __ptr64
?Read@CDynStream@@QEAAKPEAXK@Z
; public: unsigned long __cdecl CRcovStrmTrans::Read(void * __ptr64,unsigned long) __ptr64
?Read@CRcovStrmTrans@@QEAAKPEAXK@Z
; public: unsigned long __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned long) __ptr64
?Read@CRegAccess@@QEAAKPEBGK@Z
; public: unsigned short * __ptr64 __cdecl CRegAccess::Read(unsigned short const * __ptr64,unsigned short const * __ptr64) __ptr64
?Read@CRegAccess@@QEAAPEAGPEBG0@Z
; public: int __cdecl CPropStoreManager::ReadPrimaryProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
?ReadPrimaryProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
; public: int __cdecl COLEPropManager::ReadProperty(class CFullPropSpec const & __ptr64,struct tagPROPVARIANT & __ptr64) __ptr64
?ReadProperty@COLEPropManager@@QEAAHAEBVCFullPropSpec@@AEAUtagPROPVARIANT@@@Z
; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@@Z
; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KAEAUtagPROPVARIANT@@PEAEPEAI@Z
; public: int __cdecl CPropStoreManager::ReadProperty(class CCompositePropRecord & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
?ReadProperty@CPropStoreManager@@QEAAHAEAVCCompositePropRecord@@KPEAUtagPROPVARIANT@@PEAI@Z
; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@@Z
; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64,unsigned char * __ptr64,unsigned int * __ptr64) __ptr64
?ReadProperty@CPropStoreManager@@QEAAHKKAEAUtagPROPVARIANT@@PEAEPEAI@Z
; public: int __cdecl CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
?ReadProperty@CPropStoreManager@@QEAAHKKPEAUtagPROPVARIANT@@PEAI@Z
; public: int __cdecl CPropertyStore::ReadProperty(class CPropRecordNoLock & __ptr64,unsigned long,struct tagPROPVARIANT * __ptr64,unsigned int * __ptr64) __ptr64
?ReadProperty@CPropertyStore@@QEAAHAEAVCPropRecordNoLock@@KPEAUtagPROPVARIANT@@PEAI@Z
; public: int __cdecl CPropertyStore::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT & __ptr64) __ptr64
?ReadProperty@CPropertyStore@@QEAAHKKAEAUtagPROPVARIANT@@@Z
; public: unsigned char __cdecl CDFA::Recognize(unsigned short const * __ptr64) __ptr64
?Recognize@CDFA@@QEAAEPEBG@Z
; public: void __cdecl CCiRegParams::Refresh(struct ICiAdminParams * __ptr64,int) __ptr64
?Refresh@CCiRegParams@@QEAAXPEAUICiAdminParams@@H@Z
; public: void __cdecl CDefColumnRegEntry::Refresh(int) __ptr64
?Refresh@CDefColumnRegEntry@@QEAAXH@Z
; public: void __cdecl CWorkQueue::RefreshParams(unsigned long,unsigned long) __ptr64
?RefreshParams@CWorkQueue@@QEAAXKK@Z
; public: virtual unsigned long __cdecl CDbProperties::Release(void) __ptr64
?Release@CDbProperties@@UEAAKXZ
; public: virtual unsigned long __cdecl CEmptyPropertyList::Release(void) __ptr64
?Release@CEmptyPropertyList@@UEAAKXZ
; public: virtual unsigned long __cdecl CEnumString::Release(void) __ptr64
?Release@CEnumString@@UEAAKXZ
; public: virtual unsigned long __cdecl CEnumWorkid::Release(void) __ptr64
?Release@CEnumWorkid@@UEAAKXZ
; public: virtual unsigned long __cdecl CFwPropertyMapper::Release(void) __ptr64
?Release@CFwPropertyMapper@@UEAAKXZ
; public: void __cdecl CImpersonateRemoteAccess::Release(void) __ptr64
?Release@CImpersonateRemoteAccess@@QEAAXXZ
; public: virtual unsigned long __cdecl CQueryUnknown::Release(void) __ptr64
?Release@CQueryUnknown@@UEAAKXZ
; public: void __cdecl CWorkQueue::Release(class CWorkThread * __ptr64) __ptr64
?Release@CWorkQueue@@QEAAXPEAVCWorkThread@@@Z
; private: void __cdecl CPropertyStore::ReleaseRead(class CReadWriteLockRecord & __ptr64) __ptr64
?ReleaseRead@CPropertyStore@@AEAAXAEAVCReadWriteLockRecord@@@Z
; public: void __cdecl CWorkQueue::ReleaseWorkThreads(void) __ptr64
?ReleaseWorkThreads@CWorkQueue@@QEAAXXZ
; public: void __cdecl CColumns::Remove(unsigned int) __ptr64
?Remove@CColumns@@QEAAXI@Z
; public: void __cdecl CDbSortSet::Remove(unsigned int) __ptr64
?Remove@CDbSortSet@@QEAAXI@Z
; public: void __cdecl CSort::Remove(unsigned int) __ptr64
?Remove@CSort@@QEAAXI@Z
; private: void __cdecl CWorkQueue::Remove(class CWorkThread & __ptr64) __ptr64
?Remove@CWorkQueue@@AEAAXAEAVCWorkThread@@@Z
; public: void __cdecl CWorkQueue::Remove(class PWorkItem * __ptr64) __ptr64
?Remove@CWorkQueue@@QEAAXPEAVPWorkItem@@@Z
; public: void __cdecl CMachineAdmin::RemoveCatalog(unsigned short const * __ptr64,int) __ptr64
?RemoveCatalog@CMachineAdmin@@QEAAXPEBGH@Z
; public: void __cdecl CMachineAdmin::RemoveCatalogFiles(unsigned short const * __ptr64) __ptr64
?RemoveCatalogFiles@CMachineAdmin@@QEAAXPEBG@Z
; public: class CRestriction * __ptr64 __cdecl CNodeRestriction::RemoveChild(unsigned int) __ptr64
?RemoveChild@CNodeRestriction@@QEAAPEAVCRestriction@@I@Z
; protected: class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::RemoveFirstChild(void) __ptr64
?RemoveFirstChild@CDbCmdTreeNode@@IEAAPEAV1@XZ
; public: void __cdecl CCatalogAdmin::RemoveScope(unsigned short const * __ptr64) __ptr64
?RemoveScope@CCatalogAdmin@@QEAAXPEBG@Z
; public: void __cdecl CPhysStorage::Reopen(int) __ptr64
?Reopen@CPhysStorage@@QEAAXH@Z
; public: void __cdecl CEventLog::ReportEventW(class CEventItem & __ptr64) __ptr64
?ReportEventW@CEventLog@@QEAAXAEAVCEventItem@@@Z
; public: void __cdecl CFwEventItem::ReportEventW(struct ICiCAdviseStatus & __ptr64) __ptr64
?ReportEventW@CFwEventItem@@QEAAXAEAUICiCAdviseStatus@@@Z
; public: int __cdecl CPhysStorage::RequiresFlush(unsigned long) __ptr64
?RequiresFlush@CPhysStorage@@QEAAHK@Z
; public: void __cdecl CRegChangeEvent::Reset(void) __ptr64
?Reset@CRegChangeEvent@@QEAAXXZ
; public: void __cdecl CQueryScanner::ResetBuffer(unsigned short const * __ptr64) __ptr64
?ResetBuffer@CQueryScanner@@QEAAXPEBG@Z
; protected: void __cdecl CAllocStorageVariant::ResetType(class PMemoryAllocator & __ptr64) __ptr64
?ResetType@CAllocStorageVariant@@IEAAXAEAVPMemoryAllocator@@@Z
; public: void __cdecl CProcess::Resume(void) __ptr64
?Resume@CProcess@@QEAAXXZ
; public: void __cdecl CPhysStorage::ReturnBuffer(unsigned long,int,int) __ptr64
?ReturnBuffer@CPhysStorage@@QEAAXKHH@Z
; public: void __cdecl CMmStreamConsecBuf::Rewind(void) __ptr64
?Rewind@CMmStreamConsecBuf@@QEAAXXZ
; unsigned long __cdecl SaComputeSize(unsigned short,struct tagSAFEARRAY & __ptr64)
?SaComputeSize@@YAKGAEAUtagSAFEARRAY@@@Z
; int __cdecl SaCreateAndCopy(class PMemoryAllocator & __ptr64,struct tagSAFEARRAY * __ptr64,struct tagSAFEARRAY * __ptr64 * __ptr64)
?SaCreateAndCopy@@YAHAEAVPMemoryAllocator@@PEAUtagSAFEARRAY@@PEAPEAU2@@Z
; int __cdecl SaCreateData(class PVarAllocator & __ptr64,unsigned short,struct tagSAFEARRAY & __ptr64,struct tagSAFEARRAY & __ptr64,int)
?SaCreateData@@YAHAEAVPVarAllocator@@GAEAUtagSAFEARRAY@@1H@Z
; public: int __cdecl CRcovStrmTrans::Seek(unsigned long) __ptr64
?Seek@CRcovStrmTrans@@QEAAHK@Z
; public: void __cdecl CDbQueryResults::Serialize(class PSerStream & __ptr64)const  __ptr64
?Serialize@CDbQueryResults@@QEBAXAEAVPSerStream@@@Z
; public: void __cdecl CPidRemapper::Set(class XArray<unsigned long> & __ptr64) __ptr64
?Set@CPidRemapper@@QEAAXAEAV?$XArray@K@@@Z
; public: void __cdecl CScopeAdmin::SetAlias(unsigned short const * __ptr64) __ptr64
?SetAlias@CScopeAdmin@@QEAAXPEBG@Z
; public: void __cdecl CStorageVariant::SetBOOL(short,unsigned int) __ptr64
?SetBOOL@CStorageVariant@@QEAAXFI@Z
; public: void __cdecl CAllocStorageVariant::SetBSTR(unsigned short * __ptr64,class PMemoryAllocator & __ptr64) __ptr64
?SetBSTR@CAllocStorageVariant@@QEAAXPEAGAEAVPMemoryAllocator@@@Z
; public: void __cdecl CStorageVariant::SetBSTR(unsigned short * __ptr64,unsigned int) __ptr64
?SetBSTR@CStorageVariant@@QEAAXPEAGI@Z
; public: void __cdecl CPropStoreManager::SetBackupSize(unsigned long,unsigned long) __ptr64
?SetBackupSize@CPropStoreManager@@QEAAXKK@Z
; public: void __cdecl CCatState::SetCD(unsigned short const * __ptr64) __ptr64
?SetCD@CCatState@@QEAAXPEBG@Z
; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID const * __ptr64) __ptr64
?SetCLSID@CStorageVariant@@QEAAXPEBU_GUID@@@Z
; public: void __cdecl CStorageVariant::SetCLSID(struct _GUID,unsigned int) __ptr64
?SetCLSID@CStorageVariant@@QEAAXU_GUID@@I@Z
; public: void __cdecl CStorageVariant::SetCY(union tagCY,unsigned int) __ptr64
?SetCY@CStorageVariant@@QEAAXTtagCY@@I@Z
; public: void __cdecl CCatState::SetCatalog(unsigned short const * __ptr64) __ptr64
?SetCatalog@CCatState@@QEAAXPEBG@Z
; public: void __cdecl CCatState::SetColumn(unsigned short const * __ptr64,unsigned int) __ptr64
?SetColumn@CCatState@@QEAAXPEBGI@Z
; private: void __cdecl CQueryParser::SetCurrentProperty(unsigned short const * __ptr64,enum PropertyType) __ptr64
?SetCurrentProperty@CQueryParser@@AEAAXPEBGW4PropertyType@@@Z
; public: void __cdecl CStorageVariant::SetDATE(double,unsigned int) __ptr64
?SetDATE@CStorageVariant@@QEAAXNI@Z
; public: void __cdecl CCatalogAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
?SetDWORDParam@CCatalogAdmin@@QEAAXPEBGK@Z
; public: void __cdecl CMachineAdmin::SetDWORDParam(unsigned short const * __ptr64,unsigned long) __ptr64
?SetDWORDParam@CMachineAdmin@@QEAAXPEBGK@Z
; public: void __cdecl CCatState::SetDefaultProperty(unsigned short const * __ptr64) __ptr64
?SetDefaultProperty@CCatState@@QEAAXPEBG@Z
; public: void __cdecl CScopeAdmin::SetExclude(int) __ptr64
?SetExclude@CScopeAdmin@@QEAAXH@Z
; public: void __cdecl CStorageVariant::SetFILETIME(struct _FILETIME,unsigned int) __ptr64
?SetFILETIME@CStorageVariant@@QEAAXU_FILETIME@@I@Z
; public: void __cdecl CStorageVariant::SetI2(short,unsigned int) __ptr64
?SetI2@CStorageVariant@@QEAAXFI@Z
; public: void __cdecl CStorageVariant::SetI4(long,unsigned int) __ptr64
?SetI4@CStorageVariant@@QEAAXJI@Z
; public: void __cdecl CStorageVariant::SetI8(union _LARGE_INTEGER,unsigned int) __ptr64
?SetI8@CStorageVariant@@QEAAXT_LARGE_INTEGER@@I@Z
; public: void __cdecl CStorageVariant::SetLPSTR(char const * __ptr64,unsigned int) __ptr64
?SetLPSTR@CStorageVariant@@QEAAXPEBDI@Z
; public: void __cdecl CStorageVariant::SetLPWSTR(unsigned short const * __ptr64,unsigned int) __ptr64
?SetLPWSTR@CStorageVariant@@QEAAXPEBGI@Z
; public: void __cdecl CCatState::SetLocale(unsigned short const * __ptr64) __ptr64
?SetLocale@CCatState@@QEAAXPEBG@Z
; public: void __cdecl CScopeAdmin::SetLogonInfo(unsigned short const * __ptr64,unsigned short const * __ptr64,class CCatalogAdmin & __ptr64) __ptr64
?SetLogonInfo@CScopeAdmin@@QEAAXPEBG0AEAVCCatalogAdmin@@@Z
; public: void __cdecl CPropStoreManager::SetMappedCacheSize(unsigned long,unsigned long) __ptr64
?SetMappedCacheSize@CPropStoreManager@@QEAAXKK@Z
; public: void __cdecl CCatState::SetNumberOfColumns(unsigned int) __ptr64
?SetNumberOfColumns@CCatState@@QEAAXI@Z
; public: void __cdecl CCatState::SetNumberOfSortProps(unsigned int) __ptr64
?SetNumberOfSortProps@CCatState@@QEAAXI@Z
; public: void __cdecl CScopeAdmin::SetPath(unsigned short const * __ptr64) __ptr64
?SetPath@CScopeAdmin@@QEAAXPEBG@Z
; public: void __cdecl CContentRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
?SetPhrase@CContentRestriction@@QEAAXPEBG@Z
; public: void __cdecl CNatLanguageRestriction::SetPhrase(unsigned short const * __ptr64) __ptr64
?SetPhrase@CNatLanguageRestriction@@QEAAXPEBG@Z
; public: void __cdecl CGenericCiProxy::SetPriority(unsigned long,unsigned long) __ptr64
?SetPriority@CGenericCiProxy@@QEAAXKK@Z
; public: virtual long __cdecl CDbProperties::SetProperties(unsigned long,struct tagDBPROPSET * __ptr64 const) __ptr64
?SetProperties@CDbProperties@@UEAAJKQEAUtagDBPROPSET@@@Z
; public: int __cdecl CDbColId::SetProperty(unsigned short const * __ptr64) __ptr64
?SetProperty@CDbColId@@QEAAHPEBG@Z
; public: int __cdecl CDbPropBaseRestriction::SetProperty(struct tagDBID const & __ptr64) __ptr64
?SetProperty@CDbPropBaseRestriction@@QEAAHAEBUtagDBID@@@Z
; public: int __cdecl CDbPropBaseRestriction::SetProperty(class CDbColumnNode const & __ptr64) __ptr64
?SetProperty@CDbPropBaseRestriction@@QEAAHAEBVCDbColumnNode@@@Z
; public: int __cdecl CFullPropSpec::SetProperty(unsigned short const * __ptr64) __ptr64
?SetProperty@CFullPropSpec@@QEAAHPEBG@Z
; public: void __cdecl CFullPropSpec::SetProperty(unsigned long) __ptr64
?SetProperty@CFullPropSpec@@QEAAXK@Z
; public: void __cdecl CStorageVariant::SetR4(float,unsigned int) __ptr64
?SetR4@CStorageVariant@@QEAAXMI@Z
; public: void __cdecl CStorageVariant::SetR8(double,unsigned int) __ptr64
?SetR8@CStorageVariant@@QEAAXNI@Z
; public: int __cdecl CDbSelectNode::SetRestriction(class CDbCmdTreeNode * __ptr64) __ptr64
?SetRestriction@CDbSelectNode@@QEAAHPEAVCDbCmdTreeNode@@@Z
; public: static void __cdecl CImpersonateSystem::SetRunningAsSystem(void)
?SetRunningAsSystem@CImpersonateSystem@@SAXXZ
; public: void __cdecl CMachineAdmin::SetSZParam(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
?SetSZParam@CMachineAdmin@@QEAAXPEBG0K@Z
; void __cdecl SetScopeProperties(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
?SetScopeProperties@@YAXPEAUICommand@@IPEBQEBGPEBK11@Z
; long __cdecl SetScopePropertiesNoThrow(struct ICommand * __ptr64,unsigned int,unsigned short const * __ptr64 const * __ptr64,unsigned long const * __ptr64,unsigned short const * __ptr64 const * __ptr64,unsigned short const * __ptr64 const * __ptr64)
?SetScopePropertiesNoThrow@@YAJPEAUICommand@@IPEBQEBGPEBK11@Z
; void __cdecl SetSecret(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long)
?SetSecret@@YAXPEBG00K@Z
; public: void __cdecl CCatState::SetSortProp(unsigned short const * __ptr64,enum SORTDIR,unsigned int) __ptr64
?SetSortProp@CCatState@@QEAAXPEBGW4SORTDIR@@I@Z
; public: void __cdecl CStorageVariant::SetUI1(unsigned char,unsigned int) __ptr64
?SetUI1@CStorageVariant@@QEAAXEI@Z
; public: void __cdecl CStorageVariant::SetUI2(unsigned short,unsigned int) __ptr64
?SetUI2@CStorageVariant@@QEAAXGI@Z
; public: void __cdecl CStorageVariant::SetUI4(unsigned long,unsigned int) __ptr64
?SetUI4@CStorageVariant@@QEAAXKI@Z
; public: void __cdecl CStorageVariant::SetUI8(union _ULARGE_INTEGER,unsigned int) __ptr64
?SetUI8@CStorageVariant@@QEAAXT_ULARGE_INTEGER@@I@Z
; public: void __cdecl CPropertyRestriction::SetValue(struct tagBLOB & __ptr64) __ptr64
?SetValue@CPropertyRestriction@@QEAAXAEAUtagBLOB@@@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 CDbCmdTreeNode::SetWeight(long) __ptr64
?SetWeight@CDbCmdTreeNode@@QEAAXJ@Z
; public: void __cdecl CPropStoreManager::Setup(unsigned long,unsigned long,unsigned long,unsigned __int64,int,unsigned long) __ptr64
?Setup@CPropStoreManager@@QEAAXKKK_KHK@Z
; public: void __cdecl CDynStream::Shrink(class PStorage & __ptr64,unsigned long) __ptr64
?Shrink@CDynStream@@QEAAXAEAVPStorage@@K@Z
; public: unsigned long __cdecl CPhysStorage::ShrinkFromFront(unsigned long,unsigned long) __ptr64
?ShrinkFromFront@CPhysStorage@@QEAAKKK@Z
; public: void __cdecl CPhysStorage::ShrinkToFit(void) __ptr64
?ShrinkToFit@CPhysStorage@@QEAAXXZ
; public: static void __cdecl CCiOle::Shutdown(void)
?Shutdown@CCiOle@@SAXXZ
; public: void __cdecl CPropStoreManager::Shutdown(void) __ptr64
?Shutdown@CPropStoreManager@@QEAAXXZ
; public: void __cdecl CWorkQueue::Shutdown(void) __ptr64
?Shutdown@CWorkQueue@@QEAAXXZ
; public: unsigned long __cdecl CDbQueryResults::Size(void) __ptr64
?Size@CDbQueryResults@@QEAAKXZ
; public: virtual long __cdecl CEnumString::Skip(unsigned long) __ptr64
?Skip@CEnumString@@UEAAJK@Z
; public: virtual long __cdecl CEnumWorkid::Skip(unsigned long) __ptr64
?Skip@CEnumWorkid@@UEAAJK@Z
; public: virtual void __cdecl CMemDeSerStream::SkipBlob(unsigned long) __ptr64
?SkipBlob@CMemDeSerStream@@UEAAXK@Z
; public: virtual void __cdecl CMemDeSerStream::SkipByte(void) __ptr64
?SkipByte@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipChar(unsigned long) __ptr64
?SkipChar@CMemDeSerStream@@UEAAXK@Z
; public: virtual void __cdecl CMemDeSerStream::SkipDouble(void) __ptr64
?SkipDouble@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipFloat(void) __ptr64
?SkipFloat@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipGUID(void) __ptr64
?SkipGUID@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipLong(void) __ptr64
?SkipLong@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipULong(void) __ptr64
?SkipULong@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipUShort(void) __ptr64
?SkipUShort@CMemDeSerStream@@UEAAXXZ
; public: virtual void __cdecl CMemDeSerStream::SkipWChar(unsigned long) __ptr64
?SkipWChar@CMemDeSerStream@@UEAAXK@Z
; public: int __cdecl CCatalogAdmin::Start(void) __ptr64
?Start@CCatalogAdmin@@QEAAHXZ
; public: int __cdecl CMachineAdmin::StartCI(void) __ptr64
?StartCI@CMachineAdmin@@QEAAHXZ
; public: int __cdecl CCatalogAdmin::Stop(void) __ptr64
?Stop@CCatalogAdmin@@QEAAHXZ
; public: int __cdecl CMachineAdmin::StopCI(void) __ptr64
?StopCI@CMachineAdmin@@QEAAHXZ
; public: void __cdecl CFilterDaemon::StopFiltering(void) __ptr64
?StopFiltering@CFilterDaemon@@QEAAXXZ
; public: unsigned int __cdecl CKey::StrLen(void)const  __ptr64
?StrLen@CKey@@QEBAIXZ
; public: unsigned int __cdecl CKeyBuf::StrLen(void)const  __ptr64
?StrLen@CKeyBuf@@QEBAIXZ
; void __cdecl SystemExceptionTranslator(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
?SystemExceptionTranslator@@YAXIPEAU_EXCEPTION_POINTERS@@@Z
; public: unsigned long __cdecl CRestriction::TreeCount(void)const  __ptr64
?TreeCount@CRestriction@@QEBAKXZ
; public: void __cdecl CMachineAdmin::TunePerformance(int,unsigned short,unsigned short) __ptr64
?TunePerformance@CMachineAdmin@@QEAAXHGG@Z
; void __cdecl URLEscapeW(unsigned short const * __ptr64,class CVirtualString & __ptr64,unsigned long,int)
?URLEscapeW@@YAXPEBGAEAVCVirtualString@@KH@Z
; public: int __cdecl CDbProperties::UnMarshall(class PDeSerStream & __ptr64) __ptr64
?UnMarshall@CDbProperties@@QEAAHAEAVPDeSerStream@@@Z
; public: static class CRestriction * __ptr64 __cdecl CRestriction::UnMarshall(class PDeSerStream & __ptr64)
?UnMarshall@CRestriction@@SAPEAV1@AEAVPDeSerStream@@@Z
; public: static class CDbCmdTreeNode * __ptr64 __cdecl CDbCmdTreeNode::UnMarshallTree(class PDeSerStream & __ptr64)
?UnMarshallTree@CDbCmdTreeNode@@SAPEAV1@AEAVPDeSerStream@@@Z
; void __cdecl UnPickle(int,class XPtr<class CColumnSet> & __ptr64,class XPtr<class CRestriction> & __ptr64,class XPtr<class CSortSet> & __ptr64,class XPtr<class CCategorizationSet> & __ptr64,class CRowsetProperties & __ptr64,class XPtr<class CPidMapper> & __ptr64,unsigned char * __ptr64,unsigned long)
?UnPickle@@YAXHAEAV?$XPtr@VCColumnSet@@@@AEAV?$XPtr@VCRestriction@@@@AEAV?$XPtr@VCSortSet@@@@AEAV?$XPtr@VCCategorizationSet@@@@AEAVCRowsetProperties@@AEAV?$XPtr@VCPidMapper@@@@PEAEK@Z
; protected: void __cdecl CRcovStrmTrans::Unmap(enum CRcovStorageHdr::DataCopyNum) __ptr64
?Unmap@CRcovStrmTrans@@IEAAXW4DataCopyNum@CRcovStorageHdr@@@Z
; unsigned long __cdecl UpdateContentIndex(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned short const * __ptr64,int)
?UpdateContentIndex@@YAKPEBG00H@Z
; public: void __cdecl CDiskFreeStatus::UpdateDiskLowInfo(void) __ptr64
?UpdateDiskLowInfo@CDiskFreeStatus@@QEAAXXZ
; int __cdecl VT_VARIANT_EQ(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
?VT_VARIANT_EQ@@YAHAEBUtagPROPVARIANT@@0@Z
; int __cdecl VT_VARIANT_GE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
?VT_VARIANT_GE@@YAHAEBUtagPROPVARIANT@@0@Z
; int __cdecl VT_VARIANT_GT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
?VT_VARIANT_GT@@YAHAEBUtagPROPVARIANT@@0@Z
; int __cdecl VT_VARIANT_LE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
?VT_VARIANT_LE@@YAHAEBUtagPROPVARIANT@@0@Z
; int __cdecl VT_VARIANT_LT(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
?VT_VARIANT_LT@@YAHAEBUtagPROPVARIANT@@0@Z
; int __cdecl VT_VARIANT_NE(struct tagPROPVARIANT const & __ptr64,struct tagPROPVARIANT const & __ptr64)
?VT_VARIANT_NE@@YAHAEBUtagPROPVARIANT@@0@Z
; int __cdecl ValidateScopeRestriction(class CRestriction * __ptr64)
?ValidateScopeRestriction@@YAHPEAVCRestriction@@@Z
; public: void __cdecl PRcovStorageObj::VerifyConsistency(void) __ptr64
?VerifyConsistency@PRcovStorageObj@@QEAAXXZ
; void __cdecl VerifyThreadHasAdminPrivilege(void)
?VerifyThreadHasAdminPrivilege@@YAXXZ
; unsigned long __cdecl WideCharToXArrayMultiByte(unsigned short const * __ptr64,unsigned long,unsigned int,class XArray<unsigned char> & __ptr64)
?WideCharToXArrayMultiByte@@YAKPEBGKIAEAV?$XArray@E@@@Z
; public: void __cdecl CDynStream::Write(void * __ptr64,unsigned long) __ptr64
?Write@CDynStream@@QEAAXPEAXK@Z
; protected: void __cdecl CRcovStrmTrans::Write(void const * __ptr64,unsigned long) __ptr64
?Write@CRcovStrmTrans@@IEAAXPEBXK@Z
; public: long __cdecl CPropStoreManager::WritePrimaryProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
?WritePrimaryProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
; public: long __cdecl CPropStoreManager::WritePrimaryProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
?WritePrimaryProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
; public: long __cdecl CPropStoreManager::WriteProperty(class CCompositePropRecordForWrites & __ptr64,unsigned long,class CStorageVariant const & __ptr64) __ptr64
?WriteProperty@CPropStoreManager@@QEAAJAEAVCCompositePropRecordForWrites@@KAEBVCStorageVariant@@@Z
; public: long __cdecl CPropStoreManager::WriteProperty(unsigned long,unsigned long,class CStorageVariant const & __ptr64) __ptr64
?WriteProperty@CPropStoreManager@@QEAAJKKAEBVCStorageVariant@@@Z
; public: unsigned long __cdecl CPropStoreManager::WritePropertyInNewRecord(unsigned long,class CStorageVariant const & __ptr64) __ptr64
?WritePropertyInNewRecord@CPropStoreManager@@QEAAKKAEBVCStorageVariant@@@Z
; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbNestingNode::_FindGroupListAnchor(void) __ptr64
?_FindGroupListAnchor@CDbNestingNode@@AEAAPEAVCDbProjectListAnchor@@XZ
; private: class CDbProjectListAnchor * __ptr64 __cdecl CDbProjectNode::_FindOrAddAnchor(void) __ptr64
?_FindOrAddAnchor@CDbProjectNode@@AEAAPEAVCDbProjectListAnchor@@XZ
; private: class CDbSortListAnchor * __ptr64 __cdecl CDbSortNode::_FindOrAddAnchor(void) __ptr64
?_FindOrAddAnchor@CDbSortNode@@AEAAPEAVCDbSortListAnchor@@XZ
; private: class CDbScalarValue * __ptr64 __cdecl CDbPropertyRestriction::_FindOrAddValueNode(void) __ptr64
?_FindOrAddValueNode@CDbPropertyRestriction@@AEAAPEAVCDbScalarValue@@XZ
; private: int __cdecl CImpersonateRemoteAccess::_ImpersonateIf(unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
?_ImpersonateIf@CImpersonateRemoteAccess@@AEAAHPEBG0K@Z
; unsigned __int64 __cdecl _wcstoui64(unsigned short const * __ptr64,unsigned short * __ptr64 * __ptr64,int)
?_wcstoui64@@YA_KPEBGPEAPEAGH@Z
; void __cdecl ciDelete(void * __ptr64)
?ciDelete@@YAXPEAX@Z
; int __cdecl ciIsValidPointer(void const * __ptr64)
?ciIsValidPointer@@YAHPEBX@Z
; void * __ptr64 __cdecl ciNew(unsigned __int64)
?ciNew@@YAPEAX_K@Z
; public: unsigned long __cdecl CFileBuffer::fgetsw(class XGrowable<unsigned short,260> & __ptr64) __ptr64
?fgetsw@CFileBuffer@@QEAAKAEAV?$XGrowable@G$0BAE@@@@Z
; unsigned short * __ptr64 __cdecl wcsipattern(unsigned short * __ptr64,unsigned short const * __ptr64)
?wcsipattern@@YAPEAGPEAGPEBG@Z
AbortMerges
BeginCacheTransaction
BindIFilterFromStorage
BindIFilterFromStream
CIBuildQueryNode
CIBuildQueryTree
CICreateCommand
CIGetGlobalPropertyList
CIMakeICommand
CIRestrictionToFullTree
CIState
CITextToFullTree
CITextToFullTreeEx
CITextToSelectTree
CITextToSelectTreeEx
CiSvcMain
CollectCIISAPIPerformanceData
CollectCIPerformanceData
CollectFILTERPerformanceData
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
DoneCIISAPIPerformanceData
DoneCIPerformanceData
DoneFILTERPerformanceData
EndCacheTransaction
ForceMasterMerge
InitializeCIISAPIPerformanceData
InitializeCIPerformanceData
InitializeFILTERPerformanceData
LoadBHIFilter
LoadBinaryFilter
LoadIFilter
LoadIFilterEx
LoadTextFilter
LocateCatalogs
LocateCatalogsA
LocateCatalogsW
SetCatalogState
SetupCache
SetupCacheEx
StartFWCiSvcWork
StopFWCiSvcWork
SvcEntry_CiSvc
