; 
; 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: __thiscall CAllocStorageVariant::CAllocStorageVariant(struct tagPROPVARIANT &,class PMemoryAllocator &)
??0CAllocStorageVariant@@QAE@AAUtagPROPVARIANT@@AAVPMemoryAllocator@@@Z
; public: __thiscall CAllocStorageVariant::CAllocStorageVariant(class PDeSerStream &,class PMemoryAllocator &)
??0CAllocStorageVariant@@QAE@AAVPDeSerStream@@AAVPMemoryAllocator@@@Z
; public: __thiscall CAllocStorageVariant::CAllocStorageVariant(char const *,class PMemoryAllocator &)
??0CAllocStorageVariant@@QAE@PBDAAVPMemoryAllocator@@@Z
; public: __thiscall CAllocStorageVariant::CAllocStorageVariant(unsigned short const *,class PMemoryAllocator &)
??0CAllocStorageVariant@@QAE@PBGAAVPMemoryAllocator@@@Z
; public: __thiscall CAllocStorageVariant::CAllocStorageVariant(struct _GUID const *,class PMemoryAllocator &)
??0CAllocStorageVariant@@QAE@PBU_GUID@@AAVPMemoryAllocator@@@Z
; public: __thiscall CAllocStorageVariant::CAllocStorageVariant(enum VARENUM,unsigned long,class PMemoryAllocator &)
??0CAllocStorageVariant@@QAE@W4VARENUM@@KAAVPMemoryAllocator@@@Z
; public: __thiscall CCatState::CCatState(void)
??0CCatState@@QAE@XZ
; public: __thiscall CCategorizationSet::CCategorizationSet(class CCategorizationSet const &)
??0CCategorizationSet@@QAE@ABV0@@Z
; public: __thiscall CCategorizationSet::CCategorizationSet(unsigned int)
??0CCategorizationSet@@QAE@I@Z
; public: __thiscall CCiAdminParams::CCiAdminParams(class CLangList *)
??0CCiAdminParams@@QAE@PAVCLangList@@@Z
; public: __thiscall CCiRegParams::CCiRegParams(unsigned short const *)
??0CCiRegParams@@QAE@PBG@Z
; public: __thiscall CColumnSet::CColumnSet(unsigned int)
??0CColumnSet@@QAE@I@Z
; public: __thiscall CColumns::CColumns(class CColumns const &)
??0CColumns@@QAE@ABV0@@Z
; public: __thiscall CColumns::CColumns(unsigned int)
??0CColumns@@QAE@I@Z
; public: __thiscall CDFA::CDFA(unsigned short const *,class CTimeLimit &,unsigned char)
??0CDFA@@QAE@PBGAAVCTimeLimit@@E@Z
; public: __thiscall CDbColId::CDbColId(struct _GUID const &,unsigned short const *)
??0CDbColId@@QAE@ABU_GUID@@PBG@Z
; public: __thiscall CDbColId::CDbColId(struct tagDBID const &)
??0CDbColId@@QAE@ABUtagDBID@@@Z
; public: __thiscall CDbColId::CDbColId(class CDbColId const &)
??0CDbColId@@QAE@ABV0@@Z
; public: __thiscall CDbColId::CDbColId(void)
??0CDbColId@@QAE@XZ
; public: __thiscall CDbColumnNode::CDbColumnNode(struct tagDBID const &,int)
??0CDbColumnNode@@QAE@ABUtagDBID@@H@Z
; public: __thiscall CDbColumns::CDbColumns(unsigned int)
??0CDbColumns@@QAE@I@Z
; public: __thiscall CDbContentRestriction::CDbContentRestriction(unsigned short const *,struct tagDBID const &,unsigned long,unsigned long)
??0CDbContentRestriction@@QAE@PBGABUtagDBID@@KK@Z
; public: __thiscall CDbContentRestriction::CDbContentRestriction(unsigned short const *,class CDbColumnNode const &,unsigned long,unsigned long)
??0CDbContentRestriction@@QAE@PBGABVCDbColumnNode@@KK@Z
; public: __thiscall CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const *,struct tagDBID const &,unsigned long)
??0CDbNatLangRestriction@@QAE@PBGABUtagDBID@@K@Z
; public: __thiscall CDbNatLangRestriction::CDbNatLangRestriction(unsigned short const *,class CDbColumnNode const &,unsigned long)
??0CDbNatLangRestriction@@QAE@PBGABVCDbColumnNode@@K@Z
; public: __thiscall CDbPropIDSet::CDbPropIDSet(void)
??0CDbPropIDSet@@QAE@XZ
; public: __thiscall CDbQueryResults::CDbQueryResults(void)
??0CDbQueryResults@@QAE@XZ
; public: __thiscall CDbSelectNode::CDbSelectNode(void)
??0CDbSelectNode@@QAE@XZ
; public: __thiscall CDbSortSet::CDbSortSet(unsigned int)
??0CDbSortSet@@QAE@I@Z
; public: __thiscall CDefColumnRegEntry::CDefColumnRegEntry(void)
??0CDefColumnRegEntry@@QAE@XZ
; public: __thiscall CDriveInfo::CDriveInfo(unsigned short const *,unsigned long)
??0CDriveInfo@@QAE@PBGK@Z
; public: __thiscall CDynStream::CDynStream(class PMmStream *)
??0CDynStream@@QAE@PAVPMmStream@@@Z
; public: __thiscall CEventItem::CEventItem(unsigned short,unsigned short,unsigned long,unsigned short,unsigned long,void const *)
??0CEventItem@@QAE@GGKGKPBX@Z
; public: __thiscall CEventLog::CEventLog(unsigned short const *,unsigned short const *)
??0CEventLog@@QAE@PBG0@Z
; public: __thiscall CException::CException(void)
??0CException@@QAE@XZ
; public: __thiscall CFileBuffer::CFileBuffer(class CFileMapView &,unsigned int)
??0CFileBuffer@@QAE@AAVCFileMapView@@I@Z
; public: __thiscall CFileMapView::CFileMapView(unsigned short const *)
??0CFileMapView@@QAE@PBG@Z
; public: __thiscall CFilterDaemon::CFilterDaemon(class CiProxy &,class CCiFrameworkParams &,class CLangList &,unsigned char *,unsigned long,struct ICiCFilterClient *)
??0CFilterDaemon@@QAE@AAVCiProxy@@AAVCCiFrameworkParams@@AAVCLangList@@PAEKPAUICiCFilterClient@@@Z
; public: __thiscall CFullPath::CFullPath(unsigned short const *)
??0CFullPath@@QAE@PBG@Z
; public: __thiscall CFullPath::CFullPath(unsigned short const *,unsigned int)
??0CFullPath@@QAE@PBGI@Z
; public: __thiscall CFullPropSpec::CFullPropSpec(class PDeSerStream &)
??0CFullPropSpec@@QAE@AAVPDeSerStream@@@Z
; public: __thiscall CFullPropSpec::CFullPropSpec(class CFullPropSpec const &)
??0CFullPropSpec@@QAE@ABV0@@Z
; public: __thiscall CFwAsyncWorkItem::CFwAsyncWorkItem(class CWorkManager &,class CWorkQueue &)
??0CFwAsyncWorkItem@@QAE@AAVCWorkManager@@AAVCWorkQueue@@@Z
; public: __thiscall CFwEventItem::CFwEventItem(unsigned short,unsigned long,unsigned short,unsigned long,void *)
??0CFwEventItem@@QAE@GKGKPAX@Z
; public: __thiscall CGenericCiProxy::CGenericCiProxy(class CSharedNameGen &,unsigned long,unsigned long)
??0CGenericCiProxy@@QAE@AAVCSharedNameGen@@KK@Z
; public: __thiscall CGetDbProps::CGetDbProps(void)
??0CGetDbProps@@QAE@XZ
; public: __thiscall CImpersonateRemoteAccess::CImpersonateRemoteAccess(class CImpersonationTokenCache *)
??0CImpersonateRemoteAccess@@QAE@PAVCImpersonationTokenCache@@@Z
; public: __thiscall CImpersonationTokenCache::CImpersonationTokenCache(unsigned short const *)
??0CImpersonationTokenCache@@QAE@PBG@Z
; public: __thiscall CIndexTable::CIndexTable(class CiStorage &,class CTransaction &)
??0CIndexTable@@QAE@AAVCiStorage@@AAVCTransaction@@@Z
; public: __thiscall CInternalPropertyRestriction::CInternalPropertyRestriction(unsigned long,unsigned long,class CStorageVariant const &,class CRestriction *)
??0CInternalPropertyRestriction@@QAE@KKABVCStorageVariant@@PAVCRestriction@@@Z
; public: __thiscall CKeyArray::CKeyArray(int,int)
??0CKeyArray@@QAE@HH@Z
; public: __thiscall CLangList::CLangList(struct ICiCLangRes *,unsigned long)
??0CLangList@@QAE@PAUICiCLangRes@@K@Z
; public: __thiscall CLocalGlobalPropertyList::CLocalGlobalPropertyList(unsigned long)
??0CLocalGlobalPropertyList@@QAE@K@Z
; public: __thiscall CLocalGlobalPropertyList::CLocalGlobalPropertyList(class CEmptyPropertyList *,int,unsigned short const *,unsigned long)
??0CLocalGlobalPropertyList@@QAE@PAVCEmptyPropertyList@@HPBGK@Z
; public: __thiscall CMachineAdmin::CMachineAdmin(unsigned short const *,int)
??0CMachineAdmin@@QAE@PBGH@Z
; public: __thiscall CMemSerStream::CMemSerStream(unsigned int)
??0CMemSerStream@@QAE@I@Z
; public: __thiscall CMemSerStream::CMemSerStream(unsigned char *,unsigned long)
??0CMemSerStream@@QAE@PAEK@Z
; public: __thiscall CMetaDataMgr::CMetaDataMgr(int,enum CiVRootTypeEnum,unsigned long,unsigned short const *)
??0CMetaDataMgr@@QAE@HW4CiVRootTypeEnum@@KPBG@Z
; public: __thiscall CMmStream::CMmStream(unsigned long,int)
??0CMmStream@@QAE@KH@Z
; public: __thiscall CMmStreamConsecBuf::CMmStreamConsecBuf(void)
??0CMmStreamConsecBuf@@QAE@XZ
; public: __thiscall CNatLanguageRestriction::CNatLanguageRestriction(unsigned short const *,class CFullPropSpec const &,unsigned long)
??0CNatLanguageRestriction@@QAE@PBGABVCFullPropSpec@@K@Z
; public: __thiscall CNodeRestriction::CNodeRestriction(unsigned long,unsigned int)
??0CNodeRestriction@@QAE@KI@Z
; public: __thiscall CNormalizer::CNormalizer(class PNoiseList &)
??0CNormalizer@@QAE@AAVPNoiseList@@@Z
; public: __thiscall CPathParser::CPathParser(unsigned short const *,unsigned long)
??0CPathParser@@QAE@PBGK@Z
; public: __thiscall CPerfMon::CPerfMon(unsigned short const *)
??0CPerfMon@@QAE@PBG@Z
; public: __thiscall CPersDeComp::CPersDeComp(class PDirectory &,unsigned long,class CPhysIndex &,unsigned long,int,int)
??0CPersDeComp@@QAE@AAVPDirectory@@KAAVCPhysIndex@@KHH@Z
; protected: __thiscall CPhysStorage::CPhysStorage(class PStorage &,class PStorageObject &,unsigned long,unsigned int,class PMmStream *,int,unsigned int,int)
??0CPhysStorage@@IAE@AAVPStorage@@AAVPStorageObject@@KIPAVPMmStream@@HIH@Z
; protected: __thiscall CPhysStorage::CPhysStorage(class PStorage &,class PStorageObject &,unsigned long,class PMmStream *,enum CPhysStorage::EOpenMode,int,unsigned int,int)
??0CPhysStorage@@IAE@AAVPStorage@@AAVPStorageObject@@KPAVPMmStream@@W4EOpenMode@1@HIH@Z
; public: __thiscall CPidLookupTable::CPidLookupTable(void)
??0CPidLookupTable@@QAE@XZ
; public: __thiscall CPidRemapper::CPidRemapper(class CPidMapper const &,class XInterface<struct IPropertyMapper> &,class CRestriction *,class CColumnSet *,class CSortSet *)
??0CPidRemapper@@QAE@ABVCPidMapper@@AAV?$XInterface@UIPropertyMapper@@@@PAVCRestriction@@PAVCColumnSet@@PAVCSortSet@@@Z
; public: __thiscall CPropListFile::CPropListFile(class CEmptyPropertyList *,int,unsigned short const *,unsigned long)
??0CPropListFile@@QAE@PAVCEmptyPropertyList@@HPBGK@Z
; public: __thiscall CPropNameArray::CPropNameArray(class PDeSerStream &)
??0CPropNameArray@@QAE@AAVPDeSerStream@@@Z
; public: __thiscall CPropNameArray::CPropNameArray(unsigned int)
??0CPropNameArray@@QAE@I@Z
; public: __thiscall CPropStoreManager::CPropStoreManager(unsigned long)
??0CPropStoreManager@@QAE@K@Z
; public: __thiscall CPropertyRestriction::CPropertyRestriction(unsigned long,class CFullPropSpec const &,class CStorageVariant const &)
??0CPropertyRestriction@@QAE@KABVCFullPropSpec@@ABVCStorageVariant@@@Z
; public: __thiscall CPropertyRestriction::CPropertyRestriction(void)
??0CPropertyRestriction@@QAE@XZ
; public: __thiscall CPropertyStoreWids::CPropertyStoreWids(class CPropStoreManager &)
??0CPropertyStoreWids@@QAE@AAVCPropStoreManager@@@Z
; public: __thiscall CPropertyValueParser::CPropertyValueParser(class CQueryScanner &,unsigned short,unsigned long)
??0CPropertyValueParser@@QAE@AAVCQueryScanner@@GK@Z
; public: __thiscall CQueryScanner::CQueryScanner(unsigned short const *,int,unsigned long,int)
??0CQueryScanner@@QAE@PBGHKH@Z
; public: __thiscall CRangeKeyRepository::CRangeKeyRepository(void)
??0CRangeKeyRepository@@QAE@XZ
; public: __thiscall CRangeRestriction::CRangeRestriction(void)
??0CRangeRestriction@@QAE@XZ
; public: __thiscall CRcovStrmAppendTrans::CRcovStrmAppendTrans(class PRcovStorageObj &)
??0CRcovStrmAppendTrans@@QAE@AAVPRcovStorageObj@@@Z
; public: __thiscall CRcovStrmMDTrans::CRcovStrmMDTrans(class PRcovStorageObj &,enum CRcovStrmMDTrans::MDOp,unsigned long)
??0CRcovStrmMDTrans@@QAE@AAVPRcovStorageObj@@W4MDOp@0@K@Z
; protected: __thiscall CRcovStrmTrans::CRcovStrmTrans(class PRcovStorageObj &,enum RcovOpType)
??0CRcovStrmTrans@@IAE@AAVPRcovStorageObj@@W4RcovOpType@@@Z
; public: __thiscall CRegAccess::CRegAccess(unsigned long,unsigned short const *)
??0CRegAccess@@QAE@KPBG@Z
; public: __thiscall CRegChangeEvent::CRegChangeEvent(unsigned short const *,int)
??0CRegChangeEvent@@QAE@PBGH@Z
; public: __thiscall CRegNotify::CRegNotify(unsigned short const *)
??0CRegNotify@@QAE@PBG@Z
; public: __thiscall CRequestClient::CRequestClient(unsigned short const *,struct IDBProperties *)
??0CRequestClient@@QAE@PBGPAUIDBProperties@@@Z
; public: __thiscall CRequestQueue::CRequestQueue(unsigned int,unsigned int,unsigned int,int,unsigned int,unsigned int,struct _GUID const &)
??0CRequestQueue@@QAE@IIIHIIABU_GUID@@@Z
; public: __thiscall CScopeRestriction::CScopeRestriction(unsigned short const *,int,int)
??0CScopeRestriction@@QAE@PBGHH@Z
; public: __thiscall CSdidLookupTable::CSdidLookupTable(void)
??0CSdidLookupTable@@QAE@XZ
; public: __thiscall CSizeSerStream::CSizeSerStream(void)
??0CSizeSerStream@@QAE@XZ
; public: __thiscall CSort::CSort(unsigned int)
??0CSort@@QAE@I@Z
; public: __thiscall CSortSet::CSortSet(unsigned int)
??0CSortSet@@QAE@I@Z
; public: __thiscall CStandardPropMapper::CStandardPropMapper(void)
??0CStandardPropMapper@@QAE@XZ
; public: __thiscall CSvcQuery::CSvcQuery(unsigned short const *,struct IDBProperties *)
??0CSvcQuery@@QAE@PBGPAUIDBProperties@@@Z
; public: __thiscall CSynRestriction::CSynRestriction(class CKey const &,unsigned long,unsigned long,unsigned long,int)
??0CSynRestriction@@QAE@ABVCKey@@KKKH@Z
; public: __thiscall CTimeLimit::CTimeLimit(unsigned long,unsigned long)
??0CTimeLimit@@QAE@KK@Z
; public: __thiscall CTransaction::CTransaction(void)
??0CTransaction@@QAE@XZ
; public: __thiscall CUnfilteredRestriction::CUnfilteredRestriction(void)
??0CUnfilteredRestriction@@QAE@XZ
; public: __thiscall CValueNormalizer::CValueNormalizer(class PKeyRepository &)
??0CValueNormalizer@@QAE@AAVPKeyRepository@@@Z
; public: __thiscall CVirtualString::CVirtualString(unsigned int)
??0CVirtualString@@QAE@I@Z
; public: __thiscall CWin32RegAccess::CWin32RegAccess(struct HKEY__ *,unsigned short const *)
??0CWin32RegAccess@@QAE@PAUHKEY__@@PBG@Z
; public: __thiscall CWordRestriction::CWordRestriction(class CKeyBuf const &,unsigned long,unsigned long,unsigned long,int)
??0CWordRestriction@@QAE@ABVCKeyBuf@@KKKH@Z
; public: __thiscall CWorkQueue::CWorkQueue(unsigned int,enum CWorkQueue::WorkQueueType)
??0CWorkQueue@@QAE@IW4WorkQueueType@0@@Z
; public: __thiscall CiStorage::CiStorage(unsigned short const *,struct ICiCAdviseStatus &,unsigned long,unsigned long,int)
??0CiStorage@@QAE@PBGAAUICiCAdviseStatus@@KKH@Z
; public: __thiscall SStorageObject::SStorageObject(class PStorageObject *)
??0SStorageObject@@QAE@PAVPStorageObject@@@Z
; public: __thiscall XPtr<class CDbCmdTreeNode>::~XPtr<class CDbCmdTreeNode>(void)
??1?$XPtr@VCDbCmdTreeNode@@@@QAE@XZ
; public: __thiscall XPtr<class CDbColumnNode>::~XPtr<class CDbColumnNode>(void)
??1?$XPtr@VCDbColumnNode@@@@QAE@XZ
; public: __thiscall XPtr<class CDbProjectListAnchor>::~XPtr<class CDbProjectListAnchor>(void)
??1?$XPtr@VCDbProjectListAnchor@@@@QAE@XZ
; public: __thiscall XPtr<class CDbProjectListElement>::~XPtr<class CDbProjectListElement>(void)
??1?$XPtr@VCDbProjectListElement@@@@QAE@XZ
; protected: __thiscall CAllocStorageVariant::~CAllocStorageVariant(void)
??1CAllocStorageVariant@@IAE@XZ
; public: __thiscall CCatState::~CCatState(void)
??1CCatState@@QAE@XZ
; public: __thiscall CCatalogAdmin::~CCatalogAdmin(void)
??1CCatalogAdmin@@QAE@XZ
; public: __thiscall CCatalogEnum::~CCatalogEnum(void)
??1CCatalogEnum@@QAE@XZ
; public: __thiscall CColumns::~CColumns(void)
??1CColumns@@QAE@XZ
; public: __thiscall CContentRestriction::~CContentRestriction(void)
??1CContentRestriction@@QAE@XZ
; public: __thiscall CDFA::~CDFA(void)
??1CDFA@@QAE@XZ
; public: __thiscall CDbCmdTreeNode::~CDbCmdTreeNode(void)
??1CDbCmdTreeNode@@QAE@XZ
; public: __thiscall CDbColumns::~CDbColumns(void)
??1CDbColumns@@QAE@XZ
; public: __thiscall CDbContentBaseRestriction::~CDbContentBaseRestriction(void)
??1CDbContentBaseRestriction@@QAE@XZ
; public: __thiscall CDbProp::~CDbProp(void)
??1CDbProp@@QAE@XZ
; public: __thiscall CDbPropBaseRestriction::~CDbPropBaseRestriction(void)
??1CDbPropBaseRestriction@@QAE@XZ
; public: __thiscall CDbPropIDSet::~CDbPropIDSet(void)
??1CDbPropIDSet@@QAE@XZ
; public: __thiscall CDbPropSet::~CDbPropSet(void)
??1CDbPropSet@@QAE@XZ
; public: __thiscall CDbQueryResults::~CDbQueryResults(void)
??1CDbQueryResults@@QAE@XZ
; public: __thiscall CDbSortKey::~CDbSortKey(void)
??1CDbSortKey@@QAE@XZ
; public: __thiscall CDbSortSet::~CDbSortSet(void)
??1CDbSortSet@@QAE@XZ
; public: __thiscall CDynStream::~CDynStream(void)
??1CDynStream@@QAE@XZ
; public: __thiscall CEventItem::~CEventItem(void)
??1CEventItem@@QAE@XZ
; public: __thiscall CEventLog::~CEventLog(void)
??1CEventLog@@QAE@XZ
; public: __thiscall CFileMapView::~CFileMapView(void)
??1CFileMapView@@QAE@XZ
; public: __thiscall CFilterDaemon::~CFilterDaemon(void)
??1CFilterDaemon@@QAE@XZ
; public: __thiscall CFullPropSpec::~CFullPropSpec(void)
??1CFullPropSpec@@QAE@XZ
; public: virtual __thiscall CFwAsyncWorkItem::~CFwAsyncWorkItem(void)
??1CFwAsyncWorkItem@@UAE@XZ
; public: __thiscall CFwEventItem::~CFwEventItem(void)
??1CFwEventItem@@QAE@XZ
; public: virtual __thiscall CGenericCiProxy::~CGenericCiProxy(void)
??1CGenericCiProxy@@UAE@XZ
; public: __thiscall CImpersonateClient::~CImpersonateClient(void)
??1CImpersonateClient@@QAE@XZ
; public: __thiscall CImpersonateSystem::~CImpersonateSystem(void)
??1CImpersonateSystem@@QAE@XZ
; public: __thiscall CImpersonationTokenCache::~CImpersonationTokenCache(void)
??1CImpersonationTokenCache@@QAE@XZ
; public: __thiscall CInternalPropertyRestriction::~CInternalPropertyRestriction(void)
??1CInternalPropertyRestriction@@QAE@XZ
; public: __thiscall CKeyArray::~CKeyArray(void)
??1CKeyArray@@QAE@XZ
; public: __thiscall CLangList::~CLangList(void)
??1CLangList@@QAE@XZ
; public: __thiscall CMachineAdmin::~CMachineAdmin(void)
??1CMachineAdmin@@QAE@XZ
; public: virtual __thiscall CMemSerStream::~CMemSerStream(void)
??1CMemSerStream@@UAE@XZ
; public: __thiscall CMetaDataMgr::~CMetaDataMgr(void)
??1CMetaDataMgr@@QAE@XZ
; public: virtual __thiscall CMmStream::~CMmStream(void)
??1CMmStream@@UAE@XZ
; public: __thiscall CNatLanguageRestriction::~CNatLanguageRestriction(void)
??1CNatLanguageRestriction@@QAE@XZ
; public: __thiscall CNodeRestriction::~CNodeRestriction(void)
??1CNodeRestriction@@QAE@XZ
; public: __thiscall CNotRestriction::~CNotRestriction(void)
??1CNotRestriction@@QAE@XZ
; public: __thiscall COccRestriction::~COccRestriction(void)
??1COccRestriction@@QAE@XZ
; public: __thiscall CParseCommandTree::~CParseCommandTree(void)
??1CParseCommandTree@@QAE@XZ
; public: __thiscall CPerfMon::~CPerfMon(void)
??1CPerfMon@@QAE@XZ
; public: __thiscall CPhraseRestriction::~CPhraseRestriction(void)
??1CPhraseRestriction@@QAE@XZ
; public: virtual __thiscall CPhysStorage::~CPhysStorage(void)
??1CPhysStorage@@UAE@XZ
; public: __thiscall CPidLookupTable::~CPidLookupTable(void)
??1CPidLookupTable@@QAE@XZ
; public: __thiscall CPidRemapper::~CPidRemapper(void)
??1CPidRemapper@@QAE@XZ
; public: __thiscall CProcess::~CProcess(void)
??1CProcess@@QAE@XZ
; public: __thiscall CPropStoreManager::~CPropStoreManager(void)
??1CPropStoreManager@@QAE@XZ
; public: virtual __thiscall CPropertyList::~CPropertyList(void)
??1CPropertyList@@UAE@XZ
; public: __thiscall CPropertyRestriction::~CPropertyRestriction(void)
??1CPropertyRestriction@@QAE@XZ
; public: __thiscall CPropertyStore::~CPropertyStore(void)
??1CPropertyStore@@QAE@XZ
; public: __thiscall CPropertyStoreWids::~CPropertyStoreWids(void)
??1CPropertyStoreWids@@QAE@XZ
; public: __thiscall CQueryUnknown::~CQueryUnknown(void)
??1CQueryUnknown@@QAE@XZ
; public: virtual __thiscall CRangeKeyRepository::~CRangeKeyRepository(void)
??1CRangeKeyRepository@@UAE@XZ
; public: __thiscall CRangeRestriction::~CRangeRestriction(void)
??1CRangeRestriction@@QAE@XZ
; public: __thiscall CRegChangeEvent::~CRegChangeEvent(void)
??1CRegChangeEvent@@QAE@XZ
; protected: virtual __thiscall CRegNotify::~CRegNotify(void)
??1CRegNotify@@MAE@XZ
; public: __thiscall CRestriction::~CRestriction(void)
??1CRestriction@@QAE@XZ
; public: __thiscall CScopeAdmin::~CScopeAdmin(void)
??1CScopeAdmin@@QAE@XZ
; public: __thiscall CScopeEnum::~CScopeEnum(void)
??1CScopeEnum@@QAE@XZ
; public: __thiscall CScopeRestriction::~CScopeRestriction(void)
??1CScopeRestriction@@QAE@XZ
; public: __thiscall CSdidLookupTable::~CSdidLookupTable(void)
??1CSdidLookupTable@@QAE@XZ
; public: virtual __thiscall CSizeSerStream::~CSizeSerStream(void)
??1CSizeSerStream@@UAE@XZ
; public: __thiscall CSort::~CSort(void)
??1CSort@@QAE@XZ
; public: __thiscall CSynRestriction::~CSynRestriction(void)
??1CSynRestriction@@QAE@XZ
; public: __thiscall CVirtualString::~CVirtualString(void)
??1CVirtualString@@QAE@XZ
; public: __thiscall CWin32RegAccess::~CWin32RegAccess(void)
??1CWin32RegAccess@@QAE@XZ
; public: __thiscall CWordRestriction::~CWordRestriction(void)
??1CWordRestriction@@QAE@XZ
; public: __thiscall CWorkManager::~CWorkManager(void)
??1CWorkManager@@QAE@XZ
; public: __thiscall CWorkQueue::~CWorkQueue(void)
??1CWorkQueue@@QAE@XZ
; public: __thiscall SStorageObject::~SStorageObject(void)
??1SStorageObject@@QAE@XZ
; public: static void __stdcall CDbCmdTreeNode::operator delete(void *)
??3CDbCmdTreeNode@@SGXPAX@Z
; public: static void __stdcall CDbColId::operator delete(void *)
??3CDbColId@@SGXPAX@Z
; public: static void __stdcall CDbContent::operator delete(void *)
??3CDbContent@@SGXPAX@Z
; public: static void __stdcall CDbParameter::operator delete(void *)
??3CDbParameter@@SGXPAX@Z
; public: static void __stdcall CDbPropSet::operator delete(void *)
??3CDbPropSet@@SGXPAX@Z
; public: class CDbByGuid & __thiscall CDbByGuid::operator=(class CDbByGuid const &)
??4CDbByGuid@@QAEAAV0@ABV0@@Z
; public: class CDbColId & __thiscall CDbColId::operator=(class CDbColId const &)
??4CDbColId@@QAEAAV0@ABV0@@Z
; public: int __thiscall CDbColId::operator==(class CDbColId const &)const 
??8CDbColId@@QBEHABV0@@Z
; public: void __thiscall CWorkManager::AbortWorkItems(void)
?AbortWorkItems@CWorkManager@@QAEXXZ
; public: void __thiscall CQueryScanner::Accept(void)
?Accept@CQueryScanner@@QAEXXZ
; public: void __thiscall CQueryScanner::AcceptCommand(void)
?AcceptCommand@CQueryScanner@@QAEXXZ
; public: void __thiscall CQueryScanner::AcceptWord(void)
?AcceptWord@CQueryScanner@@QAEXXZ
; public: int __thiscall CSdidLookupTable::AccessCheck(unsigned long,void *,unsigned long,int &)
?AccessCheck@CSdidLookupTable@@QAEHKPAXKAAH@Z
; public: unsigned short * __thiscall CQueryScanner::AcqLine(int)
?AcqLine@CQueryScanner@@QAEPAGH@Z
; public: unsigned short * __thiscall CQueryScanner::AcqPath(void)
?AcqPath@CQueryScanner@@QAEPAGXZ
; public: unsigned short * __thiscall CQueryScanner::AcqPhrase(void)
?AcqPhrase@CQueryScanner@@QAEPAGXZ
; public: class CRangeRestriction * __thiscall CRangeKeyRepository::AcqRst(void)
?AcqRst@CRangeKeyRepository@@QAEPAVCRangeRestriction@@XZ
; public: unsigned short * __thiscall CQueryScanner::AcqWord(void)
?AcqWord@CQueryScanner@@QAEPAGXZ
; private: void __thiscall CPropertyStore::AcquireRead(class CReadWriteLockRecord &)
?AcquireRead@CPropertyStore@@AAEXAAVCReadWriteLockRecord@@@Z
; public: int __thiscall CDbColumns::Add(class CDbColId const &,unsigned int)
?Add@CDbColumns@@QAEHABVCDbColId@@I@Z
; public: void __thiscall CDbQueryResults::Add(unsigned short *,unsigned long)
?Add@CDbQueryResults@@QAEXPAGK@Z
; public: int __thiscall CDbSortSet::Add(class CDbColId const &,unsigned long,unsigned int)
?Add@CDbSortSet@@QAEHABVCDbColId@@KI@Z
; public: int __thiscall CDbSortSet::Add(class CDbSortKey const &,unsigned int)
?Add@CDbSortSet@@QAEHABVCDbSortKey@@I@Z
; public: int __thiscall CKeyArray::Add(int,class CKey const &)
?Add@CKeyArray@@QAEHHABVCKey@@@Z
; public: int __thiscall CKeyArray::Add(int,class CKeyBuf const &)
?Add@CKeyArray@@QAEHHABVCKeyBuf@@@Z
; public: void __thiscall CWorkQueue::Add(class PWorkItem *)
?Add@CWorkQueue@@QAEXPAVPWorkItem@@@Z
; public: void __thiscall CEventItem::AddArg(unsigned long)
?AddArg@CEventItem@@QAEXK@Z
; public: void __thiscall CEventItem::AddArg(unsigned short const *)
?AddArg@CEventItem@@QAEXPBG@Z
; public: void __thiscall CFwEventItem::AddArg(unsigned long)
?AddArg@CFwEventItem@@QAEXK@Z
; public: void __thiscall CFwEventItem::AddArg(unsigned short const *)
?AddArg@CFwEventItem@@QAEXPBG@Z
; public: void __thiscall CCatalogAdmin::AddCachedProperty(class CFullPropSpec const &,unsigned long,unsigned long,unsigned long,int)
?AddCachedProperty@CCatalogAdmin@@QAEXABVCFullPropSpec@@KKKH@Z
; public: void __thiscall CCatState::AddCatalog(class XPtrST<unsigned short> &)
?AddCatalog@CCatState@@QAEXAAV?$XPtrST@G@@@Z
; public: void __thiscall CMachineAdmin::AddCatalog(unsigned short const *,unsigned short const *)
?AddCatalog@CMachineAdmin@@QAEXPBG0@Z
; public: void __thiscall CNodeRestriction::AddChild(class CRestriction *,unsigned int &)
?AddChild@CNodeRestriction@@QAEXPAVCRestriction@@AAI@Z
; public: void __thiscall CCatState::AddDir(class XPtrST<unsigned short> &)
?AddDir@CCatState@@QAEXAAV?$XPtrST@G@@@Z
; public: virtual void __thiscall CCombinedPropertyList::AddEntry(class CPropEntry *,int)
?AddEntry@CCombinedPropertyList@@UAEXPAVCPropEntry@@H@Z
; public: virtual void __thiscall CPropertyList::AddEntry(class CPropEntry *,int)
?AddEntry@CPropertyList@@UAEXPAVCPropEntry@@H@Z
; public: void __thiscall CEventItem::AddError(unsigned long)
?AddError@CEventItem@@QAEXK@Z
; public: void __thiscall CSynRestriction::AddKey(class CKeyBuf const &)
?AddKey@CSynRestriction@@QAEXABVCKeyBuf@@@Z
; public: void __thiscall CCatState::AddMachine(class XPtrST<unsigned short> &)
?AddMachine@CCatState@@QAEXAAV?$XPtrST@G@@@Z
; public: virtual unsigned long __stdcall CDbProperties::AddRef(void)
?AddRef@CDbProperties@@UAGKXZ
; public: virtual unsigned long __stdcall CEmptyPropertyList::AddRef(void)
?AddRef@CEmptyPropertyList@@UAGKXZ
; public: virtual unsigned long __stdcall CEnumString::AddRef(void)
?AddRef@CEnumString@@UAGKXZ
; public: virtual unsigned long __stdcall CEnumWorkid::AddRef(void)
?AddRef@CEnumWorkid@@UAGKXZ
; public: virtual unsigned long __stdcall CFwPropertyMapper::AddRef(void)
?AddRef@CFwPropertyMapper@@UAGKXZ
; public: virtual unsigned long __stdcall CQueryUnknown::AddRef(void)
?AddRef@CQueryUnknown@@UAGKXZ
; public: void __thiscall CWorkQueue::AddRefWorkThreads(void)
?AddRefWorkThreads@CWorkQueue@@QAEXXZ
; public: void __thiscall CCatalogAdmin::AddScope(unsigned short const *,unsigned short const *,int,unsigned short const *,unsigned short const *)
?AddScope@CCatalogAdmin@@QAEXPBG0H00@Z
; public: int __thiscall CDbSortNode::AddSortColumn(struct tagDBID const &,int,unsigned long)
?AddSortColumn@CDbSortNode@@QAEHABUtagDBID@@HK@Z
; public: int __thiscall CDbNestingNode::AddTable(class CDbCmdTreeNode *)
?AddTable@CDbNestingNode@@QAEHPAVCDbCmdTreeNode@@@Z
; public: void __thiscall CWorkManager::AddToWorkList(class CFwAsyncWorkItem *)
?AddToWorkList@CWorkManager@@QAEXPAVCFwAsyncWorkItem@@@Z
; public: void __thiscall CFwAsyncWorkItem::AddToWorkQueue(void)
?AddToWorkQueue@CFwAsyncWorkItem@@QAEXXZ
; public: static unsigned short * __stdcall CDbCmdTreeNode::AllocAndCopyWString(unsigned short const *)
?AllocAndCopyWString@CDbCmdTreeNode@@SGPAGPBG@Z
; unsigned short * __stdcall AllocHeapAndCopy(unsigned short const *,unsigned long &)
?AllocHeapAndCopy@@YGPAGPBGAAK@Z
; unsigned short * __stdcall AllocHeapAndGetWString(class PDeSerStream &)
?AllocHeapAndGetWString@@YGPAGAAVPDeSerStream@@@Z
; public: void __thiscall CEnumString::Append(unsigned short const *)
?Append@CEnumString@@QAEXPBG@Z
; public: void __thiscall CEnumWorkid::Append(unsigned long)
?Append@CEnumWorkid@@QAEXK@Z
; protected: void __thiscall CDbCmdTreeNode::AppendChild(class CDbCmdTreeNode *)
?AppendChild@CDbCmdTreeNode@@IAEXPAV1@@Z
; protected: int __thiscall CDbListAnchor::AppendListElement(unsigned short,struct tagDBID const &)
?AppendListElement@CDbListAnchor@@IAEHGABUtagDBID@@@Z
; protected: int __thiscall CDbListAnchor::AppendListElement(class CDbCmdTreeNode *)
?AppendListElement@CDbListAnchor@@IAEHPAVCDbCmdTreeNode@@@Z
; public: int __thiscall CDbProjectListAnchor::AppendListElement(struct tagDBID const &,unsigned short *)
?AppendListElement@CDbProjectListAnchor@@QAEHABUtagDBID@@PAG@Z
; public: unsigned long __thiscall CPropStoreManager::BeginTransaction(void)
?BeginTransaction@CPropStoreManager@@QAEKXZ
; public: static long __stdcall CCiOle::BindIFilter(unsigned short const *,struct IUnknown *,struct IFilter * *,int)
?BindIFilter@CCiOle@@SGJPBGPAUIUnknown@@PAPAUIFilter@@H@Z
; public: unsigned long * __thiscall CPhysStorage::BorrowBuffer(unsigned long,int,int)
?BorrowBuffer@CPhysStorage@@QAEPAKKHH@Z
; public: unsigned long * __thiscall CPhysStorage::BorrowNewBuffer(unsigned long)
?BorrowNewBuffer@CPhysStorage@@QAEPAKK@Z
; void __stdcall BuildRegistryPropertiesKey(class XArray<unsigned short> &,unsigned short const *)
?BuildRegistryPropertiesKey@@YGXAAV?$XArray@G@@PBG@Z
; void __stdcall BuildRegistryScopesKey(class XArray<unsigned short> &,unsigned short const *)
?BuildRegistryScopesKey@@YGXAAV?$XArray@G@@PBG@Z
; void __stdcall CIShutdown(void)
?CIShutdown@@YGXXZ
; public: void __thiscall CCatState::ChangeCurrentCatalog(unsigned short const *)
?ChangeCurrentCatalog@CCatState@@QAEXPBG@Z
; public: void __thiscall CCatState::ChangeCurrentDepth(int)
?ChangeCurrentDepth@CCatState@@QAEXH@Z
; public: void __thiscall CCatState::ChangeCurrentMachine(unsigned short const *)
?ChangeCurrentMachine@CCatState@@QAEXPBG@Z
; public: void __thiscall CCatState::ChangeCurrentScope(unsigned short const *)
?ChangeCurrentScope@CCatState@@QAEXPBG@Z
; private: void __thiscall CPropStoreInfo::ChangeDirty(int)
?ChangeDirty@CPropStoreInfo@@AAEXH@Z
; public: long __thiscall CLocalGlobalPropertyList::CheckError(unsigned long &,unsigned short * *)
?CheckError@CLocalGlobalPropertyList@@QAEJAAKPAPAG@Z
; public: long __thiscall CPropListFile::CheckError(unsigned long &,unsigned short * *)
?CheckError@CPropListFile@@QAEJAAKPAPAG@Z
; public: static int __stdcall CiStorage::CheckHasIndexTable(unsigned short const *)
?CheckHasIndexTable@CiStorage@@SGHPBG@Z
CiCreateSecurityDescriptor
; int __stdcall CiGetPassword(unsigned short const *,unsigned short const *,unsigned short *)
?CiGetPassword@@YGHPBG0PAG@Z
; void * __stdcall CiNtOpen(unsigned short const *,unsigned long,unsigned long,unsigned long)
?CiNtOpen@@YGPAXPBGKKK@Z
; long __stdcall CiNtOpenNoThrow(void * &,unsigned short const *,unsigned long,unsigned long,unsigned long)
?CiNtOpenNoThrow@@YGJAAPAXPBGKKK@Z
; public: void __thiscall CDbColId::Cleanup(void)
?Cleanup@CDbColId@@QAEXXZ
; public: void __thiscall CDbProp::Cleanup(void)
?Cleanup@CDbProp@@QAEXXZ
; protected: void __thiscall CDbCmdTreeNode::CleanupDataValue(void)
?CleanupDataValue@CDbCmdTreeNode@@IAEXXZ
; public: void __thiscall CCombinedPropertyList::ClearList(void)
?ClearList@CCombinedPropertyList@@QAEXXZ
; public: void __thiscall CPropertyList::ClearList(void)
?ClearList@CPropertyList@@QAEXXZ
; public: class CDbCmdTreeNode * __thiscall CDbCmdTreeNode::Clone(int)const 
?Clone@CDbCmdTreeNode@@QBEPAV1@H@Z
; public: virtual long __stdcall CEnumString::Clone(struct IEnumString * *)
?Clone@CEnumString@@UAGJPAPAUIEnumString@@@Z
; public: class CNodeRestriction * __thiscall CNodeRestriction::Clone(void)const 
?Clone@CNodeRestriction@@QBEPAV1@XZ
; public: class COccRestriction * __thiscall COccRestriction::Clone(void)const 
?Clone@COccRestriction@@QBEPAV1@XZ
; public: class CRestriction * __thiscall CRestriction::Clone(void)const 
?Clone@CRestriction@@QBEPAV1@XZ
; public: void __thiscall CPhysStorage::Close(void)
?Close@CPhysStorage@@QAEXXZ
; protected: void __thiscall CPipeClient::Close(void)
?Close@CPipeClient@@IAEXXZ
; public: void __thiscall COLEPropManager::CPropSetMap::Close(void)
?Close@CPropSetMap@COLEPropManager@@QAEXXZ
; public: void __thiscall CPropStoreManager::CloseRecord(class CCompositePropRecord *)
?CloseRecord@CPropStoreManager@@QAEXPAVCCompositePropRecord@@@Z
; public: void __thiscall CPropStoreManager::CloseRecord(class CCompositePropRecordForWrites *)
?CloseRecord@CPropStoreManager@@QAEXPAVCCompositePropRecordForWrites@@@Z
; public: void __thiscall CRcovStrmAppendTrans::Commit(void)
?Commit@CRcovStrmAppendTrans@@QAEXXZ
; public: void __thiscall CRcovStrmMDTrans::Commit(void)
?Commit@CRcovStrmMDTrans@@QAEXXZ
; public: void __thiscall CRcovStrmWriteTrans::Commit(void)
?Commit@CRcovStrmWriteTrans@@QAEXXZ
; public: static int __stdcall CDriveInfo::ContainsDrive(unsigned short const *)
?ContainsDrive@CDriveInfo@@SGHPBG@Z
; public: int __thiscall CDbParameter::Copy(struct tagDBPARAMETER const &)
?Copy@CDbParameter@@QAEHABUtagDBPARAMETER@@@Z
; public: int __thiscall CDbProp::Copy(struct tagDBPROP const &)
?Copy@CDbProp@@QAEHABUtagDBPROP@@@Z
; public: int __thiscall CDbPropSet::Copy(struct tagDBPROPSET const &)
?Copy@CDbPropSet@@QAEHABUtagDBPROPSET@@@Z
; public: void __thiscall CMachineAdmin::CreateSubdirs(unsigned short const *)
?CreateSubdirs@CMachineAdmin@@QAEXPBG@Z
; public: void __thiscall CRequestClient::DataWriteRead(void *,unsigned long,void *,unsigned long,unsigned long &)
?DataWriteRead@CRequestClient@@QAEXPAXK0KAAK@Z
; void __stdcall DecodeEscapes(unsigned short *,unsigned long &,unsigned short *)
?DecodeEscapes@@YGXPAGAAK0@Z
; void __stdcall DecodeHtmlNumeric(unsigned short *)
?DecodeHtmlNumeric@@YGXPAG@Z
; void __stdcall DecodeURLEscapes(unsigned char *,unsigned long &,unsigned short *,unsigned long)
?DecodeURLEscapes@@YGXPAEAAKPAGK@Z
; public: void __thiscall CPropStoreManager::DeleteRecord(unsigned long)
?DeleteRecord@CPropStoreManager@@QAEXK@Z
; public: void __thiscall CCatalogAdmin::DeleteRegistryParamNoThrow(unsigned short const *)
?DeleteRegistryParamNoThrow@CCatalogAdmin@@QAEXPBG@Z
; public: static unsigned int __stdcall CiStorage::DetermineDriveType(unsigned short const *)
?DetermineDriveType@CiStorage@@SGIPBG@Z
; public: int __thiscall CMachineAdmin::DisableCI(void)
?DisableCI@CMachineAdmin@@QAEHXZ
; public: void __thiscall CRegNotify::DisableNotification(void)
?DisableNotification@CRegNotify@@QAEXXZ
; public: void __thiscall CMetaDataMgr::DisableVPathNotify(void)
?DisableVPathNotify@CMetaDataMgr@@QAEXXZ
; public: void __thiscall CRequestClient::Disconnect(void)
?Disconnect@CRequestClient@@QAEXXZ
; void __stdcall DoFailTest(long)
?DoFailTest@@YGXJ@Z
; public: long __thiscall CCopyRcovObject::DoIt(void)
?DoIt@CCopyRcovObject@@QAEJXZ
; public: long __thiscall CFilterDaemon::DoUpdates(void)
?DoUpdates@CFilterDaemon@@QAEJXZ
; public: void __thiscall CFwAsyncWorkItem::Done(void)
?Done@CFwAsyncWorkItem@@QAEXXZ
; long __stdcall DumpWorkId(unsigned short const *,unsigned long,unsigned char *,unsigned long &,unsigned short const *,unsigned short const *,unsigned long)
?DumpWorkId@@YGJPBGKPAEAAK00K@Z
; public: void __thiscall CPidLookupTable::Empty(void)
?Empty@CPidLookupTable@@QAEXXZ
; public: void __thiscall CPropStoreManager::Empty(void)
?Empty@CPropStoreManager@@QAEXXZ
; public: void __thiscall CRcovStrmWriteTrans::Empty(void)
?Empty@CRcovStrmWriteTrans@@QAEXXZ
; public: void __thiscall CSdidLookupTable::Empty(void)
?Empty@CSdidLookupTable@@QAEXXZ
; public: int __thiscall CMachineAdmin::EnableCI(void)
?EnableCI@CMachineAdmin@@QAEHXZ
; public: void __thiscall CMetaDataMgr::EnableVPathNotify(class CMetaDataVPathChangeCallBack *)
?EnableVPathNotify@CMetaDataMgr@@QAEXPAVCMetaDataVPathChangeCallBack@@@Z
; public: void __thiscall CPropStoreManager::EndTransaction(unsigned long,int,unsigned long,unsigned long)
?EndTransaction@CPropStoreManager@@QAEXKHKK@Z
; public: int __thiscall CWin32RegAccess::Enum(unsigned short *,unsigned long)
?Enum@CWin32RegAccess@@QAEHPAGK@Z
; public: virtual long __stdcall CEmptyPropertyList::EnumPropInfo(unsigned long,unsigned short const * *,struct tagDBID * *,unsigned short *,unsigned int *)
?EnumPropInfo@CEmptyPropertyList@@UAGJKPAPBGPAPAUtagDBID@@PAGPAI@Z
; public: void __thiscall CMetaDataMgr::EnumVPaths(class CMetaDataCallBack &)
?EnumVPaths@CMetaDataMgr@@QAEXAAVCMetaDataCallBack@@@Z
; public: void __thiscall CMetaDataMgr::EnumVServers(class CMetaDataVirtualServerCallBack &)
?EnumVServers@CMetaDataMgr@@QAEXAAVCMetaDataVirtualServerCallBack@@@Z
; public: static void __stdcall CiStorage::EnumerateFilesInDir(unsigned short const *,class CEnumString &)
?EnumerateFilesInDir@CiStorage@@SGXPBGAAVCEnumString@@@Z
; public: int __thiscall CPidLookupTable::EnumerateProperty(class CFullPropSpec &,unsigned int &)
?EnumerateProperty@CPidLookupTable@@QAEHAAVCFullPropSpec@@AAI@Z
; public: void __thiscall CRegAccess::EnumerateValues(unsigned short *,class CRegCallBack &)
?EnumerateValues@CRegAccess@@QAEXPAGAAVCRegCallBack@@@Z
; public: int __thiscall CMmStreamConsecBuf::Eof(void)
?Eof@CMmStreamConsecBuf@@QAEHXZ
; public: int __thiscall CMetaDataMgr::ExtensionHasScriptMap(unsigned short const *)
?ExtensionHasScriptMap@CMetaDataMgr@@QAEHPBG@Z
; public: virtual long __thiscall CPidConverter::FPSToPROPID(class CFullPropSpec const &,unsigned long &)
?FPSToPROPID@CPidConverter@@UAEJABVCFullPropSpec@@AAK@Z
; public: void __thiscall CPropStoreManager::FastInit(class CiStorage *)
?FastInit@CPropStoreManager@@QAEXPAVCiStorage@@@Z
; public: void __thiscall COLEPropManager::FetchProperty(struct _GUID const &,struct tagPROPSPEC const &,struct tagPROPVARIANT *,unsigned int *)
?FetchProperty@COLEPropManager@@QAEXABU_GUID@@ABUtagPROPSPEC@@PAUtagPROPVARIANT@@PAI@Z
; public: int __thiscall CKeyArray::FillMax(int)
?FillMax@CKeyArray@@QAEHH@Z
; public: virtual class CPropEntry const * __thiscall CCombinedPropertyList::Find(unsigned short const *)
?Find@CCombinedPropertyList@@UAEPBVCPropEntry@@PBG@Z
; public: class CPropEntry const * __thiscall CEmptyPropertyList::Find(class CDbColId const &)
?Find@CEmptyPropertyList@@QAEPBVCPropEntry@@ABVCDbColId@@@Z
; public: virtual class CPropEntry const * __thiscall CPropertyList::Find(class CDbColId const &)
?Find@CPropertyList@@UAEPBVCPropEntry@@ABVCDbColId@@@Z
; public: virtual class CPropEntry const * __thiscall CPropertyList::Find(unsigned short const *)
?Find@CPropertyList@@UAEPBVCPropEntry@@PBG@Z
; public: virtual class CPropEntry const * __thiscall CStaticPropertyList::Find(unsigned short const *)
?Find@CStaticPropertyList@@UAEPBVCPropEntry@@PBG@Z
; public: int __thiscall CPidLookupTable::FindPropid(class CFullPropSpec const &,unsigned long &,int)
?FindPropid@CPidLookupTable@@QAEHABVCFullPropSpec@@AAKH@Z
; public: void __thiscall CDynStream::Flush(void)
?Flush@CDynStream@@QAEXXZ
; public: void __thiscall CPhysStorage::Flush(int)
?Flush@CPhysStorage@@QAEXH@Z
; public: void __thiscall CPropStoreManager::Flush(void)
?Flush@CPropStoreManager@@QAEXXZ
; public: static void __stdcall CCiOle::FlushIdle(void)
?FlushIdle@CCiOle@@SGXXZ
; public: struct tagDBCOMMANDTREE * __thiscall CTextToTree::FormFullTree(void)
?FormFullTree@CTextToTree@@QAEPAUtagDBCOMMANDTREE@@XZ
; class CDbCmdTreeNode * __stdcall FormQueryTree(class CDbCmdTreeNode &,class CCatState &,struct IColumnMapper *,int,int)
?FormQueryTree@@YGPAVCDbCmdTreeNode@@AAV1@AAVCCatState@@PAUIColumnMapper@@HH@Z
; public: unsigned long __thiscall CRegAccess::Get(unsigned short const *)
?Get@CRegAccess@@QAEKPBG@Z
; public: void __thiscall CRegAccess::Get(unsigned short const *,unsigned short *,unsigned int)
?Get@CRegAccess@@QAEXPBGPAGI@Z
; public: int __thiscall CWin32RegAccess::Get(unsigned short const *,unsigned long &)
?Get@CWin32RegAccess@@QAEHPBGAAK@Z
; public: int __thiscall CWin32RegAccess::Get(unsigned short const *,unsigned short *,unsigned int,int)
?Get@CWin32RegAccess@@QAEHPBGPAGIH@Z
; public: virtual long __thiscall CPropertyList::GetAllEntries(class CPropEntry * *,unsigned long)
?GetAllEntries@CPropertyList@@UAEJPAPAVCPropEntry@@K@Z
; public: short __thiscall CAllocStorageVariant::GetBOOL(unsigned int)const 
?GetBOOL@CAllocStorageVariant@@QBEFI@Z
; public: unsigned long __thiscall CPropStoreManager::GetBackupSize(unsigned long)
?GetBackupSize@CPropStoreManager@@QAEKK@Z
; public: virtual void __thiscall CMemDeSerStream::GetBlob(unsigned char *,unsigned long)
?GetBlob@CMemDeSerStream@@UAEXPAEK@Z
; unsigned long __stdcall GetBrowserCodepage(class CWebServer &,unsigned long)
?GetBrowserCodepage@@YGKAAVCWebServer@@K@Z
; public: virtual unsigned char __thiscall CMemDeSerStream::GetByte(void)
?GetByte@CMemDeSerStream@@UAEEXZ
; public: unsigned short const * __thiscall CCatState::GetCD(void)
?GetCD@CCatState@@QAEPBGXZ
; public: int __thiscall CWebServer::GetCGIVariable(char const *,class XArray<unsigned short> &,unsigned long &)
?GetCGIVariable@CWebServer@@QAEHPBDAAV?$XArray@G@@AAK@Z
; public: int __thiscall CWebServer::GetCGIVariableW(unsigned short const *,class XArray<unsigned short> &,unsigned long &)
?GetCGIVariableW@CWebServer@@QAEHPBGAAV?$XArray@G@@AAK@Z
; public: struct _GUID  __thiscall CAllocStorageVariant::GetCLSID(unsigned int)const 
?GetCLSID@CAllocStorageVariant@@QBE?AU_GUID@@I@Z
; public: union tagCY  __thiscall CAllocStorageVariant::GetCY(unsigned int)const 
?GetCY@CAllocStorageVariant@@QBE?ATtagCY@@I@Z
; public: unsigned short const * __thiscall CCatState::GetCategory(unsigned int)const 
?GetCategory@CCatState@@QBEPBGI@Z
; public: virtual void __thiscall CMemDeSerStream::GetChar(char *,unsigned long)
?GetChar@CMemDeSerStream@@UAEXPADK@Z
; public: unsigned short const * __thiscall CCatState::GetColumn(unsigned int)const 
?GetColumn@CCatState@@QBEPBGI@Z
; public: unsigned short __thiscall CQueryScanner::GetCommandChar(void)
?GetCommandChar@CQueryScanner@@QAEGXZ
; public: double __thiscall CAllocStorageVariant::GetDATE(unsigned int)const 
?GetDATE@CAllocStorageVariant@@QBENI@Z
; public: int __thiscall CCatalogAdmin::GetDWORDParam(unsigned short const *,unsigned long &)
?GetDWORDParam@CCatalogAdmin@@QAEHPBGAAK@Z
; public: int __thiscall CMachineAdmin::GetDWORDParam(unsigned short const *,unsigned long &)
?GetDWORDParam@CMachineAdmin@@QAEHPBGAAK@Z
; public: void __thiscall CDriveInfo::GetDiskSpace(__int64 &,__int64 &)
?GetDiskSpace@CDriveInfo@@QAEXAA_J0@Z
; public: virtual double __thiscall CMemDeSerStream::GetDouble(void)
?GetDouble@CMemDeSerStream@@UAENXZ
; public: static void __stdcall CDriveInfo::GetDrive(unsigned short const *,unsigned short *)
?GetDrive@CDriveInfo@@SGXPBGPAG@Z
; public: unsigned char * __thiscall CGenericCiProxy::GetEntryBuffer(unsigned long &)
?GetEntryBuffer@CGenericCiProxy@@QAEPAEAAK@Z
; public: struct _FILETIME  __thiscall CAllocStorageVariant::GetFILETIME(unsigned int)const 
?GetFILETIME@CAllocStorageVariant@@QBE?AU_FILETIME@@I@Z
; public: int __thiscall CPathParser::GetFileName(unsigned short *,unsigned long &)const 
?GetFileName@CPathParser@@QBEHPAGAAK@Z
; public: enum CDriveInfo::eFileSystem  __thiscall CDriveInfo::GetFileSystem(int)
?GetFileSystem@CDriveInfo@@QAE?AW4eFileSystem@1@H@Z
; public: virtual float __thiscall CMemDeSerStream::GetFloat(void)
?GetFloat@CMemDeSerStream@@UAEMXZ
; public: virtual void __thiscall CMemDeSerStream::GetGUID(struct _GUID &)
?GetGUID@CMemDeSerStream@@UAEXAAU_GUID@@@Z
; class CPropListFile * __stdcall GetGlobalPropListFile(void)
?GetGlobalPropListFile@@YGPAVCPropListFile@@XZ
; class CStaticPropertyList * __stdcall GetGlobalStaticPropertyList(void)
?GetGlobalStaticPropertyList@@YGPAVCStaticPropertyList@@XZ
; public: short __thiscall CAllocStorageVariant::GetI2(unsigned int)const 
?GetI2@CAllocStorageVariant@@QBEFI@Z
; public: long __thiscall CAllocStorageVariant::GetI4(unsigned int)const 
?GetI4@CAllocStorageVariant@@QBEJI@Z
; public: union _LARGE_INTEGER  __thiscall CAllocStorageVariant::GetI8(unsigned int)const 
?GetI8@CAllocStorageVariant@@QBE?AT_LARGE_INTEGER@@I@Z
; unsigned long __stdcall GetLCIDFromString(unsigned short *)
?GetLCIDFromString@@YGKPAG@Z
; public: char * __thiscall CAllocStorageVariant::GetLPSTR(unsigned int)const 
?GetLPSTR@CAllocStorageVariant@@QBEPADI@Z
; public: unsigned short * __thiscall CAllocStorageVariant::GetLPWSTR(unsigned int)const 
?GetLPWSTR@CAllocStorageVariant@@QBEPAGI@Z
; public: unsigned short const * __thiscall CCatalogAdmin::GetLocation(void)
?GetLocation@CCatalogAdmin@@QAEPBGXZ
; public: virtual long __thiscall CMemDeSerStream::GetLong(void)
?GetLong@CMemDeSerStream@@UAEJXZ
; public: int __thiscall CQueryScanner::GetNumber(long &,int &)
?GetNumber@CQueryScanner@@QAEHAAJAAH@Z
; public: int __thiscall CQueryScanner::GetNumber(unsigned long &,int &)
?GetNumber@CQueryScanner@@QAEHAAKAAH@Z
; public: int __thiscall CQueryScanner::GetNumber(__int64 &,int &)
?GetNumber@CQueryScanner@@QAEHAA_JAAH@Z
; public: int __thiscall CQueryScanner::GetNumber(unsigned __int64 &,int &)
?GetNumber@CQueryScanner@@QAEHAA_KAAH@Z
; public: void __thiscall CKeyDeComp::GetOffset(struct BitOffset &)
?GetOffset@CKeyDeComp@@QAEXAAUBitOffset@@@Z
; long __stdcall GetOleDBErrorInfo(struct IUnknown *,struct _GUID const &,unsigned long,unsigned int,struct tagERRORINFO *,struct IErrorInfo * *)
?GetOleDBErrorInfo@@YGJPAUIUnknown@@ABU_GUID@@KIPAUtagERRORINFO@@PAPAUIErrorInfo@@@Z
; long __stdcall GetOleError(class CException &)
?GetOleError@@YGJAAVCException@@@Z
; public: unsigned long __thiscall CWebServer::GetPhysicalPath(unsigned short const *,unsigned short *,unsigned long,unsigned long)
?GetPhysicalPath@CWebServer@@QAEKPBGPAGKK@Z
; public: int __thiscall CEmptyPropertyList::GetPropInfo(class CDbColId const &,unsigned short const * *,unsigned short *,unsigned int *)
?GetPropInfo@CEmptyPropertyList@@QAEHABVCDbColId@@PAPBGPAGPAI@Z
; public: int __thiscall CEmptyPropertyList::GetPropInfo(unsigned short const *,class CDbColId * *,unsigned short *,unsigned int *)
?GetPropInfo@CEmptyPropertyList@@QAEHPBGPAPAVCDbColId@@PAGPAI@Z
; public: virtual long __stdcall CEmptyPropertyList::GetPropInfoFromId(struct tagDBID const *,unsigned short * *,unsigned short *,unsigned int *)
?GetPropInfoFromId@CEmptyPropertyList@@UAGJPBUtagDBID@@PAPAGPAGPAI@Z
; public: virtual long __stdcall CEmptyPropertyList::GetPropInfoFromName(unsigned short const *,struct tagDBID * *,unsigned short *,unsigned int *)
?GetPropInfoFromName@CEmptyPropertyList@@UAGJPBGPAPAUtagDBID@@PAGPAI@Z
; public: static unsigned short __stdcall CEmptyPropertyList::GetPropType(unsigned int)
?GetPropType@CEmptyPropertyList@@SGGI@Z
; public: static unsigned int __stdcall CEmptyPropertyList::GetPropTypeCount(void)
?GetPropTypeCount@CEmptyPropertyList@@SGIXZ
; public: static unsigned short const * __stdcall CEmptyPropertyList::GetPropTypeName(unsigned int)
?GetPropTypeName@CEmptyPropertyList@@SGPBGI@Z
; public: virtual long __stdcall CDbProperties::GetProperties(unsigned long,struct tagDBPROPIDSET const * const,unsigned long *,struct tagDBPROPSET * *)
?GetProperties@CDbProperties@@UAGJKQBUtagDBPROPIDSET@@PAKPAPAUtagDBPROPSET@@@Z
; public: void __thiscall CGetDbProps::GetProperties(struct IDBProperties *,unsigned long)
?GetProperties@CGetDbProps@@QAEXPAUIDBProperties@@K@Z
; public: virtual long __stdcall CDbProperties::GetPropertyInfo(unsigned long,struct tagDBPROPIDSET const * const,unsigned long *,struct tagDBPROPINFOSET * *,unsigned short * *)
?GetPropertyInfo@CDbProperties@@UAGJKQBUtagDBPROPIDSET@@PAKPAPAUtagDBPROPINFOSET@@PAPAG@Z
; public: float __thiscall CAllocStorageVariant::GetR4(unsigned int)const 
?GetR4@CAllocStorageVariant@@QBEMI@Z
; public: double __thiscall CAllocStorageVariant::GetR8(unsigned int)const 
?GetR8@CAllocStorageVariant@@QBENI@Z
; public: int __thiscall CMachineAdmin::GetSZParam(unsigned short const *,unsigned short *,unsigned long)
?GetSZParam@CMachineAdmin@@QAEHPBGPAGK@Z
; long __stdcall GetScodeError(class CException &)
?GetScodeError@@YGJAAVCException@@@Z
; int __stdcall GetSecret(unsigned short const *,unsigned short const *,unsigned short * *,unsigned long *)
?GetSecret@@YGHPBG0PAPAGPAK@Z
; public: unsigned long __thiscall CDriveInfo::GetSectorSize(void)
?GetSectorSize@CDriveInfo@@QAEKXZ
; public: void __thiscall CCatState::GetSortProp(unsigned int,unsigned short const * *,enum SORTDIR *)const 
?GetSortProp@CCatState@@QBEXIPAPBGPAW4SORTDIR@@@Z
; void __stdcall GetStackTrace(char *,unsigned long)
?GetStackTrace@@YGXPADK@Z
; public: unsigned char const * __thiscall CGenericCiProxy::GetStartupData(struct _GUID &,unsigned long &)
?GetStartupData@CGenericCiProxy@@QAEPBEAAU_GUID@@AAK@Z
; public: class PStorage & __thiscall CPropStoreManager::GetStorage(unsigned long)
?GetStorage@CPropStoreManager@@QAEAAVPStorage@@K@Z
; public: unsigned short * __thiscall CKey::GetStr(void)const 
?GetStr@CKey@@QBEPAGXZ
; public: unsigned short * __thiscall CKeyBuf::GetStr(void)const 
?GetStr@CKeyBuf@@QBEPAGXZ
; public: virtual char * __thiscall CMemDeSerStream::GetString(void)
?GetString@CMemDeSerStream@@UAEPADXZ
; class CDbRestriction * __stdcall GetStringDbRestriction(unsigned short const *,unsigned long,struct IColumnMapper *,unsigned long)
?GetStringDbRestriction@@YGPAVCDbRestriction@@PBGKPAUIColumnMapper@@K@Z
; unsigned short const * __stdcall GetStringFromLCID(unsigned long)
?GetStringFromLCID@@YGPBGK@Z
; void __stdcall GetStringFromLCID(unsigned long,unsigned short *)
?GetStringFromLCID@@YGXKPAG@Z
; public: unsigned long __thiscall CPropStoreManager::GetTotalSizeInKB(void)
?GetTotalSizeInKB@CPropStoreManager@@QAEKXZ
; public: unsigned long __thiscall CPropertyStore::GetTotalSizeInKB(void)
?GetTotalSizeInKB@CPropertyStore@@QAEKXZ
; public: virtual unsigned long __thiscall CMemDeSerStream::GetULong(void)
?GetULong@CMemDeSerStream@@UAEKXZ
; public: virtual unsigned short __thiscall CMemDeSerStream::GetUShort(void)
?GetUShort@CMemDeSerStream@@UAEGXZ
; public: void __thiscall CIndexTable::GetUserHdrInfo(unsigned int &,int &)
?GetUserHdrInfo@CIndexTable@@QAEXAAIAAH@Z
; public: unsigned long __thiscall CMetaDataMgr::GetVPathAccess(unsigned short const *)
?GetVPathAccess@CMetaDataMgr@@QAEKPBG@Z
; public: unsigned long __thiscall CMetaDataMgr::GetVPathAuthorization(unsigned short const *)
?GetVPathAuthorization@CMetaDataMgr@@QAEKPBG@Z
; public: unsigned long __thiscall CMetaDataMgr::GetVPathSSLAccess(unsigned short const *)
?GetVPathSSLAccess@CMetaDataMgr@@QAEKPBG@Z
; public: unsigned short const * __thiscall CDriveInfo::GetVolumeName(int)
?GetVolumeName@CDriveInfo@@QAEPBGH@Z
; public: virtual void __thiscall CMemDeSerStream::GetWChar(unsigned short *,unsigned long)
?GetWChar@CMemDeSerStream@@UAEXPAGK@Z
; public: virtual unsigned short * __thiscall CMemDeSerStream::GetWString(void)
?GetWString@CMemDeSerStream@@UAEPAGXZ
; public: long __thiscall CDbCmdTreeNode::GetWeight(void)const 
?GetWeight@CDbCmdTreeNode@@QBEJXZ
; public: void __thiscall CDynStream::Grow(class PStorage &,unsigned long)
?Grow@CDynStream@@QAEXAAVPStorage@@K@Z
; private: void __thiscall CVirtualString::GrowBuffer(unsigned long)
?GrowBuffer@CVirtualString@@AAEXK@Z
; void __stdcall HTMLEscapeW(unsigned short const *,class CVirtualString &,unsigned long)
?HTMLEscapeW@@YGXPBGAAVCVirtualString@@K@Z
; private: void __thiscall CImpersonateClient::Impersonate(void)
?Impersonate@CImpersonateClient@@AAEXXZ
; public: void __thiscall CFileMapView::Init(void)
?Init@CFileMapView@@QAEXXZ
; public: void __thiscall CMmStreamConsecBuf::Init(class PMmStream *)
?Init@CMmStreamConsecBuf@@QAEXPAVPMmStream@@@Z
; public: int __thiscall CPidLookupTable::Init(class PRcovStorageObj *)
?Init@CPidLookupTable@@QAEHPAVPRcovStorageObj@@@Z
; public: void __thiscall CRcovStorageHdr::Init(unsigned long)
?Init@CRcovStorageHdr@@QAEXK@Z
; public: void __thiscall CRegChangeEvent::Init(void)
?Init@CRegChangeEvent@@QAEXXZ
; public: int __thiscall CSdidLookupTable::Init(class CiStorage *)
?Init@CSdidLookupTable@@QAEHPAVCiStorage@@@Z
; public: virtual void __thiscall CCombinedPropertyList::InitIterator(void)
?InitIterator@CCombinedPropertyList@@UAEXXZ
; public: virtual void __thiscall CPropertyList::InitIterator(void)
?InitIterator@CPropertyList@@UAEXXZ
; public: virtual void __thiscall CStaticPropertyList::InitIterator(void)
?InitIterator@CStaticPropertyList@@UAEXXZ
; public: void __thiscall CImpersonationTokenCache::Initialize(unsigned short const *,int,int,int,unsigned long,unsigned long,unsigned long)
?Initialize@CImpersonationTokenCache@@QAEXPBGHHHKKK@Z
; public: void __thiscall CDynStream::InitializeForRead(void)
?InitializeForRead@CDynStream@@QAEXXZ
; public: void __thiscall CDynStream::InitializeForWrite(unsigned long)
?InitializeForWrite@CDynStream@@QAEXK@Z
; protected: void __thiscall CDbCmdTreeNode::InsertChild(class CDbCmdTreeNode *)
?InsertChild@CDbCmdTreeNode@@IAEXPAV1@@Z
; public: int __thiscall CDbPropertyRestriction::IsCIDialect(void)
?IsCIDialect@CDbPropertyRestriction@@QAEHXZ
; public: int __thiscall CMachineAdmin::IsCIEnabled(void)
?IsCIEnabled@CMachineAdmin@@QAEHXZ
; public: int __thiscall CMachineAdmin::IsCIPaused(void)
?IsCIPaused@CMachineAdmin@@QAEHXZ
; public: int __thiscall CMachineAdmin::IsCIStarted(void)
?IsCIStarted@CMachineAdmin@@QAEHXZ
; public: int __thiscall CMachineAdmin::IsCIStopped(void)
?IsCIStopped@CMachineAdmin@@QAEHXZ
; public: int __thiscall CCatalogAdmin::IsCatalogInactive(void)
?IsCatalogInactive@CCatalogAdmin@@QAEHXZ
; int __stdcall IsDirectoryWritable(unsigned short const *)
?IsDirectoryWritable@@YGHPBG@Z
; public: static int __stdcall CMetaDataMgr::IsIISAdminUp(int &)
?IsIISAdminUp@CMetaDataMgr@@SGHAAH@Z
; public: static int __stdcall CImpersonateSystem::IsImpersonated(void)
?IsImpersonated@CImpersonateSystem@@SGHXZ
; public: int __thiscall CRestriction::IsLeaf(void)const 
?IsLeaf@CRestriction@@QBEHXZ
; int __stdcall IsNullPointerVariant(struct tagPROPVARIANT *)
?IsNullPointerVariant@@YGHPAUtagPROPVARIANT@@@Z
; public: int __thiscall CCatalogAdmin::IsPaused(void)
?IsPaused@CCatalogAdmin@@QAEHXZ
; public: static int __stdcall CImpersonateSystem::IsRunningAsSystem(void)
?IsRunningAsSystem@CImpersonateSystem@@SGHXZ
; public: int __thiscall CDriveInfo::IsSameDrive(unsigned short const *)
?IsSameDrive@CDriveInfo@@QAEHPBG@Z
; long __stdcall IsScopeValid(unsigned short const *,unsigned int,int)
?IsScopeValid@@YGJPBGIH@Z
; public: int __thiscall CCatalogAdmin::IsStarted(void)
?IsStarted@CCatalogAdmin@@QAEHXZ
; public: int __thiscall CCatalogAdmin::IsStopped(void)
?IsStopped@CCatalogAdmin@@QAEHXZ
; public: int __thiscall CAllocStorageVariant::IsValid(void)const 
?IsValid@CAllocStorageVariant@@QBEHXZ
; public: int __thiscall CNodeRestriction::IsValid(void)const 
?IsValid@CNodeRestriction@@QBEHXZ
; public: int __thiscall COccRestriction::IsValid(void)const 
?IsValid@COccRestriction@@QBEHXZ
; public: int __thiscall CRestriction::IsValid(void)const 
?IsValid@CRestriction@@QBEHXZ
; public: int __thiscall CFilterDaemon::IsWaitingForDocument(void)
?IsWaitingForDocument@CFilterDaemon@@QAEHXZ
; public: int __thiscall CDriveInfo::IsWriteProtected(void)
?IsWriteProtected@CDriveInfo@@QAEHXZ
; public: void __thiscall CLocalGlobalPropertyList::Load(unsigned short const * const)
?Load@CLocalGlobalPropertyList@@QAEXQBG@Z
; unsigned long __stdcall LocaleToCodepage(unsigned long)
?LocaleToCodepage@@YGKK@Z
; private: unsigned long __thiscall CPropertyStore::LokNewWorkId(unsigned long,int,int)
?LokNewWorkId@CPropertyStore@@AAEKKHH@Z
; public: int __thiscall CCatStateInfo::LokUpdate(void)
?LokUpdate@CCatStateInfo@@QAEHXZ
; public: void __thiscall CPropStoreManager::LongInit(int &,unsigned long &,void (__stdcall*)(unsigned long,int,void const *),void const *)
?LongInit@CPropStoreManager@@QAEXAAHAAKP6GXKHPBX@Z2@Z
; private: unsigned int __thiscall CPropStoreInfo::Lookup(unsigned long)
?Lookup@CPropStoreInfo@@AAEIK@Z
; public: unsigned long __thiscall CSdidLookupTable::LookupSDID(void *,unsigned long)
?LookupSDID@CSdidLookupTable@@QAEKPAXK@Z
; public: void __thiscall CPhysStorage::MakeBackupCopy(class CPhysStorage &,class PSaveProgressTracker &)
?MakeBackupCopy@CPhysStorage@@QAEXAAV1@AAVPSaveProgressTracker@@@Z
; public: void __thiscall CPidLookupTable::MakeBackupCopy(class PRcovStorageObj &,class PSaveProgressTracker &)
?MakeBackupCopy@CPidLookupTable@@QAEXAAVPRcovStorageObj@@AAVPSaveProgressTracker@@@Z
; public: void __thiscall CPropStoreManager::MakeBackupCopy(struct IProgressNotify *,int &,class CiStorage &,struct ICiEnumWorkids *,struct IEnumString * *)
?MakeBackupCopy@CPropStoreManager@@QAEXPAUIProgressNotify@@AAHAAVCiStorage@@PAUICiEnumWorkids@@PAPAUIEnumString@@@Z
; long __stdcall MakeICommand(struct IUnknown * *,unsigned short const *,unsigned short const *,struct IUnknown *)
?MakeICommand@@YGJPAPAUIUnknown@@PBG1PAU1@@Z
; long __stdcall MakeISearch(struct ISearchQueryHits * *,class CDbRestriction *,unsigned short const *)
?MakeISearch@@YGJPAPAUISearchQueryHits@@PAVCDbRestriction@@PBG@Z
; long __stdcall MakeLocalICommand(struct IUnknown * *,struct ICiCDocStore *,struct IUnknown *)
?MakeLocalICommand@@YGJPAPAUIUnknown@@PAUICiCDocStore@@PAU1@@Z
; long __stdcall MakeMetadataICommand(struct IUnknown * *,enum CiMetaData,unsigned short const *,unsigned short const *,struct IUnknown *)
?MakeMetadataICommand@@YGJPAPAUIUnknown@@W4CiMetaData@@PBG2PAU1@@Z
; public: void __thiscall CFullPath::MakePath(unsigned short const *)
?MakePath@CFullPath@@QAEXPBG@Z
; public: void __thiscall CFullPath::MakePath(unsigned short const *,unsigned int)
?MakePath@CFullPath@@QAEXPBGI@Z
; private: void __thiscall CImpersonateSystem::MakePrivileged(void)
?MakePrivileged@CImpersonateSystem@@AAEXXZ
; public: void __thiscall CMmStreamConsecBuf::Map(unsigned long)
?Map@CMmStreamConsecBuf@@QAEXK@Z
; public: int __thiscall CDynStream::MarkDirty(void)
?MarkDirty@CDynStream@@QAEHXZ
; public: void __thiscall CBaseStorageVariant::Marshall(class PSerStream &)const 
?Marshall@CBaseStorageVariant@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CContentRestriction::Marshall(class PSerStream &)const 
?Marshall@CContentRestriction@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbByGuid::Marshall(class PSerStream &)const 
?Marshall@CDbByGuid@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbCmdTreeNode::Marshall(class PSerStream &)const 
?Marshall@CDbCmdTreeNode@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbColId::Marshall(class PSerStream &)const 
?Marshall@CDbColId@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbContentVector::Marshall(class PSerStream &)const 
?Marshall@CDbContentVector@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbNumeric::Marshall(class PSerStream &)const 
?Marshall@CDbNumeric@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbParameter::Marshall(class PSerStream &)const 
?Marshall@CDbParameter@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbProp::Marshall(class PSerStream &)const 
?Marshall@CDbProp@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CDbPropSet::Marshall(class PSerStream &)const 
?Marshall@CDbPropSet@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CFullPropSpec::Marshall(class PSerStream &)const 
?Marshall@CFullPropSpec@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CNatLanguageRestriction::Marshall(class PSerStream &)const 
?Marshall@CNatLanguageRestriction@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CNodeRestriction::Marshall(class PSerStream &)const 
?Marshall@CNodeRestriction@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CNotRestriction::Marshall(class PSerStream &)const 
?Marshall@CNotRestriction@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CPropNameArray::Marshall(class PSerStream &)const 
?Marshall@CPropNameArray@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CPropertyRestriction::Marshall(class PSerStream &)const 
?Marshall@CPropertyRestriction@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CRestriction::Marshall(class PSerStream &)const 
?Marshall@CRestriction@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CVectorRestriction::Marshall(class PSerStream &)const 
?Marshall@CVectorRestriction@@QBEXAAVPSerStream@@@Z
; public: int __thiscall CBufferCache::MinPageInUse(unsigned long &)
?MinPageInUse@CBufferCache@@QAEHAAK@Z
; public: int __thiscall CPhysStorage::MinPageInUse(unsigned long &)
?MinPageInUse@CPhysStorage@@QAEHAAK@Z
; unsigned long __stdcall MultiByteToXArrayWideChar(unsigned char const *,unsigned long,unsigned int,class XArray<unsigned short> &)
?MultiByteToXArrayWideChar@@YGKPBEKIAAV?$XArray@G@@@Z
; unsigned __int64 __cdecl My_wcstoui64(unsigned short const *,unsigned short * *,int)
?My_wcstoui64@@YA_KPBGPAPAGH@Z
; public: unsigned long __thiscall CPidRemapper::NameToReal(class CFullPropSpec const *)
?NameToReal@CPidRemapper@@QAEKPBVCFullPropSpec@@@Z
; public: static struct IStemmer * __stdcall CCiOle::NewStemmer(struct _GUID const &)
?NewStemmer@CCiOle@@SGPAUIStemmer@@ABU_GUID@@@Z
; public: static struct IWordBreaker * __stdcall CCiOle::NewWordBreaker(struct _GUID const &)
?NewWordBreaker@CCiOle@@SGPAUIWordBreaker@@ABU_GUID@@@Z
; public: int __thiscall CCatalogEnum::Next(void)
?Next@CCatalogEnum@@QAEHXZ
; public: virtual class CPropEntry const * __thiscall CCombinedPropertyList::Next(void)
?Next@CCombinedPropertyList@@UAEPBVCPropEntry@@XZ
; public: virtual long __stdcall CEnumString::Next(unsigned long,unsigned short * *,unsigned long *)
?Next@CEnumString@@UAGJKPAPAGPAK@Z
; public: virtual long __stdcall CEnumWorkid::Next(unsigned long,unsigned long *,unsigned long *)
?Next@CEnumWorkid@@UAGJKPAK0@Z
; public: virtual class CPropEntry const * __thiscall CPropertyList::Next(void)
?Next@CPropertyList@@UAEPBVCPropEntry@@XZ
; public: int __thiscall CScopeEnum::Next(void)
?Next@CScopeEnum@@QAEHXZ
; public: virtual class CPropEntry const * __thiscall CStaticPropertyList::Next(void)
?Next@CStaticPropertyList@@UAEPBVCPropEntry@@XZ
; public: unsigned long __thiscall CPropertyStoreWids::NextWorkId(void)
?NextWorkId@CPropertyStoreWids@@QAEKXZ
; public: int __thiscall CRequestClient::NotifyWriteRead(void *,void *,unsigned long,void *,unsigned long,unsigned long &)
?NotifyWriteRead@CRequestClient@@QAEHPAX0K0KAAK@Z
; public: unsigned int __thiscall CCatState::NumberOfColumns(void)const 
?NumberOfColumns@CCatState@@QBEIXZ
; public: unsigned int __thiscall CCatState::NumberOfSortProps(void)const 
?NumberOfSortProps@CCatState@@QBEIXZ
; public: void __thiscall CMmStream::Open(unsigned short const *,unsigned long,unsigned long,unsigned long,unsigned long,int)
?Open@CMmStream@@QAEXPBGKKKKH@Z
; public: int __thiscall COLEPropManager::Open(class CFunnyPath const &)
?Open@COLEPropManager@@QAEHABVCFunnyPath@@@Z
; public: void __thiscall CMmStream::OpenExclusive(unsigned short *,int)
?OpenExclusive@CMmStream@@QAEXPAGH@Z
; struct _iobuf * __stdcall OpenFileFromPath(unsigned short const *)
?OpenFileFromPath@@YGPAU_iobuf@@PBG@Z
; public: class CCompositePropRecord * __thiscall CPropStoreManager::OpenRecord(unsigned long,unsigned char *)
?OpenRecord@CPropStoreManager@@QAEPAVCCompositePropRecord@@KPAE@Z
; public: class CCompositePropRecordForWrites * __thiscall CPropStoreManager::OpenRecordForWrites(unsigned long,unsigned char *)
?OpenRecordForWrites@CPropStoreManager@@QAEPAVCCompositePropRecordForWrites@@KPAE@Z
; long __stdcall ParseCatalogURL(unsigned short const *,class XPtrST<unsigned short> &,class XPtrST<unsigned short> &)
?ParseCatalogURL@@YGJPBGAAV?$XPtrST@G@@1@Z
; public: class CRestriction * __thiscall CParseCommandTree::ParseExpression(class CDbCmdTreeNode *)
?ParseExpression@CParseCommandTree@@QAEPAVCRestriction@@PAVCDbCmdTreeNode@@@Z
; public: static void __stdcall CPropertyList::ParseOneLine(class CQueryScanner &,int,class XPtr<class CPropEntry> &)
?ParseOneLine@CPropertyList@@SGXAAVCQueryScanner@@HAAV?$XPtr@VCPropEntry@@@@@Z
; public: class CDbRestriction * __thiscall CQueryParser::ParseQueryPhrase(void)
?ParseQueryPhrase@CQueryParser@@QAEPAVCDbRestriction@@XZ
; class CDbColumns * __stdcall ParseStringColumns(unsigned short const *,struct IColumnMapper *,unsigned long,class PVariableSet *,class CDynArray<unsigned short> *)
?ParseStringColumns@@YGPAVCDbColumns@@PBGPAUIColumnMapper@@KPAVPVariableSet@@PAV?$CDynArray@G@@@Z
; public: void __thiscall CParseCommandTree::ParseTree(class CDbCmdTreeNode *)
?ParseTree@CParseCommandTree@@QAEXPAVCDbCmdTreeNode@@@Z
; public: int __thiscall CCatalogAdmin::Pause(void)
?Pause@CCatalogAdmin@@QAEHXZ
; public: int __thiscall CMachineAdmin::PauseCI(void)
?PauseCI@CMachineAdmin@@QAEHXZ
; public: virtual unsigned long __thiscall CMemDeSerStream::PeekULong(void)
?PeekULong@CMemDeSerStream@@UAEKXZ
; public: unsigned long __thiscall CPidMapper::PidToRealPid(unsigned long)
?PidToRealPid@CPidMapper@@QAEKK@Z
; public: unsigned long __thiscall CStandardPropMapper::PropertyToPropId(class CFullPropSpec const &,int)
?PropertyToPropId@CStandardPropMapper@@QAEKABVCFullPropSpec@@H@Z
; public: virtual long __stdcall CFwPropertyMapper::PropertyToPropid(struct tagFULLPROPSPEC const *,int,unsigned long *)
?PropertyToPropid@CFwPropertyMapper@@UAGJPBUtagFULLPROPSPEC@@HPAK@Z
; public: void __thiscall CValueNormalizer::PutMaxValue(unsigned long,unsigned long &,enum VARENUM)
?PutMaxValue@CValueNormalizer@@QAEXKAAKW4VARENUM@@@Z
; public: void __thiscall CValueNormalizer::PutMinValue(unsigned long,unsigned long &,enum VARENUM)
?PutMinValue@CValueNormalizer@@QAEXKAAKW4VARENUM@@@Z
; public: void __thiscall CValueNormalizer::PutValue(unsigned long,unsigned long &,class CStorageVariant const &)
?PutValue@CValueNormalizer@@QAEXKAAKABVCStorageVariant@@@Z
; void __stdcall PutWString(class PSerStream &,unsigned short const *)
?PutWString@@YGXAAVPSerStream@@PBG@Z
; public: static void __stdcall CDbCmdTreeNode::PutWString(class PSerStream &,unsigned short const *)
?PutWString@CDbCmdTreeNode@@SGXAAVPSerStream@@PBG@Z
; private: class CDbRestriction * __thiscall CQueryParser::Query(class CDbNodeRestriction *)
?Query@CQueryParser@@AAEPAVCDbRestriction@@PAVCDbNodeRestriction@@@Z
; public: class CCatalogAdmin * __thiscall CCatalogEnum::QueryCatalogAdmin(void)
?QueryCatalogAdmin@CCatalogEnum@@QAEPAVCCatalogAdmin@@XZ
; public: class CCatalogAdmin * __thiscall CMachineAdmin::QueryCatalogAdmin(unsigned short const *)
?QueryCatalogAdmin@CMachineAdmin@@QAEPAVCCatalogAdmin@@PBG@Z
; public: class CCatalogEnum * __thiscall CMachineAdmin::QueryCatalogEnum(void)
?QueryCatalogEnum@CMachineAdmin@@QAEPAVCCatalogEnum@@XZ
; public: virtual long __stdcall CDbProperties::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CDbProperties@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CEmptyPropertyList::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CEmptyPropertyList@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CEnumString::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CEnumString@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CEnumWorkid::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CEnumWorkid@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CFwPropertyMapper::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CFwPropertyMapper@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CQueryUnknown::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CQueryUnknown@@UAGJABU_GUID@@PAPAX@Z
; public: class PRcovStorageObj * __thiscall CiStorage::QueryPidLookupTable(unsigned long)
?QueryPidLookupTable@CiStorage@@QAEPAVPRcovStorageObj@@K@Z
; public: class CScopeAdmin * __thiscall CCatalogAdmin::QueryScopeAdmin(unsigned short const *)
?QueryScopeAdmin@CCatalogAdmin@@QAEPAVCScopeAdmin@@PBG@Z
; public: class CScopeAdmin * __thiscall CScopeEnum::QueryScopeAdmin(void)
?QueryScopeAdmin@CScopeEnum@@QAEPAVCScopeAdmin@@XZ
; public: class CScopeEnum * __thiscall CCatalogAdmin::QueryScopeEnum(void)
?QueryScopeEnum@CCatalogAdmin@@QAEPAVCScopeEnum@@XZ
; public: class PRcovStorageObj * __thiscall CiStorage::QueryScopeList(unsigned long)
?QueryScopeList@CiStorage@@QAEPAVPRcovStorageObj@@K@Z
; public: class PRcovStorageObj * __thiscall CiStorage::QuerySdidLookupTable(unsigned long)
?QuerySdidLookupTable@CiStorage@@QAEPAVPRcovStorageObj@@K@Z
; public: class PRcovStorageObj * __thiscall CiStorage::QueryVirtualScopeList(unsigned long)
?QueryVirtualScopeList@CiStorage@@QAEPAVPRcovStorageObj@@K@Z
; public: void __thiscall CPidRemapper::ReBuild(class CPidMapper const &)
?ReBuild@CPidRemapper@@QAEXABVCPidMapper@@@Z
; public: void __thiscall CQueryUnknown::ReInit(unsigned long,class CRowset * *)
?ReInit@CQueryUnknown@@QAEXKPAPAVCRowset@@@Z
; public: void __thiscall CImpersonationTokenCache::ReInitializeIISScopes(void)
?ReInitializeIISScopes@CImpersonationTokenCache@@QAEXXZ
; private: virtual void __thiscall CPhysIndex::ReOpenStream(void)
?ReOpenStream@CPhysIndex@@EAEXXZ
; public: unsigned long __thiscall CDynStream::Read(void *,unsigned long)
?Read@CDynStream@@QAEKPAXK@Z
; public: unsigned long __thiscall CRcovStrmTrans::Read(void *,unsigned long)
?Read@CRcovStrmTrans@@QAEKPAXK@Z
; public: unsigned long __thiscall CRegAccess::Read(unsigned short const *,unsigned long)
?Read@CRegAccess@@QAEKPBGK@Z
; public: unsigned short * __thiscall CRegAccess::Read(unsigned short const *,unsigned short const *)
?Read@CRegAccess@@QAEPAGPBG0@Z
; public: int __thiscall CPropStoreManager::ReadPrimaryProperty(unsigned long,unsigned long,struct tagPROPVARIANT &)
?ReadPrimaryProperty@CPropStoreManager@@QAEHKKAAUtagPROPVARIANT@@@Z
; public: int __thiscall COLEPropManager::ReadProperty(class CFullPropSpec const &,struct tagPROPVARIANT &)
?ReadProperty@COLEPropManager@@QAEHABVCFullPropSpec@@AAUtagPROPVARIANT@@@Z
; public: int __thiscall CPropStoreManager::ReadProperty(class CCompositePropRecord &,unsigned long,struct tagPROPVARIANT &)
?ReadProperty@CPropStoreManager@@QAEHAAVCCompositePropRecord@@KAAUtagPROPVARIANT@@@Z
; public: int __thiscall CPropStoreManager::ReadProperty(class CCompositePropRecord &,unsigned long,struct tagPROPVARIANT &,unsigned char *,unsigned int *)
?ReadProperty@CPropStoreManager@@QAEHAAVCCompositePropRecord@@KAAUtagPROPVARIANT@@PAEPAI@Z
; public: int __thiscall CPropStoreManager::ReadProperty(class CCompositePropRecord &,unsigned long,struct tagPROPVARIANT *,unsigned int *)
?ReadProperty@CPropStoreManager@@QAEHAAVCCompositePropRecord@@KPAUtagPROPVARIANT@@PAI@Z
; public: int __thiscall CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT &)
?ReadProperty@CPropStoreManager@@QAEHKKAAUtagPROPVARIANT@@@Z
; public: int __thiscall CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT &,unsigned char *,unsigned int *)
?ReadProperty@CPropStoreManager@@QAEHKKAAUtagPROPVARIANT@@PAEPAI@Z
; public: int __thiscall CPropStoreManager::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT *,unsigned int *)
?ReadProperty@CPropStoreManager@@QAEHKKPAUtagPROPVARIANT@@PAI@Z
; public: int __thiscall CPropertyStore::ReadProperty(class CPropRecordNoLock &,unsigned long,struct tagPROPVARIANT *,unsigned int *)
?ReadProperty@CPropertyStore@@QAEHAAVCPropRecordNoLock@@KPAUtagPROPVARIANT@@PAI@Z
; public: int __thiscall CPropertyStore::ReadProperty(unsigned long,unsigned long,struct tagPROPVARIANT &)
?ReadProperty@CPropertyStore@@QAEHKKAAUtagPROPVARIANT@@@Z
; public: unsigned char __thiscall CDFA::Recognize(unsigned short const *)
?Recognize@CDFA@@QAEEPBG@Z
; public: void __thiscall CCiRegParams::Refresh(struct ICiAdminParams *,int)
?Refresh@CCiRegParams@@QAEXPAUICiAdminParams@@H@Z
; public: void __thiscall CDefColumnRegEntry::Refresh(int)
?Refresh@CDefColumnRegEntry@@QAEXH@Z
; public: void __thiscall CWorkQueue::RefreshParams(unsigned long,unsigned long)
?RefreshParams@CWorkQueue@@QAEXKK@Z
; public: virtual unsigned long __stdcall CDbProperties::Release(void)
?Release@CDbProperties@@UAGKXZ
; public: virtual unsigned long __stdcall CEmptyPropertyList::Release(void)
?Release@CEmptyPropertyList@@UAGKXZ
; public: virtual unsigned long __stdcall CEnumString::Release(void)
?Release@CEnumString@@UAGKXZ
; public: virtual unsigned long __stdcall CEnumWorkid::Release(void)
?Release@CEnumWorkid@@UAGKXZ
; public: virtual unsigned long __stdcall CFwPropertyMapper::Release(void)
?Release@CFwPropertyMapper@@UAGKXZ
; public: void __thiscall CImpersonateRemoteAccess::Release(void)
?Release@CImpersonateRemoteAccess@@QAEXXZ
; public: virtual unsigned long __stdcall CQueryUnknown::Release(void)
?Release@CQueryUnknown@@UAGKXZ
; public: void __thiscall CWorkQueue::Release(class CWorkThread *)
?Release@CWorkQueue@@QAEXPAVCWorkThread@@@Z
; private: void __thiscall CPropertyStore::ReleaseRead(class CReadWriteLockRecord &)
?ReleaseRead@CPropertyStore@@AAEXAAVCReadWriteLockRecord@@@Z
; public: void __thiscall CWorkQueue::ReleaseWorkThreads(void)
?ReleaseWorkThreads@CWorkQueue@@QAEXXZ
; public: void __thiscall CColumns::Remove(unsigned int)
?Remove@CColumns@@QAEXI@Z
; public: void __thiscall CDbSortSet::Remove(unsigned int)
?Remove@CDbSortSet@@QAEXI@Z
; public: void __thiscall CSort::Remove(unsigned int)
?Remove@CSort@@QAEXI@Z
; public: void __thiscall CWorkQueue::Remove(class PWorkItem *)
?Remove@CWorkQueue@@QAEXPAVPWorkItem@@@Z
; public: void __thiscall CMachineAdmin::RemoveCatalog(unsigned short const *,int)
?RemoveCatalog@CMachineAdmin@@QAEXPBGH@Z
; public: void __thiscall CMachineAdmin::RemoveCatalogFiles(unsigned short const *)
?RemoveCatalogFiles@CMachineAdmin@@QAEXPBG@Z
; public: class CRestriction * __thiscall CNodeRestriction::RemoveChild(unsigned int)
?RemoveChild@CNodeRestriction@@QAEPAVCRestriction@@I@Z
; protected: class CDbCmdTreeNode * __thiscall CDbCmdTreeNode::RemoveFirstChild(void)
?RemoveFirstChild@CDbCmdTreeNode@@IAEPAV1@XZ
; public: void __thiscall CCatalogAdmin::RemoveScope(unsigned short const *)
?RemoveScope@CCatalogAdmin@@QAEXPBG@Z
; public: void __thiscall CPhysStorage::Reopen(int)
?Reopen@CPhysStorage@@QAEXH@Z
; public: void __thiscall CEventLog::ReportEventW(class CEventItem &)
?ReportEventW@CEventLog@@QAEXAAVCEventItem@@@Z
; public: void __thiscall CFwEventItem::ReportEventW(struct ICiCAdviseStatus &)
?ReportEventW@CFwEventItem@@QAEXAAUICiCAdviseStatus@@@Z
; public: int __thiscall CPhysStorage::RequiresFlush(unsigned long)
?RequiresFlush@CPhysStorage@@QAEHK@Z
; public: void __thiscall CRegChangeEvent::Reset(void)
?Reset@CRegChangeEvent@@QAEXXZ
; public: void __thiscall CQueryScanner::ResetBuffer(unsigned short const *)
?ResetBuffer@CQueryScanner@@QAEXPBG@Z
; protected: void __thiscall CAllocStorageVariant::ResetType(class PMemoryAllocator &)
?ResetType@CAllocStorageVariant@@IAEXAAVPMemoryAllocator@@@Z
; public: void __thiscall CProcess::Resume(void)
?Resume@CProcess@@QAEXXZ
; public: void __thiscall CPhysStorage::ReturnBuffer(unsigned long,int,int)
?ReturnBuffer@CPhysStorage@@QAEXKHH@Z
; public: void __thiscall CMmStreamConsecBuf::Rewind(void)
?Rewind@CMmStreamConsecBuf@@QAEXXZ
; unsigned long __stdcall SaComputeSize(unsigned short,struct tagSAFEARRAY &)
?SaComputeSize@@YGKGAAUtagSAFEARRAY@@@Z
; int __stdcall SaCreateAndCopy(class PMemoryAllocator &,struct tagSAFEARRAY *,struct tagSAFEARRAY * *)
?SaCreateAndCopy@@YGHAAVPMemoryAllocator@@PAUtagSAFEARRAY@@PAPAU2@@Z
; int __stdcall SaCreateData(class PVarAllocator &,unsigned short,struct tagSAFEARRAY &,struct tagSAFEARRAY &,int)
?SaCreateData@@YGHAAVPVarAllocator@@GAAUtagSAFEARRAY@@1H@Z
; public: int __thiscall CRcovStrmTrans::Seek(unsigned long)
?Seek@CRcovStrmTrans@@QAEHK@Z
; public: void __thiscall CDbQueryResults::Serialize(class PSerStream &)const 
?Serialize@CDbQueryResults@@QBEXAAVPSerStream@@@Z
; public: void __thiscall CPidRemapper::Set(class XArray<unsigned long> &)
?Set@CPidRemapper@@QAEXAAV?$XArray@K@@@Z
; public: void __thiscall CScopeAdmin::SetAlias(unsigned short const *)
?SetAlias@CScopeAdmin@@QAEXPBG@Z
; public: void __thiscall CStorageVariant::SetBOOL(short,unsigned int)
?SetBOOL@CStorageVariant@@QAEXFI@Z
; public: void __thiscall CAllocStorageVariant::SetBSTR(unsigned short *,class PMemoryAllocator &)
?SetBSTR@CAllocStorageVariant@@QAEXPAGAAVPMemoryAllocator@@@Z
; public: void __thiscall CStorageVariant::SetBSTR(unsigned short *,unsigned int)
?SetBSTR@CStorageVariant@@QAEXPAGI@Z
; public: void __thiscall CPropStoreManager::SetBackupSize(unsigned long,unsigned long)
?SetBackupSize@CPropStoreManager@@QAEXKK@Z
; public: void __thiscall CCatState::SetCD(unsigned short const *)
?SetCD@CCatState@@QAEXPBG@Z
; public: void __thiscall CStorageVariant::SetCLSID(struct _GUID,unsigned int)
?SetCLSID@CStorageVariant@@QAEXU_GUID@@I@Z
; public: void __thiscall CStorageVariant::SetCY(union tagCY,unsigned int)
?SetCY@CStorageVariant@@QAEXTtagCY@@I@Z
; public: void __thiscall CCatState::SetCatalog(unsigned short const *)
?SetCatalog@CCatState@@QAEXPBG@Z
; public: void __thiscall CCatState::SetColumn(unsigned short const *,unsigned int)
?SetColumn@CCatState@@QAEXPBGI@Z
; private: void __thiscall CQueryParser::SetCurrentProperty(unsigned short const *,enum PropertyType)
?SetCurrentProperty@CQueryParser@@AAEXPBGW4PropertyType@@@Z
; public: void __thiscall CStorageVariant::SetDATE(double,unsigned int)
?SetDATE@CStorageVariant@@QAEXNI@Z
; public: void __thiscall CCatalogAdmin::SetDWORDParam(unsigned short const *,unsigned long)
?SetDWORDParam@CCatalogAdmin@@QAEXPBGK@Z
; public: void __thiscall CMachineAdmin::SetDWORDParam(unsigned short const *,unsigned long)
?SetDWORDParam@CMachineAdmin@@QAEXPBGK@Z
; public: void __thiscall CCatState::SetDefaultProperty(unsigned short const *)
?SetDefaultProperty@CCatState@@QAEXPBG@Z
; public: void __thiscall CRangeRestriction::SetEndKey(class CKeyBuf const &)
?SetEndKey@CRangeRestriction@@QAEXABVCKeyBuf@@@Z
; public: void __thiscall CScopeAdmin::SetExclude(int)
?SetExclude@CScopeAdmin@@QAEXH@Z
; public: void __thiscall CStorageVariant::SetFILETIME(struct _FILETIME,unsigned int)
?SetFILETIME@CStorageVariant@@QAEXU_FILETIME@@I@Z
; public: void __thiscall CStorageVariant::SetI2(short,unsigned int)
?SetI2@CStorageVariant@@QAEXFI@Z
; public: void __thiscall CStorageVariant::SetI4(long,unsigned int)
?SetI4@CStorageVariant@@QAEXJI@Z
; public: void __thiscall CStorageVariant::SetI8(union _LARGE_INTEGER,unsigned int)
?SetI8@CStorageVariant@@QAEXT_LARGE_INTEGER@@I@Z
; public: void __thiscall CStorageVariant::SetLPSTR(char const *,unsigned int)
?SetLPSTR@CStorageVariant@@QAEXPBDI@Z
; public: void __thiscall CStorageVariant::SetLPWSTR(unsigned short const *,unsigned int)
?SetLPWSTR@CStorageVariant@@QAEXPBGI@Z
; public: void __thiscall CCatState::SetLocale(unsigned short const *)
?SetLocale@CCatState@@QAEXPBG@Z
; public: void __thiscall CScopeAdmin::SetLogonInfo(unsigned short const *,unsigned short const *,class CCatalogAdmin &)
?SetLogonInfo@CScopeAdmin@@QAEXPBG0AAVCCatalogAdmin@@@Z
; public: void __thiscall CPropStoreManager::SetMappedCacheSize(unsigned long,unsigned long)
?SetMappedCacheSize@CPropStoreManager@@QAEXKK@Z
; public: void __thiscall CCatState::SetNumberOfColumns(unsigned int)
?SetNumberOfColumns@CCatState@@QAEXI@Z
; public: void __thiscall CCatState::SetNumberOfSortProps(unsigned int)
?SetNumberOfSortProps@CCatState@@QAEXI@Z
; public: void __thiscall CScopeAdmin::SetPath(unsigned short const *)
?SetPath@CScopeAdmin@@QAEXPBG@Z
; public: void __thiscall CContentRestriction::SetPhrase(unsigned short const *)
?SetPhrase@CContentRestriction@@QAEXPBG@Z
; public: void __thiscall CNatLanguageRestriction::SetPhrase(unsigned short const *)
?SetPhrase@CNatLanguageRestriction@@QAEXPBG@Z
; public: void __thiscall CGenericCiProxy::SetPriority(unsigned long,unsigned long)
?SetPriority@CGenericCiProxy@@QAEXKK@Z
; public: virtual long __stdcall CDbProperties::SetProperties(unsigned long,struct tagDBPROPSET * const)
?SetProperties@CDbProperties@@UAGJKQAUtagDBPROPSET@@@Z
; public: int __thiscall CDbColId::SetProperty(unsigned short const *)
?SetProperty@CDbColId@@QAEHPBG@Z
; public: int __thiscall CDbPropBaseRestriction::SetProperty(struct tagDBID const &)
?SetProperty@CDbPropBaseRestriction@@QAEHABUtagDBID@@@Z
; public: int __thiscall CDbPropBaseRestriction::SetProperty(class CDbColumnNode const &)
?SetProperty@CDbPropBaseRestriction@@QAEHABVCDbColumnNode@@@Z
; public: int __thiscall CFullPropSpec::SetProperty(unsigned short const *)
?SetProperty@CFullPropSpec@@QAEHPBG@Z
; public: void __thiscall CFullPropSpec::SetProperty(unsigned long)
?SetProperty@CFullPropSpec@@QAEXK@Z
; public: void __thiscall CStorageVariant::SetR4(float,unsigned int)
?SetR4@CStorageVariant@@QAEXMI@Z
; public: void __thiscall CStorageVariant::SetR8(double,unsigned int)
?SetR8@CStorageVariant@@QAEXNI@Z
; public: int __thiscall CDbSelectNode::SetRestriction(class CDbCmdTreeNode *)
?SetRestriction@CDbSelectNode@@QAEHPAVCDbCmdTreeNode@@@Z
; public: static void __stdcall CImpersonateSystem::SetRunningAsSystem(void)
?SetRunningAsSystem@CImpersonateSystem@@SGXXZ
; public: void __thiscall CMachineAdmin::SetSZParam(unsigned short const *,unsigned short const *,unsigned long)
?SetSZParam@CMachineAdmin@@QAEXPBG0K@Z
; void __stdcall SetScopeProperties(struct ICommand *,unsigned int,unsigned short const * const *,unsigned long const *,unsigned short const * const *,unsigned short const * const *)
?SetScopeProperties@@YGXPAUICommand@@IPBQBGPBK11@Z
; long __stdcall SetScopePropertiesNoThrow(struct ICommand *,unsigned int,unsigned short const * const *,unsigned long const *,unsigned short const * const *,unsigned short const * const *)
?SetScopePropertiesNoThrow@@YGJPAUICommand@@IPBQBGPBK11@Z
; void __stdcall SetSecret(unsigned short const *,unsigned short const *,unsigned short const *,unsigned long)
?SetSecret@@YGXPBG00K@Z
; public: void __thiscall CCatState::SetSortProp(unsigned short const *,enum SORTDIR,unsigned int)
?SetSortProp@CCatState@@QAEXPBGW4SORTDIR@@I@Z
; public: void __thiscall CRangeRestriction::SetStartKey(class CKeyBuf const &)
?SetStartKey@CRangeRestriction@@QAEXABVCKeyBuf@@@Z
; public: void __thiscall CStorageVariant::SetUI1(unsigned char,unsigned int)
?SetUI1@CStorageVariant@@QAEXEI@Z
; public: void __thiscall CStorageVariant::SetUI2(unsigned short,unsigned int)
?SetUI2@CStorageVariant@@QAEXGI@Z
; public: void __thiscall CStorageVariant::SetUI4(unsigned long,unsigned int)
?SetUI4@CStorageVariant@@QAEXKI@Z
; public: void __thiscall CStorageVariant::SetUI8(union _ULARGE_INTEGER,unsigned int)
?SetUI8@CStorageVariant@@QAEXT_ULARGE_INTEGER@@I@Z
; public: void __thiscall CPropertyRestriction::SetValue(struct tagBLOB &)
?SetValue@CPropertyRestriction@@QAEXAAUtagBLOB@@@Z
; public: void __thiscall CPropertyRestriction::SetValue(unsigned short *)
?SetValue@CPropertyRestriction@@QAEXPAG@Z
; public: void __thiscall CPropertyRestriction::SetValue(struct _GUID *)
?SetValue@CPropertyRestriction@@QAEXPAU_GUID@@@Z
; public: void __thiscall CDbCmdTreeNode::SetWeight(long)
?SetWeight@CDbCmdTreeNode@@QAEXJ@Z
; public: void __thiscall CPropStoreManager::Setup(unsigned long,unsigned long,unsigned long,unsigned long,int,unsigned long)
?Setup@CPropStoreManager@@QAEXKKKKHK@Z
; public: void __thiscall CDynStream::Shrink(class PStorage &,unsigned long)
?Shrink@CDynStream@@QAEXAAVPStorage@@K@Z
; public: unsigned long __thiscall CPhysStorage::ShrinkFromFront(unsigned long,unsigned long)
?ShrinkFromFront@CPhysStorage@@QAEKKK@Z
; public: void __thiscall CPhysStorage::ShrinkToFit(void)
?ShrinkToFit@CPhysStorage@@QAEXXZ
; public: static void __stdcall CCiOle::Shutdown(void)
?Shutdown@CCiOle@@SGXXZ
; public: void __thiscall CPropStoreManager::Shutdown(void)
?Shutdown@CPropStoreManager@@QAEXXZ
; public: void __thiscall CShtOle::Shutdown(void)
?Shutdown@CShtOle@@QAEXXZ
; public: void __thiscall CWorkQueue::Shutdown(void)
?Shutdown@CWorkQueue@@QAEXXZ
; public: unsigned long __thiscall CDbQueryResults::Size(void)
?Size@CDbQueryResults@@QAEKXZ
; public: virtual long __stdcall CEnumString::Skip(unsigned long)
?Skip@CEnumString@@UAGJK@Z
; public: virtual long __stdcall CEnumWorkid::Skip(unsigned long)
?Skip@CEnumWorkid@@UAGJK@Z
; public: virtual void __thiscall CMemDeSerStream::SkipBlob(unsigned long)
?SkipBlob@CMemDeSerStream@@UAEXK@Z
; public: virtual void __thiscall CMemDeSerStream::SkipByte(void)
?SkipByte@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipChar(unsigned long)
?SkipChar@CMemDeSerStream@@UAEXK@Z
; public: virtual void __thiscall CMemDeSerStream::SkipDouble(void)
?SkipDouble@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipFloat(void)
?SkipFloat@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipGUID(void)
?SkipGUID@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipLong(void)
?SkipLong@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipULong(void)
?SkipULong@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipUShort(void)
?SkipUShort@CMemDeSerStream@@UAEXXZ
; public: virtual void __thiscall CMemDeSerStream::SkipWChar(unsigned long)
?SkipWChar@CMemDeSerStream@@UAEXK@Z
; public: int __thiscall CCatalogAdmin::Start(void)
?Start@CCatalogAdmin@@QAEHXZ
; public: int __thiscall CMachineAdmin::StartCI(void)
?StartCI@CMachineAdmin@@QAEHXZ
; public: int __thiscall CCatalogAdmin::Stop(void)
?Stop@CCatalogAdmin@@QAEHXZ
; public: int __thiscall CMachineAdmin::StopCI(void)
?StopCI@CMachineAdmin@@QAEHXZ
; public: void __thiscall CFilterDaemon::StopFiltering(void)
?StopFiltering@CFilterDaemon@@QAEXXZ
; public: unsigned int __thiscall CKey::StrLen(void)const 
?StrLen@CKey@@QBEIXZ
; public: unsigned int __thiscall CKeyBuf::StrLen(void)const 
?StrLen@CKeyBuf@@QBEIXZ
; void __cdecl SystemExceptionTranslator(unsigned int,struct _EXCEPTION_POINTERS *)
?SystemExceptionTranslator@@YAXIPAU_EXCEPTION_POINTERS@@@Z
; public: void __thiscall CDbCmdTreeNode::TransferNode(class CDbCmdTreeNode *)
?TransferNode@CDbCmdTreeNode@@QAEXPAV1@@Z
; public: unsigned long __thiscall CRestriction::TreeCount(void)const 
?TreeCount@CRestriction@@QBEKXZ
; public: void __thiscall CMachineAdmin::TunePerformance(int,unsigned short,unsigned short)
?TunePerformance@CMachineAdmin@@QAEXHGG@Z
; void __stdcall URLEscapeW(unsigned short const *,class CVirtualString &,unsigned long,int)
?URLEscapeW@@YGXPBGAAVCVirtualString@@KH@Z
; public: int __thiscall CDbByGuid::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbByGuid@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbCmdTreeNode::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbCmdTreeNode@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbColId::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbColId@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbContentVector::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbContentVector@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbNumeric::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbNumeric@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbParameter::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbParameter@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbProp::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbProp@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbPropSet::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbPropSet@@QAEHAAVPDeSerStream@@@Z
; public: int __thiscall CDbProperties::UnMarshall(class PDeSerStream &)
?UnMarshall@CDbProperties@@QAEHAAVPDeSerStream@@@Z
; public: static class CRestriction * __stdcall CRestriction::UnMarshall(class PDeSerStream &)
?UnMarshall@CRestriction@@SGPAV1@AAVPDeSerStream@@@Z
; public: static class CDbCmdTreeNode * __stdcall CDbCmdTreeNode::UnMarshallTree(class PDeSerStream &)
?UnMarshallTree@CDbCmdTreeNode@@SGPAV1@AAVPDeSerStream@@@Z
; void __stdcall UnPickle(int,class XPtr<class CColumnSet> &,class XPtr<class CRestriction> &,class XPtr<class CSortSet> &,class XPtr<class CCategorizationSet> &,class CRowsetProperties &,class XPtr<class CPidMapper> &,unsigned char *,unsigned long)
?UnPickle@@YGXHAAV?$XPtr@VCColumnSet@@@@AAV?$XPtr@VCRestriction@@@@AAV?$XPtr@VCSortSet@@@@AAV?$XPtr@VCCategorizationSet@@@@AAVCRowsetProperties@@AAV?$XPtr@VCPidMapper@@@@PAEK@Z
; protected: void __thiscall CRcovStrmTrans::Unmap(enum CRcovStorageHdr::DataCopyNum)
?Unmap@CRcovStrmTrans@@IAEXW4DataCopyNum@CRcovStorageHdr@@@Z
; unsigned long __stdcall UpdateContentIndex(unsigned short const *,unsigned short const *,unsigned short const *,int)
?UpdateContentIndex@@YGKPBG00H@Z
; public: void __thiscall CDiskFreeStatus::UpdateDiskLowInfo(void)
?UpdateDiskLowInfo@CDiskFreeStatus@@QAEXXZ
; int __stdcall VT_VARIANT_EQ(struct tagPROPVARIANT const &,struct tagPROPVARIANT const &)
?VT_VARIANT_EQ@@YGHABUtagPROPVARIANT@@0@Z
; int __stdcall VT_VARIANT_GE(struct tagPROPVARIANT const &,struct tagPROPVARIANT const &)
?VT_VARIANT_GE@@YGHABUtagPROPVARIANT@@0@Z
; int __stdcall VT_VARIANT_GT(struct tagPROPVARIANT const &,struct tagPROPVARIANT const &)
?VT_VARIANT_GT@@YGHABUtagPROPVARIANT@@0@Z
; int __stdcall VT_VARIANT_LE(struct tagPROPVARIANT const &,struct tagPROPVARIANT const &)
?VT_VARIANT_LE@@YGHABUtagPROPVARIANT@@0@Z
; int __stdcall VT_VARIANT_LT(struct tagPROPVARIANT const &,struct tagPROPVARIANT const &)
?VT_VARIANT_LT@@YGHABUtagPROPVARIANT@@0@Z
; int __stdcall VT_VARIANT_NE(struct tagPROPVARIANT const &,struct tagPROPVARIANT const &)
?VT_VARIANT_NE@@YGHABUtagPROPVARIANT@@0@Z
; int __stdcall ValidateScopeRestriction(class CRestriction *)
?ValidateScopeRestriction@@YGHPAVCRestriction@@@Z
; public: void __thiscall CDbScalarValue::Value(class CStorageVariant &)
?Value@CDbScalarValue@@QAEXAAVCStorageVariant@@@Z
; public: void __thiscall PRcovStorageObj::VerifyConsistency(void)
?VerifyConsistency@PRcovStorageObj@@QAEXXZ
; void __stdcall VerifyThreadHasAdminPrivilege(void)
?VerifyThreadHasAdminPrivilege@@YGXXZ
; unsigned long __stdcall WideCharToXArrayMultiByte(unsigned short const *,unsigned long,unsigned int,class XArray<unsigned char> &)
?WideCharToXArrayMultiByte@@YGKPBGKIAAV?$XArray@E@@@Z
; public: void __thiscall CDynStream::Write(void *,unsigned long)
?Write@CDynStream@@QAEXPAXK@Z
; protected: void __thiscall CRcovStrmTrans::Write(void const *,unsigned long)
?Write@CRcovStrmTrans@@IAEXPBXK@Z
; public: long __thiscall CPropStoreManager::WritePrimaryProperty(class CCompositePropRecordForWrites &,unsigned long,class CStorageVariant const &)
?WritePrimaryProperty@CPropStoreManager@@QAEJAAVCCompositePropRecordForWrites@@KABVCStorageVariant@@@Z
; public: long __thiscall CPropStoreManager::WritePrimaryProperty(unsigned long,unsigned long,class CStorageVariant const &)
?WritePrimaryProperty@CPropStoreManager@@QAEJKKABVCStorageVariant@@@Z
; public: long __thiscall CPropStoreManager::WriteProperty(class CCompositePropRecordForWrites &,unsigned long,class CStorageVariant const &)
?WriteProperty@CPropStoreManager@@QAEJAAVCCompositePropRecordForWrites@@KABVCStorageVariant@@@Z
; public: long __thiscall CPropStoreManager::WriteProperty(unsigned long,unsigned long,class CStorageVariant const &)
?WriteProperty@CPropStoreManager@@QAEJKKABVCStorageVariant@@@Z
; public: unsigned long __thiscall CPropStoreManager::WritePropertyInNewRecord(unsigned long,class CStorageVariant const &)
?WritePropertyInNewRecord@CPropStoreManager@@QAEKKABVCStorageVariant@@@Z
; private: class CDbProjectListAnchor * __thiscall CDbNestingNode::_FindGroupListAnchor(void)
?_FindGroupListAnchor@CDbNestingNode@@AAEPAVCDbProjectListAnchor@@XZ
; private: class CDbProjectListAnchor * __thiscall CDbProjectNode::_FindOrAddAnchor(void)
?_FindOrAddAnchor@CDbProjectNode@@AAEPAVCDbProjectListAnchor@@XZ
; private: class CDbSortListAnchor * __thiscall CDbSortNode::_FindOrAddAnchor(void)
?_FindOrAddAnchor@CDbSortNode@@AAEPAVCDbSortListAnchor@@XZ
; private: class CDbScalarValue * __thiscall CDbPropertyRestriction::_FindOrAddValueNode(void)
?_FindOrAddValueNode@CDbPropertyRestriction@@AAEPAVCDbScalarValue@@XZ
; private: int __thiscall CImpersonateRemoteAccess::_ImpersonateIf(unsigned short const *,unsigned short const *,unsigned long)
?_ImpersonateIf@CImpersonateRemoteAccess@@AAEHPBG0K@Z
; private: static unsigned long  CGlobalPropFileRefresher::_dwLastCheckMoment
?_dwLastCheckMoment@CGlobalPropFileRefresher@@0KA DATA
; private: static struct _FILETIME  CGlobalPropFileRefresher::_ftFile
?_ftFile@CGlobalPropFileRefresher@@0U_FILETIME@@A DATA
; private: static class CPropListFile *  CLocalGlobalPropertyList::_pGlobalPropListFile
?_pGlobalPropListFile@CLocalGlobalPropertyList@@0PAVCPropListFile@@A DATA
; private: static unsigned short *  CGlobalPropFileRefresher::_wcsFileName
?_wcsFileName@CGlobalPropFileRefresher@@0PAGA DATA
; unsigned __int64 __cdecl _wcstoui64(unsigned short const *,unsigned short * *,int)
?_wcstoui64@@YA_KPBGPAPAGH@Z
; void __stdcall ciDelete(void *)
?ciDelete@@YGXPAX@Z
; int __stdcall ciIsValidPointer(void const *)
?ciIsValidPointer@@YGHPBX@Z
; void * __stdcall ciNew(unsigned int)
?ciNew@@YGPAXI@Z
; public: unsigned long __thiscall CFileBuffer::fgetsw(class XGrowable<unsigned short,260> &)
?fgetsw@CFileBuffer@@QAEKAAV?$XGrowable@G$0BAE@@@@Z
; unsigned short * __stdcall wcsipattern(unsigned short *,unsigned short const *)
?wcsipattern@@YGPAGPAGPBG@Z
FsCiShutdown
_AbortMerges@16
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@16
InitializeCIISAPIPerformanceData
InitializeCIPerformanceData
InitializeFILTERPerformanceData
_LoadBHIFilter@16
LoadBinaryFilter
LoadIFilter
LoadIFilterEx
LoadTextFilter
LocateCatalogs
LocateCatalogsA
LocateCatalogsW
SetCatalogState
SetupCache
SetupCacheEx
_StartFWCiSvcWork@12
_StopFWCiSvcWork@16
SvcEntry_CiSvc
