; 
; Exports of file iisui.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY iisui.dll
EXPORTS
InitCommonDll
; public: __thiscall CAccessEntry::CAccessEntry(class CAccessEntry &)
??0CAccessEntry@@QAE@AAV0@@Z
; public: __thiscall CAccessEntry::CAccessEntry(unsigned long,void *,unsigned short const *,int)
??0CAccessEntry@@QAE@KPAXPBGH@Z
; public: __thiscall CAccessEntry::CAccessEntry(void *,int)
??0CAccessEntry@@QAE@PAXH@Z
; public: __thiscall CAccessEntry::CAccessEntry(void *,unsigned short const *,unsigned short const *)
??0CAccessEntry@@QAE@PAXPBG1@Z
; public: __thiscall CBlob::CBlob(class CBlob const &)
??0CBlob@@QAE@ABV0@@Z
; public: __thiscall CBlob::CBlob(unsigned long,unsigned char *,int)
??0CBlob@@QAE@KPAEH@Z
; public: __thiscall CBlob::CBlob(void)
??0CBlob@@QAE@XZ
; public: __thiscall CComAuthInfo::CComAuthInfo(class CComAuthInfo &)
??0CComAuthInfo@@QAE@AAV0@@Z
; public: __thiscall CComAuthInfo::CComAuthInfo(class CComAuthInfo *)
??0CComAuthInfo@@QAE@PAV0@@Z
; public: __thiscall CComAuthInfo::CComAuthInfo(unsigned short const *,unsigned short const *,unsigned short const *)
??0CComAuthInfo@@QAE@PBG00@Z
; public: __thiscall CConfirmDlg::CConfirmDlg(class CWnd *)
??0CConfirmDlg@@QAE@PAVCWnd@@@Z
; public: __thiscall CDirBrowseDlg::CDirBrowseDlg(class CDirBrowseDlg const &)
??0CDirBrowseDlg@@QAE@ABV0@@Z
; public: __thiscall CDirBrowseDlg::CDirBrowseDlg(class CWnd *,unsigned short const *)
??0CDirBrowseDlg@@QAE@PAVCWnd@@PBG@Z
; public: __thiscall CDownButton::CDownButton(void)
??0CDownButton@@QAE@XZ
; public: __thiscall CEmphasizedDialog::CEmphasizedDialog(unsigned int,class CWnd *)
??0CEmphasizedDialog@@QAE@IPAVCWnd@@@Z
; public: __thiscall CEmphasizedDialog::CEmphasizedDialog(unsigned short const *,class CWnd *)
??0CEmphasizedDialog@@QAE@PBGPAVCWnd@@@Z
; public: __thiscall CEmphasizedDialog::CEmphasizedDialog(void)
??0CEmphasizedDialog@@QAE@XZ
; public: __thiscall CError::CError(long)
??0CError@@QAE@J@Z
; public: __thiscall CError::CError(unsigned long)
??0CError@@QAE@K@Z
; public: __thiscall CError::CError(void)
??0CError@@QAE@XZ
; public: __thiscall CGetComputer::CGetComputer(class CGetComputer const &)
??0CGetComputer@@QAE@ABV0@@Z
; public: __thiscall CGetComputer::CGetComputer(void)
??0CGetComputer@@QAE@XZ
; public: __thiscall CGetUsers::CGetUsers(unsigned short const *,int)
??0CGetUsers@@QAE@PBGH@Z
; public: __thiscall CHeaderListBox::CHeaderListBox(unsigned long,unsigned short const *)
??0CHeaderListBox@@QAE@KPBG@Z
; public: __thiscall CIISAppPool::CIISAppPool(class CIISAppPool &)
??0CIISAppPool@@QAE@AAV0@@Z
; public: __thiscall CIISAppPool::CIISAppPool(class CComAuthInfo *,unsigned short const *)
??0CIISAppPool@@QAE@PAVCComAuthInfo@@PBG@Z
; public: __thiscall CIISApplication::CIISApplication(class CIISApplication &)
??0CIISApplication@@QAE@AAV0@@Z
; public: __thiscall CIISApplication::CIISApplication(class CComAuthInfo *,unsigned short const *)
??0CIISApplication@@QAE@PAVCComAuthInfo@@PBG@Z
; public: __thiscall CIISInterface::CIISInterface(class CIISInterface &)
??0CIISInterface@@QAE@AAV0@@Z
; public: __thiscall CIISInterface::CIISInterface(class CComAuthInfo *,long)
??0CIISInterface@@QAE@PAVCComAuthInfo@@J@Z
; public: __thiscall CIISSvcControl::CIISSvcControl(class CIISSvcControl &)
??0CIISSvcControl@@QAE@AAV0@@Z
; public: __thiscall CIISSvcControl::CIISSvcControl(class CIISSvcControl *)
??0CIISSvcControl@@QAE@PAV0@@Z
; public: __thiscall CIISSvcControl::CIISSvcControl(class CComAuthInfo *)
??0CIISSvcControl@@QAE@PAVCComAuthInfo@@@Z
; public: __thiscall CIISWizardBookEnd::CIISWizardBookEnd(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int)
??0CIISWizardBookEnd@@QAE@IIIII@Z
; public: __thiscall CIISWizardBookEnd::CIISWizardBookEnd(long *,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int)
??0CIISWizardBookEnd@@QAE@PAJIIIIIII@Z
; public: __thiscall CIISWizardPage::CIISWizardPage(unsigned int,unsigned int,int,unsigned int,unsigned int)
??0CIISWizardPage@@QAE@IIHII@Z
; public: __thiscall CIISWizardSheet::CIISWizardSheet(unsigned int,unsigned int,unsigned long,unsigned long)
??0CIISWizardSheet@@QAE@IIKK@Z
; public: __thiscall CILong::CILong(long)
??0CILong@@QAE@J@Z
; public: __thiscall CILong::CILong(unsigned short const *)
??0CILong@@QAE@PBG@Z
; public: __thiscall CILong::CILong(void)
??0CILong@@QAE@XZ
; protected: __thiscall CINumber::CINumber(void)
??0CINumber@@IAE@XZ
; public: __thiscall CIPAccessDescriptor::CIPAccessDescriptor(class CIPAccessDescriptor const &)
??0CIPAccessDescriptor@@QAE@ABV0@@Z
; public: __thiscall CIPAccessDescriptor::CIPAccessDescriptor(int)
??0CIPAccessDescriptor@@QAE@H@Z
; public: __thiscall CIPAccessDescriptor::CIPAccessDescriptor(int,unsigned long,unsigned long,int)
??0CIPAccessDescriptor@@QAE@HKKH@Z
; public: __thiscall CIPAccessDescriptor::CIPAccessDescriptor(int,unsigned short const *)
??0CIPAccessDescriptor@@QAE@HPBG@Z
; public: __thiscall CIPAddress::CIPAddress(class CIPAddress const &)
??0CIPAddress@@QAE@ABV0@@Z
; public: __thiscall CIPAddress::CIPAddress(class CString const &)
??0CIPAddress@@QAE@ABVCString@@@Z
; public: __thiscall CIPAddress::CIPAddress(unsigned char,unsigned char,unsigned char,unsigned char)
??0CIPAddress@@QAE@EEEE@Z
; public: __thiscall CIPAddress::CIPAddress(unsigned long,int)
??0CIPAddress@@QAE@KH@Z
; public: __thiscall CIPAddress::CIPAddress(unsigned char *,int)
??0CIPAddress@@QAE@PAEH@Z
; public: __thiscall CIPAddress::CIPAddress(unsigned short const *,int)
??0CIPAddress@@QAE@PBGH@Z
; public: __thiscall CIPAddress::CIPAddress(void)
??0CIPAddress@@QAE@XZ
; public: __thiscall CInheritanceDlg::CInheritanceDlg(int,unsigned long,unsigned long,unsigned long,unsigned long,unsigned short const *,int,class CComAuthInfo *,unsigned short const *,class CWnd *)
??0CInheritanceDlg@@QAE@HKKKKPBGHPAVCComAuthInfo@@0PAVCWnd@@@Z
; public: __thiscall CInheritanceDlg::CInheritanceDlg(unsigned long,int,class CComAuthInfo *,unsigned short const *,unsigned short const *,class CWnd *)
??0CInheritanceDlg@@QAE@KHPAVCComAuthInfo@@PBG1PAVCWnd@@@Z
; public: __thiscall CInheritanceDlg::CInheritanceDlg(unsigned long,int,class CComAuthInfo *,unsigned short const *,class CStringList &,unsigned short const *,class CWnd *)
??0CInheritanceDlg@@QAE@KHPAVCComAuthInfo@@PBGAAVCStringList@@1PAVCWnd@@@Z
; public: __thiscall CMappedBitmapButton::CMappedBitmapButton(void)
??0CMappedBitmapButton@@QAE@XZ
; public: __thiscall CMetaBack::CMetaBack(class CMetaBack &)
??0CMetaBack@@QAE@AAV0@@Z
; public: __thiscall CMetaBack::CMetaBack(class CComAuthInfo *)
??0CMetaBack@@QAE@PAVCComAuthInfo@@@Z
; public: __thiscall CMetaEnumerator::CMetaEnumerator(class CMetaEnumerator &)
??0CMetaEnumerator@@QAE@AAV0@@Z
; public: __thiscall CMetaEnumerator::CMetaEnumerator(int,class CMetaKey *)
??0CMetaEnumerator@@QAE@HPAVCMetaKey@@@Z
; public: __thiscall CMetaEnumerator::CMetaEnumerator(class CComAuthInfo *,unsigned short const *,unsigned long)
??0CMetaEnumerator@@QAE@PAVCComAuthInfo@@PBGK@Z
; public: __thiscall CMetaEnumerator::CMetaEnumerator(class CMetaInterface *,unsigned short const *,unsigned long)
??0CMetaEnumerator@@QAE@PAVCMetaInterface@@PBGK@Z
; protected: __thiscall CMetaInterface::CMetaInterface(class CMetaInterface *)
??0CMetaInterface@@IAE@PAV0@@Z
; protected: __thiscall CMetaInterface::CMetaInterface(class CComAuthInfo *)
??0CMetaInterface@@IAE@PAVCComAuthInfo@@@Z
; public: __thiscall CMetaInterface::CMetaInterface(class CMetaInterface &)
??0CMetaInterface@@QAE@AAV0@@Z
; public: __thiscall CMetaKey::CMetaKey(class CMetaKey &)
??0CMetaKey@@QAE@AAV0@@Z
; public: __thiscall CMetaKey::CMetaKey(int,class CMetaKey *)
??0CMetaKey@@QAE@HPAV0@@Z
; public: __thiscall CMetaKey::CMetaKey(class CComAuthInfo *)
??0CMetaKey@@QAE@PAVCComAuthInfo@@@Z
; public: __thiscall CMetaKey::CMetaKey(class CComAuthInfo *,unsigned short const *,unsigned long,unsigned long)
??0CMetaKey@@QAE@PAVCComAuthInfo@@PBGKK@Z
; public: __thiscall CMetaKey::CMetaKey(class CMetaInterface *)
??0CMetaKey@@QAE@PAVCMetaInterface@@@Z
; public: __thiscall CMetaKey::CMetaKey(class CMetaInterface *,unsigned short const *,unsigned long,unsigned long)
??0CMetaKey@@QAE@PAVCMetaInterface@@PBGKK@Z
; public: __thiscall CMetabasePath::CMetabasePath(class CMetabasePath const &)
??0CMetabasePath@@QAE@ABV0@@Z
; public: __thiscall CMetabasePath::CMetabasePath(int,unsigned short const *,unsigned short const *,unsigned short const *,unsigned short const *)
??0CMetabasePath@@QAE@HPBG000@Z
; public: __thiscall CMetabasePath::CMetabasePath(unsigned short const *,unsigned long,unsigned short const *,unsigned short const *)
??0CMetabasePath@@QAE@PBGK00@Z
; protected: __thiscall CODLBox::CODLBox(void)
??0CODLBox@@IAE@XZ
; public: __thiscall CObListIter::CObListIter(class CObListPlus const &)
??0CObListIter@@QAE@ABVCObListPlus@@@Z
; public: __thiscall CObListPlus::CObListPlus(int)
??0CObListPlus@@QAE@H@Z
; protected: __thiscall CObjHelper::CObjHelper(void)
??0CObjHelper@@IAE@XZ
; public: __thiscall CObjHelper::CObjHelper(class CObjHelper const &)
??0CObjHelper@@QAE@ABV0@@Z
; public: __thiscall CObjectPlus::CObjectPlus(void)
??0CObjectPlus@@QAE@XZ
; public: __thiscall CRMCComboBox::CRMCComboBox(void)
??0CRMCComboBox@@QAE@XZ
; public: __thiscall CRMCListBox::CRMCListBox(void)
??0CRMCListBox@@QAE@XZ
; public: __thiscall CRMCListBoxDrawStruct::CRMCListBoxDrawStruct(class CDC *,struct tagRECT *,int,unsigned long,int,class CRMCListBoxResources const *)
??0CRMCListBoxDrawStruct@@QAE@PAVCDC@@PAUtagRECT@@HKHPBVCRMCListBoxResources@@@Z
; public: __thiscall CRMCListBoxHeader::CRMCListBoxHeader(unsigned long)
??0CRMCListBoxHeader@@QAE@K@Z
; public: __thiscall CRMCListBoxResources::CRMCListBoxResources(int,int,unsigned long)
??0CRMCListBoxResources@@QAE@HHK@Z
; public: __thiscall CStrPassword::CStrPassword(class CStrPassword &)
??0CStrPassword@@QAE@AAV0@@Z
; public: __thiscall CStrPassword::CStrPassword(unsigned short *)
??0CStrPassword@@QAE@PAG@Z
; public: __thiscall CStrPassword::CStrPassword(unsigned short const *)
??0CStrPassword@@QAE@PBG@Z
; public: __thiscall CStrPassword::CStrPassword(void)
??0CStrPassword@@QAE@XZ
; public: __thiscall CStringListEx::CStringListEx(int)
??0CStringListEx@@QAE@H@Z
; public: __thiscall CUpButton::CUpButton(void)
??0CUpButton@@QAE@XZ
; protected: __thiscall CWamInterface::CWamInterface(class CWamInterface *)
??0CWamInterface@@IAE@PAV0@@Z
; protected: __thiscall CWamInterface::CWamInterface(class CComAuthInfo *)
??0CWamInterface@@IAE@PAVCComAuthInfo@@@Z
; public: __thiscall CWamInterface::CWamInterface(class CWamInterface &)
??0CWamInterface@@QAE@AAV0@@Z
; public: virtual __thiscall CAccessEntry::~CAccessEntry(void)
??1CAccessEntry@@UAE@XZ
; public: __thiscall CBlob::~CBlob(void)
??1CBlob@@QAE@XZ
; public: __thiscall CComAuthInfo::~CComAuthInfo(void)
??1CComAuthInfo@@QAE@XZ
; public: virtual __thiscall CConfirmDlg::~CConfirmDlg(void)
??1CConfirmDlg@@UAE@XZ
; public: __thiscall CDirBrowseDlg::~CDirBrowseDlg(void)
??1CDirBrowseDlg@@QAE@XZ
; public: virtual __thiscall CDownButton::~CDownButton(void)
??1CDownButton@@UAE@XZ
; public: virtual __thiscall CEmphasizedDialog::~CEmphasizedDialog(void)
??1CEmphasizedDialog@@UAE@XZ
; public: __thiscall CError::~CError(void)
??1CError@@QAE@XZ
; public: __thiscall CGetComputer::~CGetComputer(void)
??1CGetComputer@@QAE@XZ
; public: virtual __thiscall CGetUsers::~CGetUsers(void)
??1CGetUsers@@UAE@XZ
; public: virtual __thiscall CHeaderListBox::~CHeaderListBox(void)
??1CHeaderListBox@@UAE@XZ
; public: virtual __thiscall CIISAppPool::~CIISAppPool(void)
??1CIISAppPool@@UAE@XZ
; public: virtual __thiscall CIISApplication::~CIISApplication(void)
??1CIISApplication@@UAE@XZ
; public: __thiscall CIISInterface::~CIISInterface(void)
??1CIISInterface@@QAE@XZ
; public: virtual __thiscall CIISSvcControl::~CIISSvcControl(void)
??1CIISSvcControl@@UAE@XZ
; public: virtual __thiscall CIISWizardBookEnd::~CIISWizardBookEnd(void)
??1CIISWizardBookEnd@@UAE@XZ
; public: virtual __thiscall CIISWizardPage::~CIISWizardPage(void)
??1CIISWizardPage@@UAE@XZ
; public: virtual __thiscall CIISWizardSheet::~CIISWizardSheet(void)
??1CIISWizardSheet@@UAE@XZ
; public: __thiscall CILong::~CILong(void)
??1CILong@@QAE@XZ
; protected: __thiscall CINumber::~CINumber(void)
??1CINumber@@IAE@XZ
; public: virtual __thiscall CIPAccessDescriptor::~CIPAccessDescriptor(void)
??1CIPAccessDescriptor@@UAE@XZ
; public: virtual __thiscall CIPAddress::~CIPAddress(void)
??1CIPAddress@@UAE@XZ
; public: virtual __thiscall CInheritanceDlg::~CInheritanceDlg(void)
??1CInheritanceDlg@@UAE@XZ
; public: virtual __thiscall CMappedBitmapButton::~CMappedBitmapButton(void)
??1CMappedBitmapButton@@UAE@XZ
; public: virtual __thiscall CMetaBack::~CMetaBack(void)
??1CMetaBack@@UAE@XZ
; public: virtual __thiscall CMetaEnumerator::~CMetaEnumerator(void)
??1CMetaEnumerator@@UAE@XZ
; public: virtual __thiscall CMetaInterface::~CMetaInterface(void)
??1CMetaInterface@@UAE@XZ
; public: virtual __thiscall CMetaKey::~CMetaKey(void)
??1CMetaKey@@UAE@XZ
; public: __thiscall CMetabasePath::~CMetabasePath(void)
??1CMetabasePath@@QAE@XZ
; protected: __thiscall CODLBox::~CODLBox(void)
??1CODLBox@@IAE@XZ
; public: virtual __thiscall CObListIter::~CObListIter(void)
??1CObListIter@@UAE@XZ
; public: virtual __thiscall CObListPlus::~CObListPlus(void)
??1CObListPlus@@UAE@XZ
; public: virtual __thiscall CObjectPlus::~CObjectPlus(void)
??1CObjectPlus@@UAE@XZ
; public: virtual __thiscall CRMCComboBox::~CRMCComboBox(void)
??1CRMCComboBox@@UAE@XZ
; public: virtual __thiscall CRMCListBox::~CRMCListBox(void)
??1CRMCListBox@@UAE@XZ
; public: virtual __thiscall CRMCListBoxHeader::~CRMCListBoxHeader(void)
??1CRMCListBoxHeader@@UAE@XZ
; public: __thiscall CRMCListBoxResources::~CRMCListBoxResources(void)
??1CRMCListBoxResources@@QAE@XZ
; public: __thiscall CStrPassword::~CStrPassword(void)
??1CStrPassword@@QAE@XZ
; public: virtual __thiscall CStringListEx::~CStringListEx(void)
??1CStringListEx@@UAE@XZ
; public: virtual __thiscall CUpButton::~CUpButton(void)
??1CUpButton@@UAE@XZ
; public: virtual __thiscall CWamInterface::~CWamInterface(void)
??1CWamInterface@@UAE@XZ
; public: class CBlob & __thiscall CBlob::operator=(class CBlob const &)
??4CBlob@@QAEAAV0@ABV0@@Z
; public: class CComAuthInfo & __thiscall CComAuthInfo::operator=(class CComAuthInfo &)
??4CComAuthInfo@@QAEAAV0@AAV0@@Z
; public: class CComAuthInfo & __thiscall CComAuthInfo::operator=(class CComAuthInfo *)
??4CComAuthInfo@@QAEAAV0@PAV0@@Z
; public: class CComAuthInfo & __thiscall CComAuthInfo::operator=(unsigned short const *)
??4CComAuthInfo@@QAEAAV0@PBG@Z
; public: class CDirBrowseDlg & __thiscall CDirBrowseDlg::operator=(class CDirBrowseDlg const &)
??4CDirBrowseDlg@@QAEAAV0@ABV0@@Z
; public: class CError const & __thiscall CError::operator=(class CError const &)
??4CError@@QAEABV0@ABV0@@Z
; public: class CError const & __thiscall CError::operator=(long)
??4CError@@QAEABV0@J@Z
; public: class CGetComputer & __thiscall CGetComputer::operator=(class CGetComputer const &)
??4CGetComputer@@QAEAAV0@ABV0@@Z
; public: class CIISAppPool & __thiscall CIISAppPool::operator=(class CIISAppPool &)
??4CIISAppPool@@QAEAAV0@AAV0@@Z
; public: class CIISApplication & __thiscall CIISApplication::operator=(class CIISApplication &)
??4CIISApplication@@QAEAAV0@AAV0@@Z
; public: class CIISInterface & __thiscall CIISInterface::operator=(class CIISInterface &)
??4CIISInterface@@QAEAAV0@AAV0@@Z
; public: class CIISSvcControl & __thiscall CIISSvcControl::operator=(class CIISSvcControl &)
??4CIISSvcControl@@QAEAAV0@AAV0@@Z
; public: class CILong & __thiscall CILong::operator=(class CILong const &)
??4CILong@@QAEAAV0@ABV0@@Z
; public: class CILong & __thiscall CILong::operator=(long)
??4CILong@@QAEAAV0@J@Z
; public: class CILong & __thiscall CILong::operator=(unsigned short const *)
??4CILong@@QAEAAV0@PBG@Z
; public: class CINumber & __thiscall CINumber::operator=(class CINumber const &)
??4CINumber@@QAEAAV0@ABV0@@Z
; public: class CIPAddress const & __thiscall CIPAddress::operator=(class CIPAddress const &)
??4CIPAddress@@QAEABV0@ABV0@@Z
; public: class CIPAddress const & __thiscall CIPAddress::operator=(class CString const &)
??4CIPAddress@@QAEABV0@ABVCString@@@Z
; public: class CIPAddress const & __thiscall CIPAddress::operator=(unsigned long)
??4CIPAddress@@QAEABV0@K@Z
; public: class CIPAddress const & __thiscall CIPAddress::operator=(unsigned short const *)
??4CIPAddress@@QAEABV0@PBG@Z
; public: class CMetaBack & __thiscall CMetaBack::operator=(class CMetaBack &)
??4CMetaBack@@QAEAAV0@AAV0@@Z
; public: class CMetaEnumerator & __thiscall CMetaEnumerator::operator=(class CMetaEnumerator &)
??4CMetaEnumerator@@QAEAAV0@AAV0@@Z
; public: class CMetaInterface & __thiscall CMetaInterface::operator=(class CMetaInterface &)
??4CMetaInterface@@QAEAAV0@AAV0@@Z
; public: class CMetaKey & __thiscall CMetaKey::operator=(class CMetaKey &)
??4CMetaKey@@QAEAAV0@AAV0@@Z
; public: class CMetabasePath & __thiscall CMetabasePath::operator=(class CMetabasePath const &)
??4CMetabasePath@@QAEAAV0@ABV0@@Z
; public: class CObjHelper & __thiscall CObjHelper::operator=(class CObjHelper const &)
??4CObjHelper@@QAEAAV0@ABV0@@Z
; public: class CRMCListBoxDrawStruct & __thiscall CRMCListBoxDrawStruct::operator=(class CRMCListBoxDrawStruct const &)
??4CRMCListBoxDrawStruct@@QAEAAV0@ABV0@@Z
; public: class CStrPassword const & __thiscall CStrPassword::operator=(class CStrPassword &)
??4CStrPassword@@QAEABV0@AAV0@@Z
; public: class CStrPassword const & __thiscall CStrPassword::operator=(unsigned short const *)
??4CStrPassword@@QAEABV0@PBG@Z
; public: class CStringListEx & __thiscall CStringListEx::operator=(class CStringListEx const &)
??4CStringListEx@@QAEAAV0@ABV0@@Z
; public: class CStringListEx & __thiscall CStringListEx::operator=(class CStringList const &)
??4CStringListEx@@QAEAAV0@ABVCStringList@@@Z
; public: class CWamInterface & __thiscall CWamInterface::operator=(class CWamInterface &)
??4CWamInterface@@QAEAAV0@AAV0@@Z
; public: int __thiscall CAccessEntry::operator==(class CAccessEntry const &)const 
??8CAccessEntry@@QBEHABV0@@Z
; public: int __thiscall CAccessEntry::operator==(void * const)const 
??8CAccessEntry@@QBEHQAX@Z
; public: int __thiscall CBlob::operator==(class CBlob const &)const 
??8CBlob@@QBEHABV0@@Z
; public: int const  __thiscall CError::operator==(class CError &)
??8CError@@QAE?BHAAV0@@Z
; public: int const  __thiscall CError::operator==(long)
??8CError@@QAE?BHJ@Z
; public: int __thiscall CILong::operator==(long)
??8CILong@@QAEHJ@Z
; public: int __thiscall CIPAccessDescriptor::operator==(class CIPAccessDescriptor const &)const 
??8CIPAccessDescriptor@@QBEHABV0@@Z
; public: int __thiscall CIPAddress::operator==(class CIPAddress const &)const 
??8CIPAddress@@QBEHABV0@@Z
; public: int __thiscall CIPAddress::operator==(unsigned long)const 
??8CIPAddress@@QBEHK@Z
; public: bool __thiscall CStrPassword::operator==(class CStrPassword &)
??8CStrPassword@@QAE_NAAV0@@Z
; public: int __thiscall CStringListEx::operator==(class CStringList const &)
??8CStringListEx@@QAEHABVCStringList@@@Z
; public: int __thiscall CBlob::operator!=(class CBlob const &)const 
??9CBlob@@QBEHABV0@@Z
; public: int const  __thiscall CError::operator!=(class CError &)
??9CError@@QAE?BHAAV0@@Z
; public: int const  __thiscall CError::operator!=(long)
??9CError@@QAE?BHJ@Z
; public: int __thiscall CILong::operator!=(class CILong &)
??9CILong@@QAEHAAV0@@Z
; public: int __thiscall CIPAddress::operator!=(class CIPAddress const &)const 
??9CIPAddress@@QBEHABV0@@Z
; public: int __thiscall CIPAddress::operator!=(unsigned long)const 
??9CIPAddress@@QBEHK@Z
; public: bool __thiscall CStrPassword::operator!=(class CStrPassword &)
??9CStrPassword@@QAE_NAAV0@@Z
; public: int __thiscall CStringListEx::operator!=(class CStringList const &)
??9CStringListEx@@QAEHABVCStringList@@@Z
; public: __thiscall CComAuthInfo::operator unsigned short *(void)
??BCComAuthInfo@@QAEPAGXZ
; public: __thiscall CComAuthInfo::operator class CComAuthInfo *(void)
??BCComAuthInfo@@QAEPAV0@XZ
; public: __thiscall CError::operator unsigned short *(void)
??BCError@@QAEPAGXZ
; public: __thiscall CError::operator unsigned short const *(void)
??BCError@@QAEPBGXZ
; public: __thiscall CError::operator int const (void)const 
??BCError@@QBE?BHXZ
; public: __thiscall CError::operator long const (void)const 
??BCError@@QBE?BJXZ
; public: __thiscall CError::operator unsigned long const (void)const 
??BCError@@QBE?BKXZ
; public: __thiscall CIISInterface::operator int(void)const 
??BCIISInterface@@QBEHXZ
; public: __thiscall CIISInterface::operator long(void)const 
??BCIISInterface@@QBEJXZ
; public: __thiscall CILong::operator long const (void)const 
??BCILong@@QBE?BJXZ
; public: __thiscall CILong::operator unsigned short const *(void)const 
??BCILong@@QBEPBGXZ
; public: __thiscall CIPAddress::operator class CString(void)const 
??BCIPAddress@@QBE?AVCString@@XZ
; public: __thiscall CIPAddress::operator unsigned long const (void)const 
??BCIPAddress@@QBE?BKXZ
; public: __thiscall CIPAddress::operator unsigned short const *(void)const 
??BCIPAddress@@QBEPBGXZ
; public: __thiscall CMetaKey::operator int(void)const 
??BCMetaKey@@QBEHXZ
; public: __thiscall CMetaKey::operator unsigned long(void)const 
??BCMetaKey@@QBEKXZ
; public: __thiscall CMetaKey::operator unsigned short const *(void)const 
??BCMetaKey@@QBEPBGXZ
; public: __thiscall CMetabasePath::operator unsigned short const *(void)const 
??BCMetabasePath@@QBEPBGXZ
; public: __thiscall CObjHelper::operator int(void)
??BCObjHelper@@QAEHXZ
; public: __thiscall CStrPassword::operator class CString(void)
??BCStrPassword@@QAE?AVCString@@XZ
; public: class CILong & __thiscall CILong::operator*=(class CILong const &)
??XCILong@@QAEAAV0@ABV0@@Z
; public: class CILong & __thiscall CILong::operator*=(long)
??XCILong@@QAEAAV0@J@Z
; public: class CILong & __thiscall CILong::operator*=(unsigned short const * const)
??XCILong@@QAEAAV0@QBG@Z
; public: class CILong & __thiscall CILong::operator+=(class CILong const &)
??YCILong@@QAEAAV0@ABV0@@Z
; public: class CILong & __thiscall CILong::operator+=(long)
??YCILong@@QAEAAV0@J@Z
; public: class CILong & __thiscall CILong::operator+=(unsigned short const * const)
??YCILong@@QAEAAV0@QBG@Z
; public: class CILong & __thiscall CILong::operator-=(class CILong const &)
??ZCILong@@QAEAAV0@ABV0@@Z
; public: class CILong & __thiscall CILong::operator-=(long)
??ZCILong@@QAEAAV0@J@Z
; public: class CILong & __thiscall CILong::operator-=(unsigned short const * const)
??ZCILong@@QAEAAV0@QBG@Z
; public: class CILong & __thiscall CILong::operator/=(class CILong const &)
??_0CILong@@QAEAAV0@ABV0@@Z
; public: class CILong & __thiscall CILong::operator/=(long)
??_0CILong@@QAEAAV0@J@Z
; public: class CILong & __thiscall CILong::operator/=(unsigned short const * const)
??_0CILong@@QAEAAV0@QBG@Z
; const  CAccessEntry::`vftable'{for `CObjHelper'}
??_7CAccessEntry@@6BCObjHelper@@@
; const  CAccessEntry::`vftable'{for `CObject'}
??_7CAccessEntry@@6BCObject@@@
; const  CConfirmDlg::`vftable'
??_7CConfirmDlg@@6B@
; const  CDirBrowseDlg::`vftable'
??_7CDirBrowseDlg@@6B@
; const  CDownButton::`vftable'
??_7CDownButton@@6B@
; const  CEmphasizedDialog::`vftable'
??_7CEmphasizedDialog@@6B@
; const  CGetUsers::`vftable'
??_7CGetUsers@@6B@
; const  CHeaderListBox::`vftable'{for `CListBox'}
??_7CHeaderListBox@@6BCListBox@@@
; const  CHeaderListBox::`vftable'{for `CODLBox'}
??_7CHeaderListBox@@6BCODLBox@@@
; const  CIISAppPool::`vftable'{for `CMetaKey'}
??_7CIISAppPool@@6BCMetaKey@@@
; const  CIISAppPool::`vftable'{for `CWamInterface'}
??_7CIISAppPool@@6BCWamInterface@@@
; const  CIISApplication::`vftable'{for `CMetaKey'}
??_7CIISApplication@@6BCMetaKey@@@
; const  CIISApplication::`vftable'{for `CWamInterface'}
??_7CIISApplication@@6BCWamInterface@@@
; const  CIISInterface::`vftable'
??_7CIISInterface@@6B@
; const  CIISSvcControl::`vftable'
??_7CIISSvcControl@@6B@
; const  CIISWizardBookEnd::`vftable'
??_7CIISWizardBookEnd@@6B@
; const  CIISWizardPage::`vftable'
??_7CIISWizardPage@@6B@
; const  CIISWizardSheet::`vftable'
??_7CIISWizardSheet@@6B@
; const  CIPAccessDescriptor::`vftable'{for `CObjHelper'}
??_7CIPAccessDescriptor@@6BCObjHelper@@@
; const  CIPAccessDescriptor::`vftable'{for `CObject'}
??_7CIPAccessDescriptor@@6BCObject@@@
; const  CIPAddress::`vftable'{for `CObjHelper'}
??_7CIPAddress@@6BCObjHelper@@@
; const  CIPAddress::`vftable'{for `CObject'}
??_7CIPAddress@@6BCObject@@@
; const  CInheritanceDlg::`vftable'
??_7CInheritanceDlg@@6B@
; const  CMappedBitmapButton::`vftable'
??_7CMappedBitmapButton@@6B@
; const  CMetaBack::`vftable'{for `CMetaInterface'}
??_7CMetaBack@@6BCMetaInterface@@@
; const  CMetaBack::`vftable'{for `CWamInterface'}
??_7CMetaBack@@6BCWamInterface@@@
; const  CMetaEnumerator::`vftable'
??_7CMetaEnumerator@@6B@
; const  CMetaInterface::`vftable'
??_7CMetaInterface@@6B@
; const  CMetaKey::`vftable'
??_7CMetaKey@@6B@
; const  CODLBox::`vftable'
??_7CODLBox@@6B@
; const  CObListIter::`vftable'{for `CObjHelper'}
??_7CObListIter@@6BCObjHelper@@@
; const  CObListIter::`vftable'{for `CObject'}
??_7CObListIter@@6BCObject@@@
; const  CObListPlus::`vftable'{for `CObList'}
??_7CObListPlus@@6BCObList@@@
; const  CObListPlus::`vftable'{for `CObjHelper'}
??_7CObListPlus@@6BCObjHelper@@@
; const  CObjHelper::`vftable'
??_7CObjHelper@@6B@
; const  CObjectPlus::`vftable'{for `CObjHelper'}
??_7CObjectPlus@@6BCObjHelper@@@
; const  CObjectPlus::`vftable'{for `CObject'}
??_7CObjectPlus@@6BCObject@@@
; const  CRMCComboBox::`vftable'{for `CComboBox'}
??_7CRMCComboBox@@6BCComboBox@@@
; const  CRMCComboBox::`vftable'{for `CODLBox'}
??_7CRMCComboBox@@6BCODLBox@@@
; const  CRMCListBox::`vftable'{for `CListBox'}
??_7CRMCListBox@@6BCListBox@@@
; const  CRMCListBox::`vftable'{for `CODLBox'}
??_7CRMCListBox@@6BCODLBox@@@
; const  CRMCListBoxHeader::`vftable'
??_7CRMCListBoxHeader@@6B@
; const  CStringListEx::`vftable'
??_7CStringListEx@@6B@
; const  CUpButton::`vftable'
??_7CUpButton@@6B@
; const  CWamInterface::`vftable'
??_7CWamInterface@@6B@
; public: void __thiscall CComAuthInfo::`default constructor closure'(void)
??_FCComAuthInfo@@QAEXXZ
; public: void __thiscall CConfirmDlg::`default constructor closure'(void)
??_FCConfirmDlg@@QAEXXZ
; public: void __thiscall CDirBrowseDlg::`default constructor closure'(void)
??_FCDirBrowseDlg@@QAEXXZ
; public: void __thiscall CHeaderListBox::`default constructor closure'(void)
??_FCHeaderListBox@@QAEXXZ
; public: void __thiscall CIISWizardBookEnd::`default constructor closure'(void)
??_FCIISWizardBookEnd@@QAEXXZ
; public: void __thiscall CIISWizardPage::`default constructor closure'(void)
??_FCIISWizardPage@@QAEXXZ
; public: void __thiscall CIISWizardSheet::`default constructor closure'(void)
??_FCIISWizardSheet@@QAEXXZ
; public: void __thiscall CIPAccessDescriptor::`default constructor closure'(void)
??_FCIPAccessDescriptor@@QAEXXZ
; public: void __thiscall CMetabasePath::`default constructor closure'(void)
??_FCMetabasePath@@QAEXXZ
; public: void __thiscall CObListPlus::`default constructor closure'(void)
??_FCObListPlus@@QAEXXZ
; public: void __thiscall CRMCListBoxHeader::`default constructor closure'(void)
??_FCRMCListBoxHeader@@QAEXXZ
; public: void __thiscall CStringListEx::`default constructor closure'(void)
??_FCStringListEx@@QAEXXZ
; void __stdcall ActivateControl(class CWnd &,int)
?ActivateControl@@YGXAAVCWnd@@H@Z
; protected: long __thiscall CMetaInterface::AddKey(unsigned long,unsigned short const *)
?AddKey@CMetaInterface@@IAEJKPBG@Z
; public: long __thiscall CMetaKey::AddKey(unsigned short const *)
?AddKey@CMetaKey@@QAEJPBG@Z
; public: unsigned int __thiscall CError::AddOverride(long,unsigned int)
?AddOverride@CError@@QAEIJI@Z
; public: void __thiscall CAccessEntry::AddPermissions(unsigned long)
?AddPermissions@CAccessEntry@@QAEXK@Z
; public: int __thiscall CODLBox::AddTab(unsigned int)
?AddTab@CODLBox@@QAEHI@Z
; public: int __thiscall CODLBox::AddTabFromHeaders(class CWnd &,class CWnd &)
?AddTabFromHeaders@CODLBox@@QAEHAAVCWnd@@0@Z
; public: int __thiscall CODLBox::AddTabFromHeaders(unsigned int,unsigned int)
?AddTabFromHeaders@CODLBox@@QAEHII@Z
; char * __stdcall AllocAnsiString(unsigned short const *)
?AllocAnsiString@@YGPADPBG@Z
; unsigned short * __stdcall AllocString(unsigned short const *,int)
?AllocString@@YGPAGPBGH@Z
; protected: static int __stdcall CINumber::Allocate(void)
?Allocate@CINumber@@KGHXZ
; protected: static int __stdcall CError::AllocateStatics(void)
?AllocateStatics@CError@@KGHXZ
; protected: long __thiscall CWamInterface::AppCreate(unsigned short const *,unsigned long)
?AppCreate@CWamInterface@@IAEJPBGK@Z
; protected: long __thiscall CWamInterface::AppDelete(unsigned short const *,int)
?AppDelete@CWamInterface@@IAEJPBGH@Z
; protected: long __thiscall CWamInterface::AppDeleteRecoverable(unsigned short const *,int)
?AppDeleteRecoverable@CWamInterface@@IAEJPBGH@Z
; protected: long __thiscall CWamInterface::AppGetStatus(unsigned short const *,unsigned long *)
?AppGetStatus@CWamInterface@@IAEJPBGPAK@Z
; protected: long __thiscall CWamInterface::AppRecover(unsigned short const *,int)
?AppRecover@CWamInterface@@IAEJPBGH@Z
; protected: long __thiscall CWamInterface::AppUnLoad(unsigned short const *,int)
?AppUnLoad@CWamInterface@@IAEJPBGH@Z
; protected: void __thiscall CMetabasePath::AppendPath(unsigned long)
?AppendPath@CMetabasePath@@IAEXK@Z
; protected: void __thiscall CMetabasePath::AppendPath(unsigned short const *)
?AppendPath@CMetabasePath@@IAEXPBG@Z
; class CString  __stdcall AppendToDevicePath(class CString,unsigned short const *)
?AppendToDevicePath@@YG?AVCString@@V1@PBG@Z
; void __stdcall ApplyFontToControls(class CWnd *,class CFont *,unsigned int,unsigned int)
?ApplyFontToControls@@YGXPAVCWnd@@PAVCFont@@II@Z
; public: long __thiscall CComAuthInfo::ApplyProxyBlanket(struct IUnknown *)
?ApplyProxyBlanket@CComAuthInfo@@QAEJPAUIUnknown@@@Z
; public: long __thiscall CComAuthInfo::ApplyProxyBlanket(struct IUnknown *,unsigned long)
?ApplyProxyBlanket@CComAuthInfo@@QAEJPAUIUnknown@@K@Z
; protected: virtual long __thiscall CIISSvcControl::ApplyProxyBlanket(void)
?ApplyProxyBlanket@CIISSvcControl@@MAEJXZ
; protected: virtual long __thiscall CMetaBack::ApplyProxyBlanket(void)
?ApplyProxyBlanket@CMetaBack@@MAEJXZ
; protected: virtual long __thiscall CMetaInterface::ApplyProxyBlanket(void)
?ApplyProxyBlanket@CMetaInterface@@MAEJXZ
; protected: virtual long __thiscall CWamInterface::ApplyProxyBlanket(void)
?ApplyProxyBlanket@CWamInterface@@MAEJXZ
; protected: static int __stdcall CError::AreStaticsAllocated(void)
?AreStaticsAllocated@CError@@KGHXZ
; public: void __thiscall CODLBox::AttachResources(class CRMCListBoxResources const *)
?AttachResources@CODLBox@@QAEXPBVCRMCListBoxResources@@@Z
; protected: void __thiscall CODLBox::AttachWindow(class CWnd *)
?AttachWindow@CODLBox@@IAEXPAVCWnd@@@Z
; public: long __thiscall CMetaBack::Backup(unsigned short const *)
?Backup@CMetaBack@@QAEJPBG@Z
; protected: long __thiscall CMetaInterface::Backup(unsigned short const *,unsigned long,unsigned long)
?Backup@CMetaInterface@@IAEJPBGKK@Z
; public: long __thiscall CMetaBack::BackupWithPassword(unsigned short const *,unsigned short const *)
?BackupWithPassword@CMetaBack@@QAEJPBG0@Z
; protected: long __thiscall CMetaInterface::BackupWithPassword(unsigned short const *,unsigned long,unsigned long,unsigned short const *)
?BackupWithPassword@CMetaInterface@@IAEJPBGKK0@Z
; public: int __thiscall CRMCListBoxResources::BitmapHeight(void)const 
?BitmapHeight@CRMCListBoxResources@@QBEHXZ
; public: int __thiscall CRMCListBoxResources::BitmapWidth(void)const 
?BitmapWidth@CRMCListBoxResources@@QBEHXZ
; int __stdcall BuildAclBlob(class CObListPlus &,class CBlob &)
?BuildAclBlob@@YGHAAVCObListPlus@@AAVCBlob@@@Z
; unsigned long __stdcall BuildAclOblistFromBlob(class CBlob &,class CObListPlus &)
?BuildAclOblistFromBlob@@YGKAAVCBlob@@AAVCObListPlus@@@Z
; public: static double __stdcall CINumber::BuildFloat(long,long)
?BuildFloat@CINumber@@SGNJJ@Z
; void __stdcall BuildIplBlob(class CObListPlus &,int,class CBlob &)
?BuildIplBlob@@YGXAAVCObListPlus@@HAAVCBlob@@@Z
; unsigned long __stdcall BuildIplOblistFromBlob(class CBlob &,class CObListPlus &,int &)
?BuildIplOblistFromBlob@@YGKAAVCBlob@@AAVCObListPlus@@AAH@Z
; protected: void __thiscall CMetabasePath::BuildMetaPath(unsigned short const *,unsigned short const *,unsigned short const *,unsigned short const *)
?BuildMetaPath@CMetabasePath@@IAEXPBG000@Z
; protected: void __thiscall CMetabasePath::BuildMetaPath(unsigned short const *,unsigned long,unsigned short const *,unsigned short const *)
?BuildMetaPath@CMetabasePath@@IAEXPBGK00@Z
; int __stdcall CStringFindNoCase(class CString const &,unsigned short const *)
?CStringFindNoCase@@YGHABVCString@@PBG@Z
; protected: void __thiscall CODLBox::CalculateTextHeight(class CFont *)
?CalculateTextHeight@CODLBox@@IAEXPAVCFont@@@Z
; public: int __thiscall CODLBox::ChangeFont(class CFont *)
?ChangeFont@CODLBox@@QAEHPAVCFont@@@Z
; public: virtual long __thiscall CIISInterface::ChangeProxyBlanket(unsigned short const *,unsigned short const *)
?ChangeProxyBlanket@CIISInterface@@UAEJPBG0@Z
; public: long __thiscall CMetaKey::CheckDescendants(unsigned long,class CComAuthInfo *,unsigned short const *)
?CheckDescendants@CMetaKey@@QAEJKPAVCComAuthInfo@@PBG@Z
; protected: class CString & __thiscall CInheritanceDlg::CleanDescendantPath(class CString &)
?CleanDescendantPath@CInheritanceDlg@@IAEAAVCString@@AAV2@@Z
; public: static unsigned short const * __stdcall CMetabasePath::CleanMetaPath(class CString &)
?CleanMetaPath@CMetabasePath@@SGPBGAAVCString@@@Z
; public: void __thiscall CBlob::CleanUp(void)
?CleanUp@CBlob@@QAEXXZ
; private: void __thiscall CStrPassword::ClearPasswordBuffers(void)
?ClearPasswordBuffers@CStrPassword@@AAEXXZ
; public: long __thiscall CMetaKey::Close(void)
?Close@CMetaKey@@QAEJXZ
; protected: long __thiscall CMetaInterface::CloseKey(unsigned long)
?CloseKey@CMetaInterface@@IAEJK@Z
; public: unsigned long __thiscall CRMCListBoxResources::ColorHighlight(void)const 
?ColorHighlight@CRMCListBoxResources@@QBEKXZ
; public: unsigned long __thiscall CRMCListBoxResources::ColorHighlightText(void)const 
?ColorHighlightText@CRMCListBoxResources@@QBEKXZ
; public: unsigned long __thiscall CRMCListBoxResources::ColorWindow(void)const 
?ColorWindow@CRMCListBoxResources@@QBEKXZ
; public: unsigned long __thiscall CRMCListBoxResources::ColorWindowText(void)const 
?ColorWindowText@CRMCListBoxResources@@QBEKXZ
; protected: int __thiscall CODLBox::ColumnText(class CRMCListBoxDrawStruct &,int,int,unsigned short const *)
?ColumnText@CODLBox@@IAEHAAVCRMCListBoxDrawStruct@@HHPBG@Z
; protected: static int __stdcall CODLBox::ColumnText(class CDC *,int,int,int,int,unsigned short const *)
?ColumnText@CODLBox@@KGHPAVCDC@@HHHHPBG@Z
; protected: void __thiscall CIISApplication::CommonConstruct(void)
?CommonConstruct@CIISApplication@@IAEXXZ
; public: virtual int __thiscall CObjectPlus::Compare(class CObjectPlus const *)const 
?Compare@CObjectPlus@@UBEHPBV1@@Z
; public: int __thiscall CStrPassword::Compare(class CStrPassword &)const 
?Compare@CStrPassword@@QBEHAAV1@@Z
; public: int __thiscall CStrPassword::Compare(class CString &)const 
?Compare@CStrPassword@@QBEHAAVCString@@@Z
; public: int __thiscall CStrPassword::Compare(unsigned short const *)const 
?Compare@CStrPassword@@QBEHPBG@Z
; public: int __thiscall CIPAddress::CompareItem(class CIPAddress const &)const 
?CompareItem@CIPAddress@@QBEHABV1@@Z
; protected: void __thiscall CODLBox::ComputeMargins(class CRMCListBoxDrawStruct &,int,int &,int &)
?ComputeMargins@CODLBox@@IAEXAAVCRMCListBoxDrawStruct@@HAAH1@Z
; protected: class CError const & __thiscall CError::Construct(class CError const &)
?Construct@CError@@IAEABV1@ABV1@@Z
; protected: class CError const & __thiscall CError::Construct(long)
?Construct@CError@@IAEABV1@J@Z
; unsigned long __stdcall ConvertDoubleNullListToStringList(unsigned short const *,class CStringList &,int)
?ConvertDoubleNullListToStringList@@YGKPBGAAVCStringList@@H@Z
; public: static unsigned short const * __stdcall CINumber::ConvertFloatToString(double,int,class CString &)
?ConvertFloatToString@CINumber@@SGPBGNHAAVCString@@@Z
; public: static unsigned short const * __stdcall CINumber::ConvertLongToString(long,class CString &)
?ConvertLongToString@CINumber@@SGPBGJAAVCString@@@Z
; int __stdcall ConvertSepLineToStringList(unsigned short const *,class CStringList &,unsigned short const *)
?ConvertSepLineToStringList@@YGHPBGAAVCStringList@@0@Z
; unsigned long __stdcall ConvertStringListToDoubleNullList(class CStringList &,unsigned long &,unsigned short * &)
?ConvertStringListToDoubleNullList@@YGKAAVCStringList@@AAKAAPAG@Z
; unsigned short const * __stdcall ConvertStringListToSepLine(class CStringList &,class CString &,unsigned short const *)
?ConvertStringListToSepLine@@YGPBGAAVCStringList@@AAVCString@@PBG@Z
; public: static int __stdcall CINumber::ConvertStringToFloat(unsigned short const *,double &)
?ConvertStringToFloat@CINumber@@SGHPBGAAN@Z
; public: static int __stdcall CINumber::ConvertStringToLong(unsigned short const *,long &)
?ConvertStringToLong@CINumber@@SGHPBGAAJ@Z
; public: long __thiscall CMetaKey::ConvertToParentPath(int)
?ConvertToParentPath@CMetaKey@@QAEJH@Z
; public: static unsigned short const * __stdcall CMetabasePath::ConvertToParentPath(class CString &)
?ConvertToParentPath@CMetabasePath@@SGPBGAAVCString@@@Z
; protected: long __thiscall CMetaInterface::CopyData(unsigned long,unsigned short const *,unsigned long,unsigned short const *,unsigned long,unsigned long,unsigned long,int)
?CopyData@CMetaInterface@@IAEJKPBGK0KKKH@Z
; protected: long __thiscall CMetaInterface::CopyKey(unsigned long,unsigned short const *,unsigned long,unsigned short const *,int,int)
?CopyKey@CMetaInterface@@IAEJKPBGK0HH@Z
; public: void __thiscall CStrPassword::CopyTo(class CStrPassword &)
?CopyTo@CStrPassword@@QAEXAAV1@@Z
; public: void __thiscall CStrPassword::CopyTo(class CString &)
?CopyTo@CStrPassword@@QAEXAAVCString@@@Z
; public: long __thiscall CIISAppPool::Create(unsigned short const *)
?Create@CIISAppPool@@QAEJPBG@Z
; public: long __thiscall CIISApplication::Create(unsigned short const *,unsigned long)
?Create@CIISApplication@@QAEJPBGK@Z
; protected: long __thiscall CIISInterface::Create(int,struct _GUID const * const,struct _GUID const * const,int *,struct IUnknown * *)
?Create@CIISInterface@@IAEJHQBU_GUID@@0PAHPAPAUIUnknown@@@Z
; protected: long __thiscall CIISSvcControl::Create(void)
?Create@CIISSvcControl@@IAEJXZ
; protected: long __thiscall CMetaInterface::Create(void)
?Create@CMetaInterface@@IAEJXZ
; public: int __thiscall CRMCListBoxHeader::Create(unsigned long,struct tagRECT const &,class CWnd *,class CHeaderListBox *,unsigned int)
?Create@CRMCListBoxHeader@@QAEHKABUtagRECT@@PAVCWnd@@PAVCHeaderListBox@@I@Z
; protected: long __thiscall CWamInterface::Create(void)
?Create@CWamInterface@@IAEJXZ
; protected: long __thiscall CWamInterface::CreateApplication(unsigned short const *,unsigned long,unsigned short const *,int)
?CreateApplication@CWamInterface@@IAEJPBGK0H@Z
; protected: long __thiscall CWamInterface::CreateApplicationPool(unsigned short const *)
?CreateApplicationPool@CWamInterface@@IAEJPBG@Z
; public: static class CObject * __stdcall CEmphasizedDialog::CreateObject(void)
?CreateObject@CEmphasizedDialog@@SGPAVCObject@@XZ
; public: static class CObject * __stdcall CIISWizardBookEnd::CreateObject(void)
?CreateObject@CIISWizardBookEnd@@SGPAVCObject@@XZ
; public: static class CObject * __stdcall CIISWizardPage::CreateObject(void)
?CreateObject@CIISWizardPage@@SGPAVCObject@@XZ
; public: static class CObject * __stdcall CIISWizardSheet::CreateObject(void)
?CreateObject@CIISWizardSheet@@SGPAVCObject@@XZ
; public: long __thiscall CMetaKey::CreatePathFromFailedOpen(void)
?CreatePathFromFailedOpen@CMetaKey@@QAEJXZ
; public: long __thiscall CIISApplication::CreatePooled(unsigned short const *,unsigned long,unsigned short const *,int)
?CreatePooled@CIISApplication@@QAEJPBGK0H@Z
; public: struct _COSERVERINFO * __thiscall CComAuthInfo::CreateServerInfoStruct(unsigned long)const 
?CreateServerInfoStruct@CComAuthInfo@@QBEPAU_COSERVERINFO@@K@Z
; public: struct _COSERVERINFO * __thiscall CComAuthInfo::CreateServerInfoStruct(void)const 
?CreateServerInfoStruct@CComAuthInfo@@QBEPAU_COSERVERINFO@@XZ
; public: long __thiscall CMetaInterface::CreateSite(unsigned short const *,unsigned short const *,unsigned short const *,unsigned short const *,unsigned long *,unsigned long *)
?CreateSite@CMetaInterface@@QAEJPBG000PAK1@Z
; int __stdcall CreateSpecialDialogFont(class CWnd *,class CFont *,long,long,long,int,int)
?CreateSpecialDialogFont@@YGHPAVCWnd@@PAVCFont@@JJJHH@Z
; int __stdcall CvtGMTStringToInternal(unsigned short const *,long *)
?CvtGMTStringToInternal@@YGHPBGPAJ@Z
; void __stdcall CvtInternalToGMTString(long,class CString &)
?CvtInternalToGMTString@@YGXJAAVCString@@@Z
; int __stdcall CvtStringToLong(unsigned short const *,unsigned long *)
?CvtStringToLong@@YGHPBGPAK@Z
; protected: static long __stdcall CError::CvtToInternalFormat(long)
?CvtToInternalFormat@CError@@KGJJ@Z
; void __stdcall DDV_FilePath(class CDataExchange *,class CString &,int)
?DDV_FilePath@@YGXPAVCDataExchange@@AAVCString@@H@Z
; void __stdcall DDV_FolderPath(class CDataExchange *,class CString &,int)
?DDV_FolderPath@@YGXPAVCDataExchange@@AAVCString@@H@Z
; void __stdcall DDV_MaxCharsBalloon(class CDataExchange *,class CString const &,int)
?DDV_MaxCharsBalloon@@YGXPAVCDataExchange@@ABVCString@@H@Z
; void __stdcall DDV_MaxCharsBalloon_SecuredString(class CDataExchange *,class CStrPassword const &,int)
?DDV_MaxCharsBalloon_SecuredString@@YGXPAVCDataExchange@@ABVCStrPassword@@H@Z
; void __stdcall DDV_MaxChars_SecuredString(class CDataExchange *,class CStrPassword const &,int)
?DDV_MaxChars_SecuredString@@YGXPAVCDataExchange@@ABVCStrPassword@@H@Z
; void __stdcall DDV_MinChars(class CDataExchange *,class CString const &,int)
?DDV_MinChars@@YGXPAVCDataExchange@@ABVCString@@H@Z
; void __stdcall DDV_MinChars_SecuredString(class CDataExchange *,class CStrPassword const &,int)
?DDV_MinChars_SecuredString@@YGXPAVCDataExchange@@ABVCStrPassword@@H@Z
; void __stdcall DDV_MinMaxBalloon(class CDataExchange *,int,unsigned long,unsigned long)
?DDV_MinMaxBalloon@@YGXPAVCDataExchange@@HKK@Z
; void __stdcall DDV_MinMaxChars(class CDataExchange *,class CString const &,int,int)
?DDV_MinMaxChars@@YGXPAVCDataExchange@@ABVCString@@HH@Z
; void __stdcall DDV_MinMaxChars_SecuredString(class CDataExchange *,class CStrPassword const &,int,int)
?DDV_MinMaxChars_SecuredString@@YGXPAVCDataExchange@@ABVCStrPassword@@HH@Z
; void __stdcall DDV_MinMaxSpin(class CDataExchange *,struct HWND__ *,int,int)
?DDV_MinMaxSpin@@YGXPAVCDataExchange@@PAUHWND__@@HH@Z
; void __stdcall DDV_ShowBalloonAndFail(class CDataExchange *,unsigned int)
?DDV_ShowBalloonAndFail@@YGXPAVCDataExchange@@I@Z
; void __stdcall DDV_ShowBalloonAndFail(class CDataExchange *,class CString)
?DDV_ShowBalloonAndFail@@YGXPAVCDataExchange@@VCString@@@Z
; void __stdcall DDV_UNCFolderPath(class CDataExchange *,class CString &,int)
?DDV_UNCFolderPath@@YGXPAVCDataExchange@@AAVCString@@H@Z
; void __stdcall DDV_Url(class CDataExchange *,class CString &)
?DDV_Url@@YGXPAVCDataExchange@@AAVCString@@@Z
; void __stdcall DDX_Password(class CDataExchange *,int,class CString &,unsigned short const *)
?DDX_Password@@YGXPAVCDataExchange@@HAAVCString@@PBG@Z
; void __stdcall DDX_Password_SecuredString(class CDataExchange *,int,class CStrPassword &,unsigned short const *)
?DDX_Password_SecuredString@@YGXPAVCDataExchange@@HAAVCStrPassword@@PBG@Z
; void __stdcall DDX_Spin(class CDataExchange *,int,int &)
?DDX_Spin@@YGXPAVCDataExchange@@HAAH@Z
; void __stdcall DDX_Text(class CDataExchange *,int,class CILong &)
?DDX_Text@@YGXPAVCDataExchange@@HAAVCILong@@@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,unsigned char &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAAE@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,short &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAAF@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,int &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAAH@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,unsigned int &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAAI@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,long &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAAJ@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,unsigned long &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAAK@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,__int64 &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAA_J@Z
; void __stdcall DDX_TextBalloon(class CDataExchange *,int,unsigned __int64 &)
?DDX_TextBalloon@@YGXPAVCDataExchange@@HAA_K@Z
; void __stdcall DDX_Text_SecuredString(class CDataExchange *,int,class CStrPassword &)
?DDX_Text_SecuredString@@YGXPAVCDataExchange@@HAAVCStrPassword@@@Z
; public: static unsigned char * __stdcall CIPAddress::DWORDtoLPBYTE(unsigned long,unsigned char *)
?DWORDtoLPBYTE@CIPAddress@@SGPAEKPAE@Z
; protected: static void __stdcall CINumber::DeAllocate(void)
?DeAllocate@CINumber@@KGXXZ
; protected: static void __stdcall CError::DeAllocateStatics(void)
?DeAllocateStatics@CError@@KGXXZ
; unsigned long __stdcall DeflateEnvironmentVariablePath(unsigned short const *,class CString &)
?DeflateEnvironmentVariablePath@@YGKPBGAAVCString@@@Z
; public: long __thiscall CIISAppPool::Delete(unsigned short const *)
?Delete@CIISAppPool@@QAEJPBG@Z
; public: long __thiscall CIISApplication::Delete(int)
?Delete@CIISApplication@@QAEJH@Z
; public: long __thiscall CMetaBack::Delete(unsigned short const *,unsigned long)
?Delete@CMetaBack@@QAEJPBGK@Z
; protected: long __thiscall CMetaInterface::DeleteAllData(unsigned long,unsigned short const *,unsigned long,unsigned long)
?DeleteAllData@CMetaInterface@@IAEJKPBGKK@Z
; protected: long __thiscall CWamInterface::DeleteApplication(unsigned short const *,int)
?DeleteApplication@CWamInterface@@IAEJPBGH@Z
; protected: long __thiscall CWamInterface::DeleteApplicationPool(unsigned short const *)
?DeleteApplicationPool@CWamInterface@@IAEJPBG@Z
; protected: long __thiscall CMetaInterface::DeleteBackup(unsigned short const *,unsigned long)
?DeleteBackup@CMetaInterface@@IAEJPBGK@Z
; protected: long __thiscall CMetaInterface::DeleteChildKeys(unsigned long,unsigned short const *)
?DeleteChildKeys@CMetaInterface@@IAEJKPBG@Z
; protected: long __thiscall CMetaInterface::DeleteData(unsigned long,unsigned short const *,unsigned long,unsigned long)
?DeleteData@CMetaInterface@@IAEJKPBGKK@Z
; protected: int __thiscall CHeaderListBox::DeleteHeaderItem(int)
?DeleteHeaderItem@CHeaderListBox@@IAEHH@Z
; public: int __thiscall CRMCListBoxHeader::DeleteItem(int)
?DeleteItem@CRMCListBoxHeader@@QAEHH@Z
; protected: long __thiscall CMetaInterface::DeleteKey(unsigned long,unsigned short const *)
?DeleteKey@CMetaInterface@@IAEJKPBG@Z
; public: long __thiscall CMetaKey::DeleteKey(unsigned short const *)
?DeleteKey@CMetaKey@@QAEJPBG@Z
; public: long __thiscall CIISApplication::DeleteRecoverable(int)
?DeleteRecoverable@CIISApplication@@QAEJH@Z
; public: long __thiscall CMetaKey::DeleteValue(unsigned long,unsigned short const *)
?DeleteValue@CMetaKey@@QAEJKPBG@Z
; public: void __thiscall CStrPassword::DestroyClearTextPassword(unsigned short *)const 
?DestroyClearTextPassword@CStrPassword@@QBEXPAG@Z
; protected: void __thiscall CHeaderListBox::DistributeColumns(void)
?DistributeColumns@CHeaderListBox@@IAEXXZ
; protected: virtual void __thiscall CConfirmDlg::DoDataExchange(class CDataExchange *)
?DoDataExchange@CConfirmDlg@@MAEXPAVCDataExchange@@@Z
; protected: virtual void __thiscall CInheritanceDlg::DoDataExchange(class CDataExchange *)
?DoDataExchange@CInheritanceDlg@@MAEXPAVCDataExchange@@@Z
; public: virtual int __thiscall CDirBrowseDlg::DoModal(void)
?DoModal@CDirBrowseDlg@@UAEHXZ
; public: virtual int __thiscall CInheritanceDlg::DoModal(void)
?DoModal@CInheritanceDlg@@UAEHXZ
; public: long __thiscall CMetaKey::DoesPathExist(unsigned short const *)
?DoesPathExist@CMetaKey@@QAEJPBG@Z
; public: int __thiscall CRMCListBoxHeader::DoesRespondToColumnWidthChanges(void)const 
?DoesRespondToColumnWidthChanges@CRMCListBoxHeader@@QBEHXZ
; int __stdcall DoesUNCShareExist(class CString &)
?DoesUNCShareExist@@YGHAAVCString@@@Z
; protected: int __thiscall CODLBox::DrawBitmap(class CRMCListBoxDrawStruct &,int,int)
?DrawBitmap@CODLBox@@IAEHAAVCRMCListBoxDrawStruct@@HH@Z
; protected: virtual void __thiscall CRMCComboBox::DrawItem(struct tagDRAWITEMSTRUCT *)
?DrawItem@CRMCComboBox@@MAEXPAUtagDRAWITEMSTRUCT@@@Z
; protected: virtual void __thiscall CRMCListBox::DrawItem(struct tagDRAWITEMSTRUCT *)
?DrawItem@CRMCListBox@@MAEXPAUtagDRAWITEMSTRUCT@@@Z
; protected: virtual void __thiscall CRMCComboBox::DrawItemEx(class CRMCListBoxDrawStruct &)
?DrawItemEx@CRMCComboBox@@MAEXAAVCRMCListBoxDrawStruct@@@Z
; protected: virtual void __thiscall CRMCListBox::DrawItemEx(class CRMCListBoxDrawStruct &)
?DrawItemEx@CRMCListBox@@MAEXAAVCRMCListBoxDrawStruct@@@Z
; public: int __thiscall CIPAccessDescriptor::DuplicateInList(class CObListPlus &)
?DuplicateInList@CIPAccessDescriptor@@QAEHAAVCObListPlus@@@Z
; void __stdcall EditHideBalloon(void)
?EditHideBalloon@@YGXXZ
; void __stdcall EditShowBalloon(struct HWND__ *,unsigned int)
?EditShowBalloon@@YGXPAUHWND__@@I@Z
; void __stdcall EditShowBalloon(struct HWND__ *,class CString)
?EditShowBalloon@@YGXPAUHWND__@@VCString@@@Z
; public: void __thiscall CStrPassword::Empty(void)
?Empty@CStrPassword@@QAEXXZ
; public: void __thiscall CIISWizardSheet::EnableButton(int,int)
?EnableButton@CIISWizardSheet@@QAEXHH@Z
; protected: void __thiscall CIISWizardPage::EnableSheetButton(int,int)
?EnableSheetButton@CIISWizardPage@@IAEXHH@Z
; public: int __thiscall CHeaderListBox::EnableWindow(int)
?EnableWindow@CHeaderListBox@@QAEHH@Z
; protected: long __thiscall CMetaInterface::EnumBackups(unsigned short *,unsigned long *,struct _FILETIME *,unsigned long)
?EnumBackups@CMetaInterface@@IAEJPAGPAKPAU_FILETIME@@K@Z
; protected: long __thiscall CMetaInterface::EnumData(unsigned long,unsigned short const *,struct _METADATA_RECORD *,unsigned long,unsigned long *)
?EnumData@CMetaInterface@@IAEJKPBGPAU_METADATA_RECORD@@KPAK@Z
; protected: long __thiscall CMetaInterface::EnumHistory(unsigned short *,unsigned long *,unsigned long *,struct _FILETIME *,unsigned long)
?EnumHistory@CMetaInterface@@IAEJPAGPAK1PAU_FILETIME@@K@Z
; protected: long __thiscall CMetaInterface::EnumKeys(unsigned long,unsigned short const *,unsigned short *,unsigned long)
?EnumKeys@CMetaInterface@@IAEJKPBGPAGK@Z
; public: long __thiscall CIISAppPool::EnumerateApplications(class CStringListEx &)
?EnumerateApplications@CIISAppPool@@QAEJAAVCStringListEx@@@Z
; protected: long __thiscall CWamInterface::EnumerateApplicationsInPool(unsigned short const *,unsigned short * *)
?EnumerateApplicationsInPool@CWamInterface@@IAEJPBGPAPAG@Z
; protected: int __thiscall CError::ExpandEscapeCode(unsigned short *,unsigned long,unsigned short * &,class CString &,long &)const 
?ExpandEscapeCode@CError@@IBEHPAGKAAPAGAAVCString@@AAJ@Z
; public: int __thiscall CError::Failed(void)const 
?Failed@CError@@QBEHXZ
; public: static int __stdcall CError::Failed(long)
?Failed@CError@@SGHJ@Z
; int __stdcall FetchIpAddressFromCombo(class CComboBox &,class CObListPlus &,class CIPAddress &)
?FetchIpAddressFromCombo@@YGHAAVCComboBox@@AAVCObListPlus@@AAVCIPAddress@@@Z
; public: int __thiscall CObListPlus::FindElement(class CObject *)const 
?FindElement@CObListPlus@@QBEHPAVCObject@@@Z
; protected: static unsigned short const * __stdcall CError::FindFacility(unsigned long)
?FindFacility@CError@@KGPBGK@Z
; void __stdcall FitPathToControl(class CWnd &,unsigned short const *,int)
?FitPathToControl@@YGXAAVCWnd@@PBGH@Z
; public: void __thiscall CAccessEntry::FlagForDeletion(int)
?FlagForDeletion@CAccessEntry@@QAEXH@Z
; public: void __thiscall CComAuthInfo::FreeServerInfoStruct(struct _COSERVERINFO *)const 
?FreeServerInfoStruct@CComAuthInfo@@QBEXPAU_COSERVERINFO@@@Z
; protected: int __thiscall CInheritanceDlg::FriendlyInstance(class CString &,class CString &)
?FriendlyInstance@CInheritanceDlg@@IAEHAAVCString@@0@Z
; unsigned short const * __stdcall GUIDToCString(struct _GUID const &,class CString &)
?GUIDToCString@@YGPBGABU_GUID@@AAVCString@@@Z
; unsigned short const * __stdcall GenerateRegistryKey(class CString &,unsigned short const *)
?GenerateRegistryKey@@YGPBGAAVCString@@PBG@Z
; public: long __thiscall CMetaInterface::GetAdminInterface2(struct IMSAdminBase2W * *)
?GetAdminInterface2@CMetaInterface@@QAEJPAPAUIMSAdminBase2W@@@Z
; public: long __thiscall CMetaInterface::GetAdminInterface3(struct IMSAdminBase3W * *)
?GetAdminInterface3@CMetaInterface@@QAEJPAPAUIMSAdminBase3W@@@Z
; protected: long __thiscall CMetaInterface::GetAllData(unsigned long,unsigned short const *,unsigned long,unsigned long,unsigned long,unsigned long *,unsigned long *,unsigned long,unsigned char *,unsigned long *)
?GetAllData@CMetaInterface@@IAEJKPBGKKKPAK1KPAE1@Z
; protected: long __thiscall CMetaKey::GetAllData(unsigned long,unsigned long,unsigned long,unsigned long *,unsigned long *,unsigned char * *,unsigned short const *)
?GetAllData@CMetaKey@@IAEJKKKPAK0PAPAEPBG@Z
; public: long __thiscall CWamInterface::GetAppAdminInterface(struct IIISApplicationAdmin * *)
?GetAppAdminInterface@CWamInterface@@QAEJPAPAUIIISApplicationAdmin@@@Z
; protected: struct HBRUSH__ * __thiscall CIISWizardPage::GetBackgroundBrush(void)const 
?GetBackgroundBrush@CIISWizardPage@@IBEPAUHBRUSH__@@XZ
; public: struct HBRUSH__ * __thiscall CIISWizardSheet::GetBackgroundBrush(void)const 
?GetBackgroundBrush@CIISWizardSheet@@QBEPAUHBRUSH__@@XZ
; public: unsigned long __thiscall CMetaKey::GetBase(void)const 
?GetBase@CMetaKey@@QBEKXZ
; protected: class CFont * __thiscall CIISWizardPage::GetBigFont(void)
?GetBigFont@CIISWizardPage@@IAEPAVCFont@@XZ
; public: class CFont * __thiscall CIISWizardSheet::GetBigFont(void)
?GetBigFont@CIISWizardSheet@@QAEPAVCFont@@XZ
; protected: class CDC * __thiscall CIISWizardPage::GetBitmapMemDC(void)
?GetBitmapMemDC@CIISWizardPage@@IAEPAVCDC@@XZ
; public: class CDC * __thiscall CIISWizardSheet::GetBitmapMemDC(int)
?GetBitmapMemDC@CIISWizardSheet@@QAEPAVCDC@@H@Z
; protected: class CFont * __thiscall CIISWizardPage::GetBoldFont(void)
?GetBoldFont@CIISWizardPage@@IAEPAVCFont@@XZ
; public: class CFont * __thiscall CIISWizardSheet::GetBoldFont(void)
?GetBoldFont@CIISWizardSheet@@QAEPAVCFont@@XZ
; public: int __thiscall CStrPassword::GetByteLength(void)const 
?GetByteLength@CStrPassword@@QBEHXZ
; protected: long __thiscall CMetaInterface::GetChildPaths(unsigned long,unsigned short const *,unsigned long,unsigned short *,unsigned long *)
?GetChildPaths@CMetaInterface@@IAEJKPBGKPAGPAK@Z
; public: long __thiscall CMetaKey::GetChildPaths(class CStringListEx &,unsigned short const *)
?GetChildPaths@CMetaKey@@QAEJAAVCStringListEx@@PBG@Z
; public: unsigned short * __thiscall CStrPassword::GetClearTextPassword(void)
?GetClearTextPassword@CStrPassword@@QAEPAGXZ
; public: int __thiscall CRMCListBoxHeader::GetColumnWidth(int)const 
?GetColumnWidth@CRMCListBoxHeader@@QBEHH@Z
; public: int __thiscall CGetComputer::GetComputer(struct HWND__ *)
?GetComputer@CGetComputer@@QAEHPAUHWND__@@@Z
; public: int __thiscall CRMCListBox::GetCurSel(void)const 
?GetCurSel@CRMCListBox@@QBEHXZ
; public: unsigned char * __thiscall CBlob::GetData(void)
?GetData@CBlob@@QAEPAEXZ
; protected: long __thiscall CMetaInterface::GetData(unsigned long,unsigned short const *,struct _METADATA_RECORD *,unsigned long *)
?GetData@CMetaInterface@@IAEJKPBGPAU_METADATA_RECORD@@PAK@Z
; protected: long __thiscall CInheritanceDlg::GetDataPaths(void)
?GetDataPaths@CInheritanceDlg@@IAEJXZ
; protected: long __thiscall CMetaInterface::GetDataPaths(unsigned long,unsigned short const *,unsigned long,unsigned long,unsigned long,unsigned short *,unsigned long *)
?GetDataPaths@CMetaInterface@@IAEJKPBGKKKPAGPAK@Z
; public: long __thiscall CMetaKey::GetDataPaths(class CStringListEx &,unsigned long,unsigned long,unsigned short const *)
?GetDataPaths@CMetaKey@@QAEJAAVCStringListEx@@KKPBG@Z
; void __stdcall GetDlgCtlRect(struct HWND__ *,struct HWND__ *,struct tagRECT *)
?GetDlgCtlRect@@YGXPAUHWND__@@0PAUtagRECT@@@Z
; public: unsigned short const * __thiscall CDirBrowseDlg::GetFullPath(class CString &,int)const 
?GetFullPath@CDirBrowseDlg@@QBEPBGAAVCString@@H@Z
; void __stdcall GetFullPathLocalOrRemote(unsigned short const *,unsigned short const *,class CString &)
?GetFullPathLocalOrRemote@@YGXPBG0AAVCString@@@Z
; public: unsigned long __thiscall CMetaKey::GetHandle(void)const 
?GetHandle@CMetaKey@@QBEKXZ
; protected: class CRMCListBoxHeader * __thiscall CHeaderListBox::GetHeader(void)
?GetHeader@CHeaderListBox@@IAEPAVCRMCListBoxHeader@@XZ
; protected: int __thiscall CHeaderListBox::GetHeaderItem(int,struct _HD_ITEMW *)const 
?GetHeaderItem@CHeaderListBox@@IBEHHPAU_HD_ITEMW@@@Z
; protected: int __thiscall CHeaderListBox::GetHeaderItemCount(void)const 
?GetHeaderItemCount@CHeaderListBox@@IBEHXZ
; int __stdcall GetIUsrAccount(unsigned short const *,class CWnd *,class CString &)
?GetIUsrAccount@@YGHPBGPAVCWnd@@AAVCString@@@Z
; int __stdcall GetIUsrAccount(unsigned short const *,class CWnd *,unsigned short *,int)
?GetIUsrAccount@@YGHPBGPAVCWnd@@PAGH@Z
; public: static unsigned long __stdcall CMetabasePath::GetInstanceNumber(unsigned short const *)
?GetInstanceNumber@CMetabasePath@@SGKPBG@Z
; public: static unsigned short const * __stdcall CMetabasePath::GetInstancePath(unsigned short const *,class CString &,class CString *)
?GetInstancePath@CMetabasePath@@SGPBGPBGAAVCString@@PAV2@@Z
; public: struct IMSAdminBaseW * __thiscall CMetaInterface::GetInterface(void)
?GetInterface@CMetaInterface@@QAEPAUIMSAdminBaseW@@XZ
; public: int __thiscall CRMCListBoxHeader::GetItem(int,struct _HD_ITEMW *)const 
?GetItem@CRMCListBoxHeader@@QBEHHPAU_HD_ITEMW@@@Z
; public: int __thiscall CRMCListBoxHeader::GetItemCount(void)const 
?GetItemCount@CRMCListBoxHeader@@QBEHXZ
; protected: long __thiscall CMetaInterface::GetLastChangeTime(unsigned long,unsigned short const *,struct _FILETIME *,int)
?GetLastChangeTime@CMetaInterface@@IAEJKPBGPAU_FILETIME@@H@Z
; public: static unsigned short const * __stdcall CMetabasePath::GetLastNodeName(unsigned short const *,class CString &)
?GetLastNodeName@CMetabasePath@@SGPBGPBGAAVCString@@@Z
; public: void __thiscall CError::GetLastWinError(void)
?GetLastWinError@CError@@QAEXXZ
; public: int __thiscall CStrPassword::GetLength(void)const 
?GetLength@CStrPassword@@QBEHXZ
; public: static int __stdcall CMetaKey::GetMDFieldDef(unsigned long,unsigned long &,unsigned long &,unsigned long &,unsigned long &)
?GetMDFieldDef@CMetaKey@@SGHKAAK000@Z
; public: static unsigned short const * __stdcall CMetabasePath::GetMachinePath(unsigned short const *,class CString &,class CString *)
?GetMachinePath@CMetabasePath@@SGPBGPBGAAVCString@@PAV2@@Z
; protected: virtual struct AFX_MSGMAP const * __thiscall CConfirmDlg::GetMessageMap(void)const 
?GetMessageMap@CConfirmDlg@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CEmphasizedDialog::GetMessageMap(void)const 
?GetMessageMap@CEmphasizedDialog@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CHeaderListBox::GetMessageMap(void)const 
?GetMessageMap@CHeaderListBox@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CIISWizardBookEnd::GetMessageMap(void)const 
?GetMessageMap@CIISWizardBookEnd@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CIISWizardPage::GetMessageMap(void)const 
?GetMessageMap@CIISWizardPage@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CIISWizardSheet::GetMessageMap(void)const 
?GetMessageMap@CIISWizardSheet@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CInheritanceDlg::GetMessageMap(void)const 
?GetMessageMap@CInheritanceDlg@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CRMCComboBox::GetMessageMap(void)const 
?GetMessageMap@CRMCComboBox@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CRMCListBox::GetMessageMap(void)const 
?GetMessageMap@CRMCListBox@@MBEPBUAFX_MSGMAP@@XZ
; protected: virtual struct AFX_MSGMAP const * __thiscall CRMCListBoxHeader::GetMessageMap(void)const 
?GetMessageMap@CRMCListBoxHeader@@MBEPBUAFX_MSGMAP@@XZ
; public: static struct CMetaKey::tagMDFIELDDEF const * __stdcall CMetaKey::GetMetaProp(unsigned long)
?GetMetaProp@CMetaKey@@SGPBUtagMDFIELDDEF@1@K@Z
; public: void * __thiscall CRMCListBox::GetNextSelectedItem(int *)
?GetNextSelectedItem@CRMCListBox@@QAEPAXPAH@Z
; public: class CString & __thiscall CConfirmDlg::GetPassword(void)
?GetPassword@CConfirmDlg@@QAEAAVCString@@XZ
; public: long __thiscall CIISAppPool::GetProcessMode(unsigned long *)
?GetProcessMode@CIISAppPool@@QAEJPAK@Z
; protected: long __thiscall CWamInterface::GetProcessMode(unsigned long *)
?GetProcessMode@CWamInterface@@IAEJPAK@Z
; public: static int __stdcall CMetaKey::GetPropertyDescription(unsigned long,class CString &)
?GetPropertyDescription@CMetaKey@@SGHKAAVCString@@@Z
; protected: long __thiscall CMetaKey::GetPropertyValue(unsigned long,unsigned long &,void * &,unsigned long *,int *,unsigned short const *,unsigned long *)
?GetPropertyValue@CMetaKey@@IAEJKAAKAAPAXPAKPAHPBG2@Z
; protected: static int __stdcall CODLBox::GetRequiredWidth(class CDC *,class CRect const &,unsigned short const *,int)
?GetRequiredWidth@CODLBox@@KGHPAVCDC@@ABVCRect@@PBGH@Z
; public: static unsigned short const * __stdcall CMetabasePath::GetRootPath(unsigned short const *,class CString &,class CString *)
?GetRootPath@CMetabasePath@@SGPBGPBGAAVCString@@PAV2@@Z
; public: virtual struct CRuntimeClass * __thiscall CEmphasizedDialog::GetRuntimeClass(void)const 
?GetRuntimeClass@CEmphasizedDialog@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CHeaderListBox::GetRuntimeClass(void)const 
?GetRuntimeClass@CHeaderListBox@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CIISWizardBookEnd::GetRuntimeClass(void)const 
?GetRuntimeClass@CIISWizardBookEnd@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CIISWizardPage::GetRuntimeClass(void)const 
?GetRuntimeClass@CIISWizardPage@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CIISWizardSheet::GetRuntimeClass(void)const 
?GetRuntimeClass@CIISWizardSheet@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CRMCComboBox::GetRuntimeClass(void)const 
?GetRuntimeClass@CRMCComboBox@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CRMCListBox::GetRuntimeClass(void)const 
?GetRuntimeClass@CRMCListBox@@UBEPAUCRuntimeClass@@XZ
; public: virtual struct CRuntimeClass * __thiscall CRMCListBoxHeader::GetRuntimeClass(void)const 
?GetRuntimeClass@CRMCListBoxHeader@@UBEPAUCRuntimeClass@@XZ
; public: int __thiscall CRMCListBox::GetSel(int)const 
?GetSel@CRMCListBox@@QBEHH@Z
; public: int __thiscall CRMCListBox::GetSelCount(void)const 
?GetSelCount@CRMCListBox@@QBEHXZ
; public: void * __thiscall CRMCListBox::GetSelectedListItem(int *)
?GetSelectedListItem@CRMCListBox@@QAEPAXPAH@Z
; public: static unsigned short const * __stdcall CMetabasePath::GetServiceInfoPath(unsigned short const *,class CString &,unsigned short const *)
?GetServiceInfoPath@CMetabasePath@@SGPBGPBGAAVCString@@0@Z
; public: static unsigned short const * __stdcall CMetabasePath::GetServicePath(unsigned short const *,class CString &,class CString *)
?GetServicePath@CMetabasePath@@SGPBGPBGAAVCString@@PAV2@@Z
; protected: class CIISWizardSheet * __thiscall CIISWizardPage::GetSheet(void)const 
?GetSheet@CIISWizardPage@@IBEPAVCIISWizardSheet@@XZ
; public: void * __thiscall CAccessEntry::GetSid(void)
?GetSid@CAccessEntry@@QAEPAXXZ
; public: unsigned long __thiscall CBlob::GetSize(void)const 
?GetSize@CBlob@@QBEKXZ
; protected: class CFont * __thiscall CIISWizardPage::GetSpecialFont(void)
?GetSpecialFont@CIISWizardPage@@IAEPAVCFont@@XZ
; public: class CFont * __thiscall CIISWizardSheet::GetSpecialFont(int)
?GetSpecialFont@CIISWizardSheet@@QAEPAVCFont@@H@Z
; int __stdcall GetSpecialPathRealPath(int,class CString const &,class CString &)
?GetSpecialPathRealPath@@YGHHABVCString@@AAV1@@Z
; protected: void __thiscall CRMCListBoxResources::GetSysColors(void)
?GetSysColors@CRMCListBoxResources@@IAEXXZ
; public: long __thiscall CMetaInterface::GetSystemChangeNumber(unsigned long *)
?GetSystemChangeNumber@CMetaInterface@@QAEJPAK@Z
; public: unsigned int __thiscall CODLBox::GetTab(int)const 
?GetTab@CODLBox@@QBEIH@Z
; public: int __thiscall CGetUsers::GetUsers(struct HWND__ *,int)
?GetUsers@CGetUsers@@QAEHPAUHWND__@@H@Z
; int __stdcall GetVolumeInformationSystemFlags(unsigned short const *,unsigned long *)
?GetVolumeInformationSystemFlags@@YGHPBGPAK@Z
; protected: class CBrush * __thiscall CIISWizardPage::GetWindowBrush(void)
?GetWindowBrush@CIISWizardPage@@IAEPAVCBrush@@XZ
; public: class CBrush * __thiscall CIISWizardSheet::GetWindowBrush(void)
?GetWindowBrush@CIISWizardSheet@@QAEPAVCBrush@@XZ
; public: void __thiscall CIPAccessDescriptor::GrantAccess(int)
?GrantAccess@CIPAccessDescriptor@@QAEXH@Z
; public: long __thiscall CError::HResult(void)const 
?HResult@CError@@QBEJXZ
; public: static long __stdcall CError::HResult(long)
?HResult@CError@@SGJJ@Z
; public: int __thiscall CIPAccessDescriptor::HasAccess(void)const 
?HasAccess@CIPAccessDescriptor@@QBEHXZ
; public: int __thiscall CAccessEntry::HasAppropriateAccess(unsigned long)const 
?HasAppropriateAccess@CAccessEntry@@QBEHK@Z
; protected: int __thiscall CIISSvcControl::HasInterface(void)const 
?HasInterface@CIISSvcControl@@IBEHXZ
; protected: int __thiscall CMetaInterface::HasInterface(void)const 
?HasInterface@CMetaInterface@@IBEHXZ
; protected: int __thiscall CWamInterface::HasInterface(void)const 
?HasInterface@CWamInterface@@IBEHXZ
; protected: int __thiscall CError::HasOverride(unsigned int *)const 
?HasOverride@CError@@IBEHPAI@Z
; public: int __thiscall CAccessEntry::HasSomeAccess(void)const 
?HasSomeAccess@CAccessEntry@@QBEHXZ
; public: class CObject * __thiscall CObListPlus::Index(int)
?Index@CObListPlus@@QAEPAVCObject@@H@Z
; public: virtual int __thiscall CHeaderListBox::Initialize(void)
?Initialize@CHeaderListBox@@UAEHXZ
; public: static int __stdcall CINumber::Initialize(int)
?Initialize@CINumber@@SGHH@Z
; protected: void __thiscall CInheritanceDlg::Initialize(void)
?Initialize@CInheritanceDlg@@IAEXXZ
; protected: virtual int __thiscall CODLBox::Initialize(void)
?Initialize@CODLBox@@MAEHXZ
; public: virtual int __thiscall CRMCComboBox::Initialize(void)
?Initialize@CRMCComboBox@@UAEHXZ
; public: virtual int __thiscall CRMCListBox::Initialize(void)
?Initialize@CRMCListBox@@UAEHXZ
; protected: int __thiscall CHeaderListBox::InsertColumn(int,int,unsigned int,struct HINSTANCE__ *)
?InsertColumn@CHeaderListBox@@IAEHHHIPAUHINSTANCE__@@@Z
; protected: int __thiscall CHeaderListBox::InsertHeaderItem(int,struct _HD_ITEMW *)
?InsertHeaderItem@CHeaderListBox@@IAEHHPAU_HD_ITEMW@@@Z
; public: int __thiscall CRMCListBoxHeader::InsertItem(int,struct _HD_ITEMW *)
?InsertItem@CRMCListBoxHeader@@QAEHHPAU_HD_ITEMW@@@Z
; public: void __thiscall CODLBox::InsertTab(int,unsigned int)
?InsertTab@CODLBox@@QAEXHI@Z
; public: void __thiscall CRMCListBox::InvalidateSelection(int)
?InvalidateSelection@CRMCListBox@@QAEXH@Z
; long __stdcall IsAllNumHostHeader(unsigned short const *)
?IsAllNumHostHeader@@YGJPBG@Z
; protected: static int __stdcall CINumber::IsAllocated(void)
?IsAllocated@CINumber@@KGHXZ
; public: int __thiscall CIPAddress::IsBadValue(void)const 
?IsBadValue@CIPAddress@@QBEHXZ
; int __stdcall IsBiDiLocalizedSystem(void)
?IsBiDiLocalizedSystem@@YGHXZ
; public: int __thiscall CAccessEntry::IsDeletable(void)const 
?IsDeletable@CAccessEntry@@QBEHXZ
; public: int __thiscall CAccessEntry::IsDeleted(void)const 
?IsDeleted@CAccessEntry@@QBEHXZ
; int __stdcall IsDevicePath(class CString const &)
?IsDevicePath@@YGHABVCString@@@Z
; public: int __thiscall CAccessEntry::IsDirty(void)const 
?IsDirty@CAccessEntry@@QBEHXZ
; public: int __thiscall CObjHelper::IsDirty(void)const 
?IsDirty@CObjHelper@@QBEHXZ
; public: int __thiscall CIPAccessDescriptor::IsDomainName(void)const 
?IsDomainName@CIPAccessDescriptor@@QBEHXZ
; public: int __thiscall CBlob::IsEmpty(void)const 
?IsEmpty@CBlob@@QBEHXZ
; public: int __thiscall CInheritanceDlg::IsEmpty(void)const 
?IsEmpty@CInheritanceDlg@@QBEHXZ
; public: int __thiscall CStrPassword::IsEmpty(void)const 
?IsEmpty@CStrPassword@@QBEHXZ
; public: int __thiscall CIISApplication::IsEnabledApplication(void)const 
?IsEnabledApplication@CIISApplication@@QBEHXZ
; int __stdcall IsFullyQualifiedPath(class CString const &)
?IsFullyQualifiedPath@@YGHABVCString@@@Z
; protected: int __thiscall CIISWizardPage::IsHeaderPage(void)const 
?IsHeaderPage@CIISWizardPage@@IBEHXZ
; public: int __thiscall CMetaKey::IsHomeDirectoryPath(void)const 
?IsHomeDirectoryPath@CMetaKey@@QBEHXZ
; public: int __thiscall CMetabasePath::IsHomeDirectoryPath(void)const 
?IsHomeDirectoryPath@CMetabasePath@@QBEHXZ
; public: static int __stdcall CMetabasePath::IsHomeDirectoryPath(unsigned short const *)
?IsHomeDirectoryPath@CMetabasePath@@SGHPBG@Z
; public: static int __stdcall CINumber::IsInitialized(void)
?IsInitialized@CINumber@@SGHXZ
; public: int __thiscall CIISApplication::IsInproc(void)const 
?IsInproc@CIISApplication@@QBEHXZ
; public: int __thiscall CComAuthInfo::IsLocal(void)const 
?IsLocal@CComAuthInfo@@QBEHXZ
; public: int __thiscall CIISInterface::IsLocal(void)const 
?IsLocal@CIISInterface@@QBEHXZ
; int __stdcall IsLocalComputer(unsigned short const *)
?IsLocalComputer@@YGHPBG@Z
; public: static int __stdcall CMetabasePath::IsMasterInstance(unsigned short const *)
?IsMasterInstance@CMetabasePath@@SGHPBG@Z
; protected: int __thiscall CRMCListBox::IsMultiSelect(void)const 
?IsMultiSelect@CRMCListBox@@IBEHXZ
; public: int __thiscall CIPAccessDescriptor::IsMultiple(void)const 
?IsMultiple@CIPAccessDescriptor@@QBEHXZ
; int __stdcall IsNetworkPath(class CString const &,class CString *,class CString *)
?IsNetworkPath@@YGHABVCString@@PAV1@1@Z
; public: int __thiscall CMetaKey::IsOpen(void)const 
?IsOpen@CMetaKey@@QBEHXZ
; public: int __thiscall CIISApplication::IsOutOfProc(void)const 
?IsOutOfProc@CIISApplication@@QBEHXZ
; public: int __thiscall CIISApplication::IsPooledProc(void)const 
?IsPooledProc@CIISApplication@@QBEHXZ
; public: static int __stdcall CMetaKey::IsPropertyInheritable(unsigned long)
?IsPropertyInheritable@CMetaKey@@SGHK@Z
; int __stdcall IsRestrictedFilename(class CString const &)
?IsRestrictedFilename@@YGHABVCString@@@Z
; public: int __thiscall CAccessEntry::IsSIDResolved(void)const 
?IsSIDResolved@CAccessEntry@@QBEHXZ
; int __stdcall IsServerLocal(unsigned short const *)
?IsServerLocal@@YGHPBG@Z
; public: int __thiscall CIPAccessDescriptor::IsSingle(void)const 
?IsSingle@CIPAccessDescriptor@@QBEHXZ
; int __stdcall IsSpecialPath(class CString const &,int,int)
?IsSpecialPath@@YGHABVCString@@HH@Z
; int __stdcall IsUNCName(class CString const &)
?IsUNCName@@YGHABVCString@@@Z
; int __stdcall IsURLName(class CString const &)
?IsURLName@@YGHABVCString@@@Z
; public: virtual int __thiscall CObjHelper::IsValid(void)const 
?IsValid@CObjHelper@@UBEHXZ
; long __stdcall IsValidHostHeader(unsigned short const *)
?IsValidHostHeader@@YGJPBG@Z
; public: int __thiscall CAccessEntry::IsVisible(void)const 
?IsVisible@CAccessEntry@@QBEHXZ
; protected: int __thiscall CIISWizardBookEnd::IsWelcomePage(void)const 
?IsWelcomePage@CIISWizardBookEnd@@IBEHXZ
; protected: int __thiscall CIISWizardPage::IsWizard97(void)const 
?IsWizard97@CIISWizardPage@@IBEHXZ
; public: int __thiscall CIISWizardSheet::IsWizard97(void)const 
?IsWizard97@CIISWizardSheet@@QBEHXZ
; public: int __thiscall CIPAddress::IsZeroValue(void)const 
?IsZeroValue@CIPAddress@@QBEHXZ
; public: long __thiscall CIISSvcControl::Kill(void)
?Kill@CIISSvcControl@@QAEJXZ
; long __stdcall LimitInputDomainName(struct HWND__ *)
?LimitInputDomainName@@YGJPAUHWND__@@@Z
; long __stdcall LimitInputPath(struct HWND__ *,int)
?LimitInputPath@@YGJPAUHWND__@@H@Z
; protected: int __thiscall CMappedBitmapButton::LoadMappedBitmaps(unsigned int,unsigned int,unsigned int,unsigned int)
?LoadMappedBitmaps@CMappedBitmapButton@@IAEHIIII@Z
; public: static unsigned short * __stdcall CIPAddress::LongToString(unsigned long,unsigned short *,int)
?LongToString@CIPAddress@@SGPAGKPAGH@Z
; public: static unsigned short const * __stdcall CIPAddress::LongToString(unsigned long,class ATL::CComBSTR &)
?LongToString@CIPAddress@@SGPBGKAAVCComBSTR@ATL@@@Z
; public: static unsigned short const * __stdcall CIPAddress::LongToString(unsigned long,class CString &)
?LongToString@CIPAddress@@SGPBGKAAVCString@@@Z
; int __stdcall LooksLikeIPAddress(unsigned short const *)
?LooksLikeIPAddress@@YGHPBG@Z
; public: static int __stdcall CAccessEntry::LookupAccountSidW(class CString &,int &,void *,unsigned short const *)
?LookupAccountSidW@CAccessEntry@@SGHAAVCString@@AAHPAXPBG@Z
; unsigned short const * __stdcall MakeUNCPath(class CString &,unsigned short const *,unsigned short const *)
?MakeUNCPath@@YGPBGAAVCString@@PBG1@Z
; public: static int __stdcall CMetaKey::MapMDIDToTableIndex(unsigned long)
?MapMDIDToTableIndex@CMetaKey@@SGHK@Z
; public: void __thiscall CAccessEntry::MarkEntryAsChanged(void)
?MarkEntryAsChanged@CAccessEntry@@QAEXXZ
; public: void __thiscall CAccessEntry::MarkEntryAsClean(void)
?MarkEntryAsClean@CAccessEntry@@QAEXXZ
; public: void __thiscall CAccessEntry::MarkEntryAsNew(void)
?MarkEntryAsNew@CAccessEntry@@QAEXXZ
; protected: virtual void __thiscall CRMCComboBox::MeasureItem(struct tagMEASUREITEMSTRUCT *)
?MeasureItem@CRMCComboBox@@MAEXPAUtagMEASUREITEMSTRUCT@@@Z
; protected: virtual void __thiscall CRMCListBox::MeasureItem(struct tagMEASUREITEMSTRUCT *)
?MeasureItem@CRMCListBox@@MAEXPAUtagMEASUREITEMSTRUCT@@@Z
; public: int __cdecl CError::MessageBoxFormat(struct HWND__ *,unsigned int,unsigned int,unsigned int,...)const 
?MessageBoxFormat@CError@@QBAHPAUHWND__@@IIIZZ
; public: int __thiscall CError::MessageBoxOnFailure(struct HWND__ *,unsigned int,unsigned int)const 
?MessageBoxOnFailure@CError@@QBEHPAUHWND__@@II@Z
; public: int __thiscall CError::MessageBoxW(struct HWND__ *,unsigned int,unsigned int)const 
?MessageBoxW@CError@@QBEHPAUHWND__@@II@Z
; unsigned long __stdcall MyGetHostName(unsigned long,class CString &)
?MyGetHostName@@YGKKAAVCString@@@Z
; long __stdcall MyValidatePath(unsigned short const *,int,int,unsigned long,unsigned long)
?MyValidatePath@@YGJPBGHHKK@Z
; public: long __thiscall CMetaBack::Next(unsigned long *,unsigned short *,struct _FILETIME *)
?Next@CMetaBack@@QAEJPAKPAGPAU_FILETIME@@@Z
; public: long __thiscall CMetaEnumerator::Next(unsigned long &,class CString &,unsigned short const *)
?Next@CMetaEnumerator@@QAEJAAKAAVCString@@PBG@Z
; public: long __thiscall CMetaEnumerator::Next(class CString &,unsigned short const *)
?Next@CMetaEnumerator@@QAEJAAVCString@@PBG@Z
; public: class CObject * __thiscall CObListIter::Next(void)
?Next@CObListIter@@QAEPAVCObject@@XZ
; public: long __thiscall CMetaBack::NextHistory(unsigned long *,unsigned long *,unsigned short *,struct _FILETIME *)
?NextHistory@CMetaBack@@QAEJPAK0PAGPAU_FILETIME@@@Z
; public: int __thiscall CODLBox::NumTabs(void)const 
?NumTabs@CODLBox@@QBEHXZ
; protected: void __thiscall CInheritanceDlg::OnButtonSelectAll(void)
?OnButtonSelectAll@CInheritanceDlg@@IAEXXZ
; protected: int __thiscall CHeaderListBox::OnCreate(struct tagCREATESTRUCTW *)
?OnCreate@CHeaderListBox@@IAEHPAUtagCREATESTRUCTW@@@Z
; protected: int __thiscall CRMCComboBox::OnCreate(struct tagCREATESTRUCTW *)
?OnCreate@CRMCComboBox@@IAEHPAUtagCREATESTRUCTW@@@Z
; protected: int __thiscall CRMCListBox::OnCreate(struct tagCREATESTRUCTW *)
?OnCreate@CRMCListBox@@IAEHPAUtagCREATESTRUCTW@@@Z
; protected: struct HBRUSH__ * __thiscall CIISWizardPage::OnCtlColor(class CDC *,class CWnd *,unsigned int)
?OnCtlColor@CIISWizardPage@@IAEPAUHBRUSH__@@PAVCDC@@PAVCWnd@@I@Z
; protected: void __thiscall CEmphasizedDialog::OnDestroy(void)
?OnDestroy@CEmphasizedDialog@@IAEXXZ
; protected: void __thiscall CHeaderListBox::OnDestroy(void)
?OnDestroy@CHeaderListBox@@IAEXXZ
; protected: void __thiscall CIISWizardSheet::OnDestroy(void)
?OnDestroy@CIISWizardSheet@@IAEXXZ
; protected: void __thiscall CRMCListBoxHeader::OnDestroy(void)
?OnDestroy@CRMCListBoxHeader@@IAEXXZ
; protected: int __thiscall CIISWizardPage::OnEraseBkgnd(class CDC *)
?OnEraseBkgnd@CIISWizardPage@@IAEHPAVCDC@@@Z
; protected: void __thiscall CRMCListBoxHeader::OnHeaderEndTrack(unsigned int,struct tagNMHDR *,long *)
?OnHeaderEndTrack@CRMCListBoxHeader@@IAEXIPAUtagNMHDR@@PAJ@Z
; protected: void __thiscall CRMCListBoxHeader::OnHeaderItemChanged(unsigned int,struct tagNMHDR *,long *)
?OnHeaderItemChanged@CRMCListBoxHeader@@IAEXIPAUtagNMHDR@@PAJ@Z
; protected: void __thiscall CRMCListBoxHeader::OnHeaderItemClick(unsigned int,struct tagNMHDR *,long *)
?OnHeaderItemClick@CRMCListBoxHeader@@IAEXIPAUtagNMHDR@@PAJ@Z
; protected: void __thiscall CInheritanceDlg::OnHelp(void)
?OnHelp@CInheritanceDlg@@IAEXXZ
; protected: virtual int __thiscall CEmphasizedDialog::OnInitDialog(void)
?OnInitDialog@CEmphasizedDialog@@MAEHXZ
; protected: virtual int __thiscall CIISWizardBookEnd::OnInitDialog(void)
?OnInitDialog@CIISWizardBookEnd@@MAEHXZ
; protected: virtual int __thiscall CIISWizardPage::OnInitDialog(void)
?OnInitDialog@CIISWizardPage@@MAEHXZ
; protected: virtual int __thiscall CIISWizardSheet::OnInitDialog(void)
?OnInitDialog@CIISWizardSheet@@MAEHXZ
; protected: virtual int __thiscall CInheritanceDlg::OnInitDialog(void)
?OnInitDialog@CInheritanceDlg@@MAEHXZ
; protected: virtual void __thiscall CInheritanceDlg::OnOK(void)
?OnOK@CInheritanceDlg@@MAEXXZ
; public: virtual int __thiscall CIISWizardBookEnd::OnSetActive(void)
?OnSetActive@CIISWizardBookEnd@@UAEHXZ
; protected: void __thiscall CRMCListBoxHeader::OnSetFocus(class CWnd *)
?OnSetFocus@CRMCListBoxHeader@@IAEXPAVCWnd@@@Z
; public: long __thiscall CMetaKey::Open(unsigned long,unsigned short const *,unsigned long)
?Open@CMetaKey@@QAEJKPBGK@Z
; protected: long __thiscall CMetaInterface::OpenKey(unsigned long,unsigned short const *,unsigned long,unsigned long *)
?OpenKey@CMetaInterface@@IAEJKPBGKPAK@Z
; public: int __thiscall CIPAccessDescriptor::OrderByAddress(class CObjectPlus const *)const 
?OrderByAddress@CIPAccessDescriptor@@QBEHPBVCObjectPlus@@@Z
; int __stdcall PCToUnixText(unsigned short * &,class CString)
?PCToUnixText@@YGHAAPAGVCString@@@Z
; int __stdcall PathIsValid(unsigned short const *,int)
?PathIsValid@@YGHPBGH@Z
; unsigned long __stdcall PopulateComboWithKnownIpAddresses(unsigned short const *,class CComboBox &,class CIPAddress &,class CObListPlus &,int &)
?PopulateComboWithKnownIpAddresses@@YGKPBGAAVCComboBox@@AAVCIPAddress@@AAVCObListPlus@@AAH@Z
; protected: void __thiscall CRMCListBoxResources::PrepareBitmaps(void)
?PrepareBitmaps@CRMCListBoxResources@@IAEXXZ
; protected: void __thiscall CGetComputer::ProcessSelectedObjects(struct IDataObject *)
?ProcessSelectedObjects@CGetComputer@@IAEXPAUIDataObject@@@Z
; protected: void __thiscall CGetUsers::ProcessSelectedObjects(struct IDataObject *)
?ProcessSelectedObjects@CGetUsers@@IAEXPAUIDataObject@@@Z
; public: unsigned long __thiscall CAccessEntry::QueryAccessMask(void)const 
?QueryAccessMask@CAccessEntry@@QBEKXZ
; public: unsigned long __thiscall CObjHelper::QueryAge(void)const 
?QueryAge@CObjHelper@@QBEKXZ
; public: long __thiscall CObjHelper::QueryApiErr(void)const 
?QueryApiErr@CObjHelper@@QBEJXZ
; public: unsigned long __thiscall CIISApplication::QueryAppState(void)const 
?QueryAppState@CIISApplication@@QBEKXZ
; public: class CComAuthInfo * __thiscall CIISInterface::QueryAuthInfo(void)
?QueryAuthInfo@CIISInterface@@QAEPAVCComAuthInfo@@XZ
; protected: long __thiscall CIISWizardPage::QueryBitmapHeight(void)const 
?QueryBitmapHeight@CIISWizardPage@@IBEJXZ
; public: long __thiscall CIISWizardSheet::QueryBitmapHeight(int)const 
?QueryBitmapHeight@CIISWizardSheet@@QBEJH@Z
; protected: long __thiscall CIISWizardPage::QueryBitmapWidth(void)const 
?QueryBitmapWidth@CIISWizardPage@@IBEJXZ
; public: long __thiscall CIISWizardSheet::QueryBitmapWidth(int)const 
?QueryBitmapWidth@CIISWizardSheet@@QBEJH@Z
; public: int __thiscall CHeaderListBox::QueryColumnWidth(int)const 
?QueryColumnWidth@CHeaderListBox@@QBEHH@Z
; public: unsigned long __thiscall CObjHelper::QueryCreationTime(void)const 
?QueryCreationTime@CObjHelper@@QBEKXZ
; public: static unsigned short const * __stdcall CINumber::QueryCurrency(void)
?QueryCurrency@CINumber@@SGPBGXZ
; public: static unsigned short const * __stdcall CINumber::QueryDecimalPoint(void)
?QueryDecimalPoint@CINumber@@SGPBGXZ
; public: unsigned short const * __thiscall CIPAccessDescriptor::QueryDomainName(void)const 
?QueryDomainName@CIPAccessDescriptor@@QBEPBGXZ
; public: long __thiscall CObjHelper::QueryError(void)const 
?QueryError@CObjHelper@@QBEJXZ
; public: unsigned long __thiscall CMetaKey::QueryFlags(void)const 
?QueryFlags@CMetaKey@@QBEKXZ
; public: unsigned long __thiscall CIPAddress::QueryHostOrderIPAddress(void)const 
?QueryHostOrderIPAddress@CIPAddress@@QBEKXZ
; public: class CIPAddress  __thiscall CIPAccessDescriptor::QueryIPAddress(void)const 
?QueryIPAddress@CIPAccessDescriptor@@QBE?AVCIPAddress@@XZ
; public: unsigned long __thiscall CIPAccessDescriptor::QueryIPAddress(int)const 
?QueryIPAddress@CIPAccessDescriptor@@QBEKH@Z
; public: unsigned long __thiscall CIPAddress::QueryIPAddress(int)const 
?QueryIPAddress@CIPAddress@@QBEKH@Z
; public: unsigned short const * __thiscall CIPAddress::QueryIPAddress(class ATL::CComBSTR &)const 
?QueryIPAddress@CIPAddress@@QBEPBGAAVCComBSTR@ATL@@@Z
; public: unsigned short const * __thiscall CIPAddress::QueryIPAddress(class CString &)const 
?QueryIPAddress@CIPAddress@@QBEPBGAAVCString@@@Z
; public: unsigned short const * __thiscall CMetaKey::QueryMetaPath(void)const 
?QueryMetaPath@CMetaKey@@QBEPBGXZ
; public: unsigned short const * __thiscall CMetabasePath::QueryMetaPath(void)const 
?QueryMetaPath@CMetabasePath@@QBEPBGXZ
; public: unsigned long __thiscall CIPAddress::QueryNetworkOrderIPAddress(void)const 
?QueryNetworkOrderIPAddress@CIPAddress@@QBEKXZ
; public: int __thiscall CHeaderListBox::QueryNumColumns(void)const 
?QueryNumColumns@CHeaderListBox@@QBEHXZ
; public: int __thiscall CRMCListBoxHeader::QueryNumColumns(void)const 
?QueryNumColumns@CRMCListBoxHeader@@QBEHXZ
; public: unsigned short * __thiscall CComAuthInfo::QueryPassword(void)const 
?QueryPassword@CComAuthInfo@@QBEPAGXZ
; public: int __thiscall CAccessEntry::QueryPictureID(void)const 
?QueryPictureID@CAccessEntry@@QBEHXZ
; public: unsigned long __thiscall CIISAppPool::QueryPoolState(void)const 
?QueryPoolState@CIISAppPool@@QBEKXZ
; public: struct __POSITION * __thiscall CObListIter::QueryPosition(void)const 
?QueryPosition@CObListIter@@QBEPAU__POSITION@@XZ
; public: virtual long __thiscall CIISAppPool::QueryResult(void)const 
?QueryResult@CIISAppPool@@UBEJXZ
; public: virtual long __thiscall CIISApplication::QueryResult(void)const 
?QueryResult@CIISApplication@@UBEJXZ
; public: virtual long __thiscall CIISInterface::QueryResult(void)const 
?QueryResult@CIISInterface@@UBEJXZ
; public: virtual long __thiscall CMetaBack::QueryResult(void)const 
?QueryResult@CMetaBack@@UBEJXZ
; public: virtual long __thiscall CMetaKey::QueryResult(void)const 
?QueryResult@CMetaKey@@UBEJXZ
; public: unsigned short * __thiscall CComAuthInfo::QueryServerName(void)const 
?QueryServerName@CComAuthInfo@@QBEPAGXZ
; public: unsigned short const * __thiscall CIISInterface::QueryServerName(void)const 
?QueryServerName@CIISInterface@@QBEPBGXZ
; public: class CIPAddress  __thiscall CIPAccessDescriptor::QuerySubnetMask(void)const 
?QuerySubnetMask@CIPAccessDescriptor@@QBE?AVCIPAddress@@XZ
; public: unsigned long __thiscall CIPAccessDescriptor::QuerySubnetMask(int)const 
?QuerySubnetMask@CIPAccessDescriptor@@QBEKH@Z
; public: static unsigned short const * __stdcall CINumber::QueryThousandSeparator(void)
?QueryThousandSeparator@CINumber@@SGPBGXZ
; public: unsigned short const * __thiscall CAccessEntry::QueryUserName(void)const 
?QueryUserName@CAccessEntry@@QBEPBGXZ
; public: unsigned short * __thiscall CComAuthInfo::QueryUserName(void)const 
?QueryUserName@CComAuthInfo@@QBEPAGXZ
; public: long __thiscall CMetaKey::QueryValue(unsigned long,int &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAHPAHPBGPAK@Z
; public: long __thiscall CMetaKey::QueryValue(unsigned long,unsigned long &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAKPAHPBGPAK@Z
; public: long __thiscall CMetaKey::QueryValue(unsigned long,class CBlob &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAVCBlob@@PAHPBGPAK@Z
; public: long __thiscall CMetaKey::QueryValue(unsigned long,class ATL::CComBSTR &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAVCComBSTR@ATL@@PAHPBGPAK@Z
; public: long __thiscall CMetaKey::QueryValue(unsigned long,class CStrPassword &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAVCStrPassword@@PAHPBGPAK@Z
; public: long __thiscall CMetaKey::QueryValue(unsigned long,class CString &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAVCString@@PAHPBGPAK@Z
; public: long __thiscall CMetaKey::QueryValue(unsigned long,class CStringListEx &,int *,unsigned short const *,unsigned long *)
?QueryValue@CMetaKey@@QAEJKAAVCStringListEx@@PAHPBGPAK@Z
; public: unsigned short const * __thiscall CIISAppPool::QueryWamPath(void)const 
?QueryWamPath@CIISAppPool@@QBEPBGXZ
; public: unsigned short const * __thiscall CIISApplication::QueryWamPath(void)const 
?QueryWamPath@CIISApplication@@QBEPBGXZ
; protected: unsigned long __thiscall CIISWizardPage::QueryWindowColor(void)const 
?QueryWindowColor@CIISWizardPage@@IBEKXZ
; public: unsigned long __thiscall CIISWizardSheet::QueryWindowColor(void)const 
?QueryWindowColor@CIISWizardSheet@@QBEKXZ
; protected: unsigned long __thiscall CIISWizardPage::QueryWindowTextColor(void)const 
?QueryWindowTextColor@CIISWizardPage@@IBEKXZ
; public: unsigned long __thiscall CIISWizardSheet::QueryWindowTextColor(void)const 
?QueryWindowTextColor@CIISWizardSheet@@QBEKXZ
; public: long __thiscall CMetaKey::ReOpen(unsigned long)
?ReOpen@CMetaKey@@QAEJK@Z
; public: long __thiscall CMetaKey::ReOpen(void)
?ReOpen@CMetaKey@@QAEJXZ
; public: long __thiscall CIISSvcControl::Reboot(unsigned long,int)
?Reboot@CIISSvcControl@@QAEJKH@Z
; public: long __thiscall CIISApplication::Recover(int)
?Recover@CIISApplication@@QAEJH@Z
; public: long __thiscall CIISAppPool::Recycle(unsigned short const *)
?Recycle@CIISAppPool@@QAEJPBG@Z
; protected: long __thiscall CWamInterface::RecycleApplicationPool(unsigned short const *)
?RecycleApplicationPool@CWamInterface@@IAEJPBG@Z
; public: long __thiscall CIISApplication::RefreshAppState(void)
?RefreshAppState@CIISApplication@@QAEJXZ
; public: long __thiscall CIISAppPool::RefreshState(void)
?RefreshState@CIISAppPool@@QAEJXZ
; public: long __thiscall CMetaInterface::Regenerate(void)
?Regenerate@CMetaInterface@@QAEJXZ
; public: static void __stdcall CError::RegisterFacility(unsigned long,char const *)
?RegisterFacility@CError@@SGXKPBD@Z
; public: int __thiscall CObListPlus::Remove(class CObject *)
?Remove@CObListPlus@@QAEHPAVCObject@@@Z
; public: void __thiscall CObListPlus::RemoveAll(void)
?RemoveAll@CObListPlus@@QAEXXZ
; public: void __thiscall CError::RemoveAllOverrides(void)
?RemoveAllOverrides@CError@@QAEXXZ
; public: void __thiscall CODLBox::RemoveAllTabs(void)
?RemoveAllTabs@CODLBox@@QAEXXZ
; public: void __thiscall CObListPlus::RemoveAt(struct __POSITION * &)
?RemoveAt@CObListPlus@@QAEXAAPAU__POSITION@@@Z
; public: void __thiscall CComAuthInfo::RemoveImpersonation(void)
?RemoveImpersonation@CComAuthInfo@@QAEXXZ
; public: int __thiscall CObListPlus::RemoveIndex(int)
?RemoveIndex@CObListPlus@@QAEHH@Z
; public: void __thiscall CError::RemoveOverride(long)
?RemoveOverride@CError@@QAEXJ@Z
; public: void __thiscall CAccessEntry::RemovePermissions(unsigned long)
?RemovePermissions@CAccessEntry@@QAEXK@Z
; public: void __thiscall CODLBox::RemoveTab(int,int)
?RemoveTab@CODLBox@@QAEXHH@Z
; protected: long __thiscall CMetaInterface::RenameKey(unsigned long,unsigned short const *,unsigned short const *)
?RenameKey@CMetaInterface@@IAEJKPBG0@Z
; public: long __thiscall CMetaKey::RenameKey(unsigned short const *,unsigned short const *)
?RenameKey@CMetaKey@@QAEJPBG0@Z
; unsigned long __stdcall ReplaceStringInString(class CString &,class CString &,class CString &,int)
?ReplaceStringInString@@YGKAAVCString@@00H@Z
; public: void __thiscall CObjHelper::ReportError(long)
?ReportError@CObjHelper@@QAEXJ@Z
; public: void __thiscall CError::Reset(void)
?Reset@CError@@QAEXXZ
; public: void __thiscall CMetaBack::Reset(void)
?Reset@CMetaBack@@QAEXXZ
; public: void __thiscall CMetaEnumerator::Reset(void)
?Reset@CMetaEnumerator@@QAEXXZ
; public: void __thiscall CObListIter::Reset(void)
?Reset@CObListIter@@QAEXXZ
; public: void __thiscall CObjHelper::ResetErrors(void)
?ResetErrors@CObjHelper@@QAEXXZ
; public: int __thiscall CAccessEntry::ResolveSID(void)
?ResolveSID@CAccessEntry@@QAEHXZ
; public: void __thiscall CRMCListBoxHeader::RespondToColumnWidthChanges(int)
?RespondToColumnWidthChanges@CRMCListBoxHeader@@QAEXH@Z
; public: long __thiscall CMetaBack::Restore(unsigned short const *,unsigned long)
?Restore@CMetaBack@@QAEJPBGK@Z
; protected: long __thiscall CMetaInterface::Restore(unsigned short const *,unsigned long,unsigned long)
?Restore@CMetaInterface@@IAEJPBGKK@Z
; protected: long __thiscall CMetaInterface::RestoreHistory(unsigned short const *,unsigned long,unsigned long,unsigned long)
?RestoreHistory@CMetaInterface@@IAEJPBGKKK@Z
; public: long __thiscall CMetaBack::RestoreHistoryBackup(unsigned short const *,unsigned long,unsigned long,unsigned long)
?RestoreHistoryBackup@CMetaBack@@QAEJPBGKKK@Z
; public: long __thiscall CMetaBack::RestoreWithPassword(unsigned short const *,unsigned long,unsigned short const *)
?RestoreWithPassword@CMetaBack@@QAEJPBGK0@Z
; protected: long __thiscall CMetaInterface::RestoreWithPassword(unsigned short const *,unsigned long,unsigned long,unsigned short const *)
?RestoreWithPassword@CMetaInterface@@IAEJPBGKK0@Z
; public: long __thiscall CMetaInterface::SaveData(void)
?SaveData@CMetaInterface@@QAEJXZ
; public: int __thiscall CRMCListBox::SelectItem(void *)
?SelectItem@CRMCListBox@@QAEHPAX@Z
; public: int __thiscall CObListPlus::SetAll(int)
?SetAll@CObListPlus@@QAEHH@Z
; public: long __thiscall CObjHelper::SetApiErr(long)
?SetApiErr@CObjHelper@@QAEJJ@Z
; public: int __thiscall CHeaderListBox::SetColumnWidth(int,int)
?SetColumnWidth@CHeaderListBox@@QAEHHH@Z
; public: void __thiscall CRMCListBoxHeader::SetColumnWidth(int,int)
?SetColumnWidth@CRMCListBoxHeader@@QAEXHH@Z
; protected: void __thiscall CComAuthInfo::SetComputerNameW(unsigned short const *)
?SetComputerNameW@CComAuthInfo@@IAEXPBG@Z
; public: int __thiscall CRMCListBox::SetCurSel(int)
?SetCurSel@CRMCListBox@@QAEHH@Z
; protected: long __thiscall CMetaInterface::SetData(unsigned long,unsigned short const *,struct _METADATA_RECORD *)
?SetData@CMetaInterface@@IAEJKPBGPAU_METADATA_RECORD@@@Z
; public: void __thiscall CObjHelper::SetDirty(int)
?SetDirty@CObjHelper@@QAEXH@Z
; protected: int __thiscall CHeaderListBox::SetHeaderItem(int,struct _HD_ITEMW *)
?SetHeaderItem@CHeaderListBox@@IAEHHPAU_HD_ITEMW@@@Z
; public: void __thiscall CComAuthInfo::SetImpersonation(unsigned short const *,unsigned short const *)
?SetImpersonation@CComAuthInfo@@QAEXPBG0@Z
; public: int __thiscall CRMCListBoxHeader::SetItem(int,struct _HD_ITEMW *)
?SetItem@CRMCListBoxHeader@@QAEHHPAU_HD_ITEMW@@@Z
; protected: long __thiscall CMetaInterface::SetLastChangeTime(unsigned long,unsigned short const *,struct _FILETIME *,int)
?SetLastChangeTime@CMetaInterface@@IAEJKPBGPAU_FILETIME@@H@Z
; public: void __thiscall CError::SetLastWinError(void)const 
?SetLastWinError@CError@@QBEXXZ
; public: int __thiscall CObListPlus::SetOwnership(int)
?SetOwnership@CObListPlus@@QAEHH@Z
; public: void __thiscall CObListIter::SetPosition(struct __POSITION *)
?SetPosition@CObListIter@@QAEXPAU__POSITION@@@Z
; protected: long __thiscall CMetaKey::SetPropertyValue(unsigned long,unsigned long,void *,int *,unsigned short const *)
?SetPropertyValue@CMetaKey@@IAEJKKPAXPAHPBG@Z
; public: void __thiscall CConfirmDlg::SetReference(class CString &)
?SetReference@CConfirmDlg@@QAEXAAVCString@@@Z
; public: void __thiscall CODLBox::SetTab(int,unsigned int)
?SetTab@CODLBox@@QAEXHI@Z
; protected: void __thiscall CRMCListBoxHeader::SetTabsFromHeader(void)
?SetTabsFromHeader@CRMCListBoxHeader@@IAEXXZ
; public: void __thiscall CBlob::SetValue(unsigned long,unsigned char *,int)
?SetValue@CBlob@@QAEXKPAEH@Z
; public: long __thiscall CMetaKey::SetValue(unsigned long,class CBlob &,int *,unsigned short const *)
?SetValue@CMetaKey@@QAEJKAAVCBlob@@PAHPBG@Z
; public: long __thiscall CMetaKey::SetValue(unsigned long,class CStrPassword &,int *,unsigned short const *)
?SetValue@CMetaKey@@QAEJKAAVCStrPassword@@PAHPBG@Z
; public: long __thiscall CMetaKey::SetValue(unsigned long,class CString &,int *,unsigned short const *)
?SetValue@CMetaKey@@QAEJKAAVCString@@PAHPBG@Z
; public: long __thiscall CMetaKey::SetValue(unsigned long,class CStringListEx &,int *,unsigned short const *)
?SetValue@CMetaKey@@QAEJKAAVCStringListEx@@PAHPBG@Z
; public: long __thiscall CMetaKey::SetValue(unsigned long,int,int *,unsigned short const *)
?SetValue@CMetaKey@@QAEJKHPAHPBG@Z
; public: long __thiscall CMetaKey::SetValue(unsigned long,unsigned long,int *,unsigned short const *)
?SetValue@CMetaKey@@QAEJKKPAHPBG@Z
; public: void __thiscall CIPAccessDescriptor::SetValues(int,unsigned long,unsigned long,int)
?SetValues@CIPAccessDescriptor@@QAEXHKKH@Z
; public: void __thiscall CIPAccessDescriptor::SetValues(int,unsigned short const *)
?SetValues@CIPAccessDescriptor@@QAEXHPBG@Z
; protected: int __thiscall CHeaderListBox::SetWidthsFromReg(void)
?SetWidthsFromReg@CHeaderListBox@@IAEHXZ
; protected: void __thiscall CIISWizardPage::SetWizardButtons(unsigned long)
?SetWizardButtons@CIISWizardPage@@IAEXK@Z
; public: void __thiscall CIPAddress::SetZeroValue(void)
?SetZeroValue@CIPAddress@@QAEXXZ
; public: int __thiscall CHeaderListBox::ShowWindow(int)
?ShowWindow@CHeaderListBox@@QAEHH@Z
; public: unsigned long __thiscall CObListPlus::Sort(int (__thiscall CObjectPlus::*)(class CObjectPlus const *)const )
?Sort@CObListPlus@@QAEKP8CObjectPlus@@BEHPBV2@@Z@Z
; protected: static int __cdecl CObListPlus::SortHelper(void const *,void const *)
?SortHelper@CObListPlus@@KAHPBX0@Z
; public: static void __stdcall CMetabasePath::SplitMetaPathAtInstance(unsigned short const *,class CString &,class CString &)
?SplitMetaPathAtInstance@CMetabasePath@@SGXPBGAAVCString@@1@Z
; public: static int __stdcall CComAuthInfo::SplitUserNameAndDomain(class CString &,class CString &)
?SplitUserNameAndDomain@CComAuthInfo@@SGHAAVCString@@0@Z
; public: long __thiscall CIISSvcControl::Start(unsigned long)
?Start@CIISSvcControl@@QAEJK@Z
; public: long __thiscall CIISSvcControl::Status(unsigned long,unsigned char *,unsigned long *,unsigned long *)
?Status@CIISSvcControl@@QAEJKPAEPAK1@Z
; public: long __thiscall CIISSvcControl::Stop(unsigned long,int)
?Stop@CIISSvcControl@@QAEJKH@Z
; public: void __thiscall CComAuthInfo::StorePassword(unsigned short const *)
?StorePassword@CComAuthInfo@@QAEXPBG@Z
; public: static unsigned long __stdcall CIPAddress::StringToLong(class ATL::CComBSTR const &)
?StringToLong@CIPAddress@@SGKABVCComBSTR@ATL@@@Z
; public: static unsigned long __stdcall CIPAddress::StringToLong(class CString const &)
?StringToLong@CIPAddress@@SGKABVCString@@@Z
; public: static unsigned long __stdcall CIPAddress::StringToLong(unsigned short const *,int)
?StringToLong@CIPAddress@@SGKPBGH@Z
; public: int __thiscall CError::Succeeded(void)const 
?Succeeded@CError@@QBEHXZ
; public: static int __stdcall CError::Succeeded(long)
?Succeeded@CError@@SGHJ@Z
; public: virtual int __thiscall CIISAppPool::Succeeded(void)const 
?Succeeded@CIISAppPool@@UBEHXZ
; public: virtual int __thiscall CIISApplication::Succeeded(void)const 
?Succeeded@CIISApplication@@UBEHXZ
; public: virtual int __thiscall CIISInterface::Succeeded(void)const 
?Succeeded@CIISInterface@@UBEHXZ
; public: virtual int __thiscall CMetaBack::Succeeded(void)const 
?Succeeded@CMetaBack@@UBEHXZ
; public: virtual int __thiscall CMetaKey::Succeeded(void)const 
?Succeeded@CMetaKey@@UBEHXZ
; public: int __thiscall CWamInterface::SupportsPooledProc(void)const 
?SupportsPooledProc@CWamInterface@@QBEHXZ
; int __stdcall SupportsSecurityACLs(unsigned short const *)
?SupportsSecurityACLs@@YGHPBG@Z
; public: void __thiscall CRMCListBoxResources::SysColorChanged(void)
?SysColorChanged@CRMCListBoxResources@@QAEXXZ
; public: long __thiscall CError::TextFromHRESULT(class CString &)const 
?TextFromHRESULT@CError@@QBEJAAVCString@@@Z
; public: long __thiscall CError::TextFromHRESULT(unsigned short *,unsigned long)const 
?TextFromHRESULT@CError@@QBEJPAGK@Z
; public: unsigned short const * __thiscall CError::TextFromHRESULTExpand(class CString &)const 
?TextFromHRESULTExpand@CError@@QBEPBGAAVCString@@@Z
; public: unsigned short const * __thiscall CError::TextFromHRESULTExpand(unsigned short *,unsigned long,long *)const 
?TextFromHRESULTExpand@CError@@QBEPBGPAGKPAJ@Z
; public: int __thiscall CODLBox::TextHeight(void)const 
?TextHeight@CODLBox@@QBEHXZ
; public: static unsigned short const * __stdcall CMetabasePath::TruncatePath(int,unsigned short const *,class CString &,class CString *)
?TruncatePath@CMetabasePath@@SGPBGHPBGAAVCString@@PAV2@@Z
; int __stdcall UnixToPCText(class CString &,unsigned short const *)
?UnixToPCText@@YGHAAVCString@@PBG@Z
; public: long __thiscall CIISApplication::Unload(int)
?Unload@CIISApplication@@QAEJH@Z
; protected: void __thiscall CRMCListBoxResources::UnprepareBitmaps(void)
?UnprepareBitmaps@CRMCListBoxResources@@IAEXXZ
; public: static void __stdcall CError::UnregisterFacility(unsigned long)
?UnregisterFacility@CError@@SGXK@Z
; protected: int __thiscall CRMCListBoxHeader::UseButtons(void)const 
?UseButtons@CRMCListBoxHeader@@IBEHXZ
; protected: int __thiscall CRMCListBoxHeader::UseStretch(void)const 
?UseStretch@CRMCListBoxHeader@@IBEHXZ
; public: static int __stdcall CINumber::UseSystemDefault(void)
?UseSystemDefault@CINumber@@SGHXZ
; public: static int __stdcall CINumber::UseUserDefault(void)
?UseUserDefault@CINumber@@SGHXZ
; public: int __thiscall CComAuthInfo::UsesImpersonation(void)const 
?UsesImpersonation@CComAuthInfo@@QBEHXZ
; public: int __thiscall CIISWizardPage::ValidateString(class CEdit &,class CString &,int,int)
?ValidateString@CIISWizardPage@@QAEHAAVCEdit@@AAVCString@@HH@Z
; int __stdcall VerifyState(void)
?VerifyState@@YGHXZ
; public: static unsigned long __stdcall CComAuthInfo::VerifyUserPassword(unsigned short const *,unsigned short const *)
?VerifyUserPassword@CComAuthInfo@@SGKPBG0@Z
; public: unsigned long __thiscall CError::Win32Error(void)const 
?Win32Error@CError@@QBEKXZ
; public: static unsigned long __stdcall CError::Win32Error(long)
?Win32Error@CError@@SGKJ@Z
; protected: virtual void __thiscall CIISWizardSheet::WinHelpW(unsigned long,unsigned int)
?WinHelpW@CIISWizardSheet@@MAEXKI@Z
; public: long __thiscall CIISApplication::WriteFriendlyName(unsigned short const *)
?WriteFriendlyName@CIISApplication@@QAEJPBG@Z
; public: long __thiscall CIISApplication::WritePoolId(unsigned short const *)
?WritePoolId@CIISApplication@@QAEJPBG@Z
; protected: static struct CRuntimeClass * __stdcall CEmphasizedDialog::_GetBaseClass(void)
?_GetBaseClass@CEmphasizedDialog@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CHeaderListBox::_GetBaseClass(void)
?_GetBaseClass@CHeaderListBox@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CIISWizardBookEnd::_GetBaseClass(void)
?_GetBaseClass@CIISWizardBookEnd@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CIISWizardPage::_GetBaseClass(void)
?_GetBaseClass@CIISWizardPage@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CIISWizardSheet::_GetBaseClass(void)
?_GetBaseClass@CIISWizardSheet@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CRMCComboBox::_GetBaseClass(void)
?_GetBaseClass@CRMCComboBox@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CRMCListBox::_GetBaseClass(void)
?_GetBaseClass@CRMCListBox@@KGPAUCRuntimeClass@@XZ
; protected: static struct CRuntimeClass * __stdcall CRMCListBoxHeader::_GetBaseClass(void)
?_GetBaseClass@CRMCListBoxHeader@@KGPAUCRuntimeClass@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CConfirmDlg::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CConfirmDlg@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CEmphasizedDialog::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CEmphasizedDialog@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CHeaderListBox::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CHeaderListBox@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CIISWizardBookEnd::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CIISWizardBookEnd@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CIISWizardPage::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CIISWizardPage@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CIISWizardSheet::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CIISWizardSheet@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CInheritanceDlg::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CInheritanceDlg@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CRMCComboBox::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CRMCComboBox@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CRMCListBox::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CRMCListBox@@KGPBUAFX_MSGMAP@@XZ
; protected: static struct AFX_MSGMAP const * __stdcall CRMCListBoxHeader::_GetBaseMessageMap(void)
?_GetBaseMessageMap@CRMCListBoxHeader@@KGPBUAFX_MSGMAP@@XZ
; protected: void __thiscall CODLBox::__DrawItem(struct tagDRAWITEMSTRUCT *)
?__DrawItem@CODLBox@@IAEXPAUtagDRAWITEMSTRUCT@@@Z
; public: virtual int __thiscall CRMCComboBox::__GetCount(void)const 
?__GetCount@CRMCComboBox@@UBEHXZ
; public: virtual int __thiscall CRMCListBox::__GetCount(void)const 
?__GetCount@CRMCListBox@@UBEHXZ
; protected: void __thiscall CODLBox::__MeasureItem(struct tagMEASUREITEMSTRUCT *)
?__MeasureItem@CODLBox@@IAEXPAUtagMEASUREITEMSTRUCT@@@Z
; public: virtual int __thiscall CRMCComboBox::__SetItemHeight(int,unsigned int)
?__SetItemHeight@CRMCComboBox@@UAEHHI@Z
; public: virtual int __thiscall CRMCListBox::__SetItemHeight(int,unsigned int)
?__SetItemHeight@CRMCListBox@@UAEHHI@Z
; protected: static unsigned short const  CMetabasePath::_chSep
?_chSep@CMetabasePath@@1GB
; protected: static unsigned short const * const  CMetabasePath::_cszMachine
?_cszMachine@CMetabasePath@@1QBGB
; protected: static unsigned short const * const  CMetabasePath::_cszRoot
?_cszRoot@CMetabasePath@@1QBGB
; protected: static unsigned short const * const  CMetabasePath::_cszSep
?_cszSep@CMetabasePath@@1QBGB
; private: static int  CINumber::_fAllocated
?_fAllocated@CINumber@@0HA DATA
; private: static int  CINumber::_fCurrencyPrefix
?_fCurrencyPrefix@CINumber@@0HA DATA
; private: static int  CINumber::_fInitialized
?_fInitialized@CINumber@@0HA DATA
; private: static struct AFX_MSGMAP_ENTRY const * const  CConfirmDlg::_messageEntries
?_messageEntries@CConfirmDlg@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CEmphasizedDialog::_messageEntries
?_messageEntries@CEmphasizedDialog@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CHeaderListBox::_messageEntries
?_messageEntries@CHeaderListBox@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CIISWizardBookEnd::_messageEntries
?_messageEntries@CIISWizardBookEnd@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CIISWizardPage::_messageEntries
?_messageEntries@CIISWizardPage@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CIISWizardSheet::_messageEntries
?_messageEntries@CIISWizardSheet@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CInheritanceDlg::_messageEntries
?_messageEntries@CInheritanceDlg@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CRMCComboBox::_messageEntries
?_messageEntries@CRMCComboBox@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CRMCListBox::_messageEntries
?_messageEntries@CRMCListBox@@0QBUAFX_MSGMAP_ENTRY@@B
; private: static struct AFX_MSGMAP_ENTRY const * const  CRMCListBoxHeader::_messageEntries
?_messageEntries@CRMCListBoxHeader@@0QBUAFX_MSGMAP_ENTRY@@B
; protected: static class CString *  CINumber::_pstr
?_pstr@CINumber@@1PAVCString@@A DATA
; public: static class CString *  CINumber::_pstrBadNumber
?_pstrBadNumber@CINumber@@2PAVCString@@A DATA
; private: static class CString *  CINumber::_pstrCurrency
?_pstrCurrency@CINumber@@0PAVCString@@A DATA
; private: static class CString *  CINumber::_pstrDecimalPoint
?_pstrDecimalPoint@CINumber@@0PAVCString@@A DATA
; private: static class CString *  CINumber::_pstrThousandSeparator
?_pstrThousandSeparator@CINumber@@0PAVCString@@A DATA
; public: static struct CRuntimeClass const  CEmphasizedDialog::classCEmphasizedDialog
?classCEmphasizedDialog@CEmphasizedDialog@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CHeaderListBox::classCHeaderListBox
?classCHeaderListBox@CHeaderListBox@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CIISWizardBookEnd::classCIISWizardBookEnd
?classCIISWizardBookEnd@CIISWizardBookEnd@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CIISWizardPage::classCIISWizardPage
?classCIISWizardPage@CIISWizardPage@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CIISWizardSheet::classCIISWizardSheet
?classCIISWizardSheet@CIISWizardSheet@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CRMCComboBox::classCRMCComboBox
?classCRMCComboBox@CRMCComboBox@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CRMCListBox::classCRMCListBox
?classCRMCListBox@CRMCListBox@@2UCRuntimeClass@@B
; public: static struct CRuntimeClass const  CRMCListBoxHeader::classCRMCListBoxHeader
?classCRMCListBoxHeader@CRMCListBoxHeader@@2UCRuntimeClass@@B
; public: class CDC const & __thiscall CRMCListBoxResources::dcBitMap(void)const 
?dcBitMap@CRMCListBoxResources@@QBEABVCDC@@XZ
; unsigned short const * const  g_lpszDummyPassword
?g_lpszDummyPassword@@3PBGB DATA
; protected: static struct AFX_MSGMAP const  CConfirmDlg::messageMap
?messageMap@CConfirmDlg@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CEmphasizedDialog::messageMap
?messageMap@CEmphasizedDialog@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CHeaderListBox::messageMap
?messageMap@CHeaderListBox@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CIISWizardBookEnd::messageMap
?messageMap@CIISWizardBookEnd@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CIISWizardPage::messageMap
?messageMap@CIISWizardPage@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CIISWizardSheet::messageMap
?messageMap@CIISWizardSheet@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CInheritanceDlg::messageMap
?messageMap@CInheritanceDlg@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CRMCComboBox::messageMap
?messageMap@CRMCComboBox@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CRMCListBox::messageMap
?messageMap@CRMCListBox@@1UAFX_MSGMAP@@B
; protected: static struct AFX_MSGMAP const  CRMCListBoxHeader::messageMap
?messageMap@CRMCListBoxHeader@@1UAFX_MSGMAP@@B
; protected: static int const  CMetaKey::s_MetaTableSize
?s_MetaTableSize@CMetaKey@@1HB
; protected: static unsigned long  CError::s_cdwFacilities
?s_cdwFacilities@CError@@1KA DATA
; protected: static long  CError::s_cdwMaxLMErr
?s_cdwMaxLMErr@CError@@1JA DATA
; protected: static long  CError::s_cdwMaxWSErr
?s_cdwMaxWSErr@CError@@1JA DATA
; protected: static long  CError::s_cdwMinLMErr
?s_cdwMinLMErr@CError@@1JA DATA
; protected: static long  CError::s_cdwMinWSErr
?s_cdwMinWSErr@CError@@1JA DATA
; protected: static unsigned short const  CError::s_chEscNumber
?s_chEscNumber@CError@@1GB
; protected: static unsigned short const  CError::s_chEscText
?s_chEscText@CError@@1GB
; protected: static unsigned short const  CError::s_chEscape
?s_chEscape@CError@@1GB
; protected: static int const  CIISWizardSheet::s_cnBoldDeltaFont
?s_cnBoldDeltaFont@CIISWizardSheet@@1HB
; protected: static int const  CIISWizardSheet::s_cnBoldDeltaHeight
?s_cnBoldDeltaHeight@CIISWizardSheet@@1HB
; protected: static int const  CIISWizardSheet::s_cnBoldDeltaWidth
?s_cnBoldDeltaWidth@CIISWizardSheet@@1HB
; protected: static int const  CIISWizardPage::s_cnHeaderOffset
?s_cnHeaderOffset@CIISWizardPage@@1HB
; protected: static unsigned short const * *  CError::s_cszFacility
?s_cszFacility@CError@@1PAPBGA DATA
; protected: static unsigned short const * const  CError::s_cszLMDLL
?s_cszLMDLL@CError@@1PBGB DATA
; protected: static unsigned short const * const  CError::s_cszWSDLL
?s_cszWSDLL@CError@@1PBGB DATA
; protected: static int  CError::s_fAllocated
?s_fAllocated@CError@@1HA DATA
; protected: static class CMap<unsigned long,unsigned long &,class CString,class CString &> *  CError::s_pmapFacilities
?s_pmapFacilities@CError@@1PAV?$CMap@KAAKVCString@@AAV1@@@A DATA
; protected: static class CString *  CError::s_pstrDefError
?s_pstrDefError@CError@@1PAVCString@@A DATA
; protected: static class CString *  CError::s_pstrDefSuccs
?s_pstrDefSuccs@CError@@1PAVCString@@A DATA
; protected: static struct CMetaKey::tagMDFIELDDEF const * const  CMetaKey::s_rgMetaTable
?s_rgMetaTable@CMetaKey@@1QBUtagMDFIELDDEF@1@B
; protected: static unsigned short const * const  CMetaBack::s_szMasterAppRoot
?s_szMasterAppRoot@CMetaBack@@1QBGB
DllRegisterServer
DllUnregisterServer
