; 
; Exports of file FastProx.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY FastProx.dll
EXPORTS
; public: __thiscall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>(class CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc> const &)
??0?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>(class CWmiObjectTextSrc *)
??0?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@QAE@PAVCWmiObjectTextSrc@@@Z
; public: __thiscall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>(class CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc> const &)
??0?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>(class CWbemRefreshingSvc *)
??0?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@QAE@PAVCWbemRefreshingSvc@@@Z
; public: __thiscall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>(class CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher> const &)
??0?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>(class CWbemRemoteRefresher *)
??0?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@QAE@PAVCWbemRemoteRefresher@@@Z
; public: __thiscall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>(class CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc> const &)
??0?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>(class CWbemRefreshingSvc *)
??0?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@QAE@PAVCWbemRefreshingSvc@@@Z
; public: __thiscall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>(class CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling> const &)
??0?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>(class CWbemEnumMarshaling *)
??0?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@QAE@PAVCWbemEnumMarshaling@@@Z
; public: __thiscall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>(class CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr> const &)
??0?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>(class CWbemFetchRefrMgr *)
??0?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@QAE@PAVCWbemFetchRefrMgr@@@Z
; public: __thiscall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>(class CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory> const &)
??0?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@QAE@ABV0@@Z
; public: __thiscall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>(class CWmiObjectFactory *)
??0?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@QAE@PAVCWmiObjectFactory@@@Z
; public: __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>(class CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray> &)
??0?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAE@AAV0@@Z
; public: __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>(class CReferenceManager<class CFastPropertyBagItem> const &)
??0?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAE@ABV?$CReferenceManager@VCFastPropertyBagItem@@@@@Z
; public: __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>(class CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray> &)
??0?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAE@AAV0@@Z
; public: __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>(class CReferenceManager<class CWmiTextSource> const &)
??0?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAE@ABV?$CReferenceManager@VCWmiTextSource@@@@@Z
; public: __thiscall CRefedPointerArray<class CFastPropertyBagItem>::CRefedPointerArray<class CFastPropertyBagItem>(class CRefedPointerArray<class CFastPropertyBagItem> &)
??0?$CRefedPointerArray@VCFastPropertyBagItem@@@@QAE@AAV0@@Z
; public: __thiscall CRefedPointerArray<class CFastPropertyBagItem>::CRefedPointerArray<class CFastPropertyBagItem>(void)
??0?$CRefedPointerArray@VCFastPropertyBagItem@@@@QAE@XZ
; public: __thiscall CRefedPointerArray<class CWmiTextSource>::CRefedPointerArray<class CWmiTextSource>(class CRefedPointerArray<class CWmiTextSource> &)
??0?$CRefedPointerArray@VCWmiTextSource@@@@QAE@AAV0@@Z
; public: __thiscall CRefedPointerArray<class CWmiTextSource>::CRefedPointerArray<class CWmiTextSource>(void)
??0?$CRefedPointerArray@VCWmiTextSource@@@@QAE@XZ
; public: __thiscall CBasicQualifierSet::CBasicQualifierSet(void)
??0CBasicQualifierSet@@QAE@XZ
; public: __thiscall CClassAndMethods::CClassAndMethods(class CClassAndMethods const &)
??0CClassAndMethods@@QAE@ABV0@@Z
; public: __thiscall CClassAndMethods::CClassAndMethods(void)
??0CClassAndMethods@@QAE@XZ
; public: __thiscall CClassPart::CClassPart(class CClassPart const &)
??0CClassPart@@QAE@ABV0@@Z
; public: __thiscall CClassPart::CClassPart(void)
??0CClassPart@@QAE@XZ
; public: __thiscall CClassPartContainer::CClassPartContainer(class CClassPartContainer const &)
??0CClassPartContainer@@QAE@ABV0@@Z
; public: __thiscall CClassPartContainer::CClassPartContainer(void)
??0CClassPartContainer@@QAE@XZ
; public: __thiscall CClassQualifierSet::CClassQualifierSet(class CClassQualifierSet const &)
??0CClassQualifierSet@@QAE@ABV0@@Z
; public: __thiscall CClassQualifierSet::CClassQualifierSet(int)
??0CClassQualifierSet@@QAE@H@Z
; public: __thiscall CDecorationPart::CDecorationPart(void)
??0CDecorationPart@@QAE@XZ
; public: __thiscall CFastPropertyBag::CFastPropertyBag(class CFastPropertyBag &)
??0CFastPropertyBag@@QAE@AAV0@@Z
; public: __thiscall CFastPropertyBag::CFastPropertyBag(void)
??0CFastPropertyBag@@QAE@XZ
; public: __thiscall CFixedBSTRArray::CFixedBSTRArray(void)
??0CFixedBSTRArray@@QAE@XZ
; public: __thiscall CHiPerfLock::CHiPerfLock(void)
??0CHiPerfLock@@QAE@XZ
; public: __thiscall CInstancePQSContainer::CInstancePQSContainer(class CInstancePQSContainer const &)
??0CInstancePQSContainer@@QAE@ABV0@@Z
; public: __thiscall CInstancePQSContainer::CInstancePQSContainer(void)
??0CInstancePQSContainer@@QAE@XZ
; public: __thiscall CInstancePart::CInstancePart(class CInstancePart const &)
??0CInstancePart@@QAE@ABV0@@Z
; public: __thiscall CInstancePart::CInstancePart(void)
??0CInstancePart@@QAE@XZ
; public: __thiscall CInstancePartContainer::CInstancePartContainer(class CInstancePartContainer const &)
??0CInstancePartContainer@@QAE@ABV0@@Z
; public: __thiscall CInstancePartContainer::CInstancePartContainer(void)
??0CInstancePartContainer@@QAE@XZ
; public: __thiscall CInstanceQualifierSet::CInstanceQualifierSet(class CInstanceQualifierSet const &)
??0CInstanceQualifierSet@@QAE@ABV0@@Z
; public: __thiscall CInstanceQualifierSet::CInstanceQualifierSet(int)
??0CInstanceQualifierSet@@QAE@H@Z
; public: __thiscall CInternalString::CInternalString(class CInternalString const &)
??0CInternalString@@QAE@ABV0@@Z
; public: __thiscall CInternalString::CInternalString(unsigned short const *)
??0CInternalString@@QAE@PBG@Z
; public: __thiscall CInternalString::CInternalString(void)
??0CInternalString@@QAE@XZ
; public: __thiscall CLimitationMapping::CLimitationMapping(class CLimitationMapping &)
??0CLimitationMapping@@QAE@AAV0@@Z
; public: __thiscall CLimitationMapping::CLimitationMapping(void)
??0CLimitationMapping@@QAE@XZ
; public: __thiscall CMethodPart::CMethodPart(class CMethodPart const &)
??0CMethodPart@@QAE@ABV0@@Z
; public: __thiscall CMethodPart::CMethodPart(void)
??0CMethodPart@@QAE@XZ
; public: __thiscall CMethodPartContainer::CMethodPartContainer(class CMethodPartContainer const &)
??0CMethodPartContainer@@QAE@ABV0@@Z
; public: __thiscall CMethodPartContainer::CMethodPartContainer(void)
??0CMethodPartContainer@@QAE@XZ
; public: __thiscall CMethodQualifierSet::CMethodQualifierSet(class CMethodQualifierSet const &)
??0CMethodQualifierSet@@QAE@ABV0@@Z
; public: __thiscall CMethodQualifierSet::CMethodQualifierSet(void)
??0CMethodQualifierSet@@QAE@XZ
; public: __thiscall CMethodQualifierSetContainer::CMethodQualifierSetContainer(class CMethodQualifierSetContainer const &)
??0CMethodQualifierSetContainer@@QAE@ABV0@@Z
; public: __thiscall CMethodQualifierSetContainer::CMethodQualifierSetContainer(void)
??0CMethodQualifierSetContainer@@QAE@XZ
; public: __thiscall CPropertyBagItemArray::CPropertyBagItemArray(class CPropertyBagItemArray &)
??0CPropertyBagItemArray@@QAE@AAV0@@Z
; public: __thiscall CPropertyBagItemArray::CPropertyBagItemArray(void)
??0CPropertyBagItemArray@@QAE@XZ
; public: __thiscall CQualifierSet::CQualifierSet(class CQualifierSet const &)
??0CQualifierSet@@QAE@ABV0@@Z
; public: __thiscall CQualifierSet::CQualifierSet(int,int)
??0CQualifierSet@@QAE@HH@Z
; public: __thiscall CQualifierSetListContainer::CQualifierSetListContainer(class CQualifierSetListContainer const &)
??0CQualifierSetListContainer@@QAE@ABV0@@Z
; public: __thiscall CQualifierSetListContainer::CQualifierSetListContainer(void)
??0CQualifierSetListContainer@@QAE@XZ
; public: __thiscall CType::CType(unsigned long)
??0CType@@QAE@K@Z
; public: __thiscall CType::CType(void)
??0CType@@QAE@XZ
; public: __thiscall CWbemCallSecurity::CWbemCallSecurity(class CWbemCallSecurity const &)
??0CWbemCallSecurity@@QAE@ABV0@@Z
; public: __thiscall CWbemCallSecurity::CWbemCallSecurity(class CLifeControl *)
??0CWbemCallSecurity@@QAE@PAVCLifeControl@@@Z
; public: __thiscall CWbemClass::CWbemClass(class CWbemClass const &)
??0CWbemClass@@QAE@ABV0@@Z
; public: __thiscall CWbemClass::CWbemClass(void)
??0CWbemClass@@QAE@XZ
; public: __thiscall CWbemClassCache::CWbemClassCache(class CWbemClassCache const &)
??0CWbemClassCache@@QAE@ABV0@@Z
; public: __thiscall CWbemClassCache::CWbemClassCache(unsigned long)
??0CWbemClassCache@@QAE@K@Z
; protected: __thiscall CWbemDataPacket::CWbemDataPacket(void)
??0CWbemDataPacket@@IAE@XZ
; public: __thiscall CWbemDataPacket::CWbemDataPacket(unsigned char *,unsigned long,bool)
??0CWbemDataPacket@@QAE@PAEK_N@Z
; public: __thiscall CWbemEnumMarshaling::CWbemEnumMarshaling(class CWbemEnumMarshaling const &)
??0CWbemEnumMarshaling@@QAE@ABV0@@Z
; public: __thiscall CWbemEnumMarshaling::CWbemEnumMarshaling(class CLifeControl *,struct IUnknown *)
??0CWbemEnumMarshaling@@QAE@PAVCLifeControl@@PAUIUnknown@@@Z
; public: __thiscall CWbemFetchRefrMgr::CWbemFetchRefrMgr(class CWbemFetchRefrMgr const &)
??0CWbemFetchRefrMgr@@QAE@ABV0@@Z
; public: __thiscall CWbemFetchRefrMgr::CWbemFetchRefrMgr(class CLifeControl *,struct IUnknown *)
??0CWbemFetchRefrMgr@@QAE@PAVCLifeControl@@PAUIUnknown@@@Z
; public: __thiscall CWbemGuidToClassMap::CWbemGuidToClassMap(class CWbemGuidToClassMap const &)
??0CWbemGuidToClassMap@@QAE@ABV0@@Z
; public: __thiscall CWbemGuidToClassMap::CWbemGuidToClassMap(void)
??0CWbemGuidToClassMap@@QAE@XZ
; public: __thiscall CWbemInstance::CWbemInstance(class CWbemInstance const &)
??0CWbemInstance@@QAE@ABV0@@Z
; public: __thiscall CWbemInstance::CWbemInstance(void)
??0CWbemInstance@@QAE@XZ
; private: __thiscall CWbemMtgtDeliverEventPacket::CWbemMtgtDeliverEventPacket(void)
??0CWbemMtgtDeliverEventPacket@@AAE@XZ
; public: __thiscall CWbemMtgtDeliverEventPacket::CWbemMtgtDeliverEventPacket(unsigned char *,unsigned long,bool)
??0CWbemMtgtDeliverEventPacket@@QAE@PAEK_N@Z
; protected: __thiscall CWbemObject::CWbemObject(class CDataTable &,class CFastHeap &,class CDerivationList &)
??0CWbemObject@@IAE@AAVCDataTable@@AAVCFastHeap@@AAVCDerivationList@@@Z
; public: __thiscall CWbemObject::CWbemObject(class CWbemObject const &)
??0CWbemObject@@QAE@ABV0@@Z
; public: __thiscall CWbemObjectArrayPacket::CWbemObjectArrayPacket(unsigned char *,unsigned long,bool)
??0CWbemObjectArrayPacket@@QAE@PAEK_N@Z
; public: __thiscall CWbemRefreshingSvc::CWbemRefreshingSvc(class CWbemRefreshingSvc const &)
??0CWbemRefreshingSvc@@QAE@ABV0@@Z
; public: __thiscall CWbemRefreshingSvc::CWbemRefreshingSvc(class CLifeControl *,struct IUnknown *)
??0CWbemRefreshingSvc@@QAE@PAVCLifeControl@@PAUIUnknown@@@Z
; private: __thiscall CWbemSmartEnumNextPacket::CWbemSmartEnumNextPacket(void)
??0CWbemSmartEnumNextPacket@@AAE@XZ
; public: __thiscall CWbemSmartEnumNextPacket::CWbemSmartEnumNextPacket(unsigned char *,unsigned long,bool)
??0CWbemSmartEnumNextPacket@@QAE@PAEK_N@Z
; public: __thiscall CWbemThreadSecurityHandle::CWbemThreadSecurityHandle(class CWbemThreadSecurityHandle const &)
??0CWbemThreadSecurityHandle@@QAE@ABV0@@Z
; public: __thiscall CWbemThreadSecurityHandle::CWbemThreadSecurityHandle(class CLifeControl *)
??0CWbemThreadSecurityHandle@@QAE@PAVCLifeControl@@@Z
; public: __thiscall CWmiObjectFactory::CWmiObjectFactory(class CWmiObjectFactory const &)
??0CWmiObjectFactory@@QAE@ABV0@@Z
; public: __thiscall CWmiObjectFactory::CWmiObjectFactory(class CLifeControl *,struct IUnknown *)
??0CWmiObjectFactory@@QAE@PAVCLifeControl@@PAUIUnknown@@@Z
; public: __thiscall CWmiTextSourceArray::CWmiTextSourceArray(class CWmiTextSourceArray &)
??0CWmiTextSourceArray@@QAE@AAV0@@Z
; public: __thiscall CWmiTextSourceArray::CWmiTextSourceArray(void)
??0CWmiTextSourceArray@@QAE@XZ
; public: __thiscall SHARED_LOCK_DATA::SHARED_LOCK_DATA(void)
??0SHARED_LOCK_DATA@@QAE@XZ
; public: __thiscall CWbemRefreshingSvc::XCfgRefrSrvc::XCfgRefrSrvc(class XCfgRefrSrvc::XCfgRefrSrvc const &)
??0XCfgRefrSrvc@CWbemRefreshingSvc@@QAE@ABV01@@Z
; public: __thiscall CWbemRefreshingSvc::XCfgRefrSrvc::XCfgRefrSrvc(class XCfgRefrSrvc *)
??0XCfgRefrSrvc@CWbemRefreshingSvc@@QAE@PAV1@@Z
; public: __thiscall CWbemEnumMarshaling::XEnumMarshaling::XEnumMarshaling(class XEnumMarshaling::XEnumMarshaling const &)
??0XEnumMarshaling@CWbemEnumMarshaling@@QAE@ABV01@@Z
; public: __thiscall CWbemEnumMarshaling::XEnumMarshaling::XEnumMarshaling(class XEnumMarshaling *)
??0XEnumMarshaling@CWbemEnumMarshaling@@QAE@PAV1@@Z
; public: __thiscall CWbemFetchRefrMgr::XFetchRefrMgr::XFetchRefrMgr(class XFetchRefrMgr::XFetchRefrMgr const &)
??0XFetchRefrMgr@CWbemFetchRefrMgr@@QAE@ABV01@@Z
; public: __thiscall CWbemFetchRefrMgr::XFetchRefrMgr::XFetchRefrMgr(class XFetchRefrMgr *)
??0XFetchRefrMgr@CWbemFetchRefrMgr@@QAE@PAV1@@Z
; public: __thiscall CWmiObjectFactory::XObjectFactory::XObjectFactory(class XObjectFactory::XObjectFactory const &)
??0XObjectFactory@CWmiObjectFactory@@QAE@ABV01@@Z
; public: __thiscall CWmiObjectFactory::XObjectFactory::XObjectFactory(class XObjectFactory *)
??0XObjectFactory@CWmiObjectFactory@@QAE@PAV1@@Z
; public: __thiscall CWmiObjectTextSrc::XObjectTextSrc::XObjectTextSrc(class XObjectTextSrc::XObjectTextSrc const &)
??0XObjectTextSrc@CWmiObjectTextSrc@@QAE@ABV01@@Z
; public: __thiscall CWmiObjectTextSrc::XObjectTextSrc::XObjectTextSrc(class XObjectTextSrc *)
??0XObjectTextSrc@CWmiObjectTextSrc@@QAE@PAV1@@Z
; public: __thiscall CWbemRefreshingSvc::XWbemRefrSvc::XWbemRefrSvc(class XWbemRefrSvc::XWbemRefrSvc const &)
??0XWbemRefrSvc@CWbemRefreshingSvc@@QAE@ABV01@@Z
; public: __thiscall CWbemRefreshingSvc::XWbemRefrSvc::XWbemRefrSvc(class XWbemRefrSvc *)
??0XWbemRefrSvc@CWbemRefreshingSvc@@QAE@PAV1@@Z
; public: __thiscall CWbemRemoteRefresher::XWbemRemoteRefr::XWbemRemoteRefr(class XWbemRemoteRefr::XWbemRemoteRefr const &)
??0XWbemRemoteRefr@CWbemRemoteRefresher@@QAE@ABV01@@Z
; public: __thiscall CWbemRemoteRefresher::XWbemRemoteRefr::XWbemRemoteRefr(class XWbemRemoteRefr *)
??0XWbemRemoteRefr@CWbemRemoteRefresher@@QAE@PAV1@@Z
; public: __thiscall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::~CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>(void)
??1?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@QAE@XZ
; public: __thiscall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::~CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>(void)
??1?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@QAE@XZ
; public: __thiscall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::~CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>(void)
??1?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@QAE@XZ
; public: __thiscall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::~CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>(void)
??1?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@QAE@XZ
; public: __thiscall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::~CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>(void)
??1?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@QAE@XZ
; public: __thiscall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::~CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>(void)
??1?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@QAE@XZ
; public: __thiscall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::~CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>(void)
??1?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@QAE@XZ
; public: __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::~CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>(void)
??1?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAE@XZ
; public: __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::~CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>(void)
??1?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAE@XZ
; public: __thiscall CRefedPointerArray<class CFastPropertyBagItem>::~CRefedPointerArray<class CFastPropertyBagItem>(void)
??1?$CRefedPointerArray@VCFastPropertyBagItem@@@@QAE@XZ
; public: __thiscall CRefedPointerArray<class CWmiTextSource>::~CRefedPointerArray<class CWmiTextSource>(void)
??1?$CRefedPointerArray@VCWmiTextSource@@@@QAE@XZ
; public: __thiscall CBasicQualifierSet::~CBasicQualifierSet(void)
??1CBasicQualifierSet@@QAE@XZ
; public: __thiscall CClassAndMethods::~CClassAndMethods(void)
??1CClassAndMethods@@QAE@XZ
; public: __thiscall CClassPart::~CClassPart(void)
??1CClassPart@@QAE@XZ
; public: virtual __thiscall CClassQualifierSet::~CClassQualifierSet(void)
??1CClassQualifierSet@@UAE@XZ
; public: virtual __thiscall CFastPropertyBag::~CFastPropertyBag(void)
??1CFastPropertyBag@@UAE@XZ
; public: __thiscall CFixedBSTRArray::~CFixedBSTRArray(void)
??1CFixedBSTRArray@@QAE@XZ
; public: __thiscall CInstancePQSContainer::~CInstancePQSContainer(void)
??1CInstancePQSContainer@@QAE@XZ
; public: __thiscall CInstancePart::~CInstancePart(void)
??1CInstancePart@@QAE@XZ
; public: virtual __thiscall CInstanceQualifierSet::~CInstanceQualifierSet(void)
??1CInstanceQualifierSet@@UAE@XZ
; public: __thiscall CInternalString::~CInternalString(void)
??1CInternalString@@QAE@XZ
; public: __thiscall CLimitationMapping::~CLimitationMapping(void)
??1CLimitationMapping@@QAE@XZ
; public: virtual __thiscall CMethodQualifierSet::~CMethodQualifierSet(void)
??1CMethodQualifierSet@@UAE@XZ
; public: __thiscall CMethodQualifierSetContainer::~CMethodQualifierSetContainer(void)
??1CMethodQualifierSetContainer@@QAE@XZ
; public: __thiscall CPropertyBagItemArray::~CPropertyBagItemArray(void)
??1CPropertyBagItemArray@@QAE@XZ
; public: virtual __thiscall CQualifierSet::~CQualifierSet(void)
??1CQualifierSet@@UAE@XZ
; public: __thiscall CWbemCallSecurity::~CWbemCallSecurity(void)
??1CWbemCallSecurity@@QAE@XZ
; public: virtual __thiscall CWbemClass::~CWbemClass(void)
??1CWbemClass@@UAE@XZ
; public: __thiscall CWbemClassCache::~CWbemClassCache(void)
??1CWbemClassCache@@QAE@XZ
; public: __thiscall CWbemDataPacket::~CWbemDataPacket(void)
??1CWbemDataPacket@@QAE@XZ
; public: virtual __thiscall CWbemEnumMarshaling::~CWbemEnumMarshaling(void)
??1CWbemEnumMarshaling@@UAE@XZ
; public: virtual __thiscall CWbemFetchRefrMgr::~CWbemFetchRefrMgr(void)
??1CWbemFetchRefrMgr@@UAE@XZ
; public: __thiscall CWbemGuidToClassMap::~CWbemGuidToClassMap(void)
??1CWbemGuidToClassMap@@QAE@XZ
; public: virtual __thiscall CWbemInstance::~CWbemInstance(void)
??1CWbemInstance@@UAE@XZ
; public: __thiscall CWbemMtgtDeliverEventPacket::~CWbemMtgtDeliverEventPacket(void)
??1CWbemMtgtDeliverEventPacket@@QAE@XZ
; public: virtual __thiscall CWbemObject::~CWbemObject(void)
??1CWbemObject@@UAE@XZ
; public: __thiscall CWbemObjectArrayPacket::~CWbemObjectArrayPacket(void)
??1CWbemObjectArrayPacket@@QAE@XZ
; public: virtual __thiscall CWbemRefreshingSvc::~CWbemRefreshingSvc(void)
??1CWbemRefreshingSvc@@UAE@XZ
; public: __thiscall CWbemSmartEnumNextPacket::~CWbemSmartEnumNextPacket(void)
??1CWbemSmartEnumNextPacket@@QAE@XZ
; public: __thiscall CWbemThreadSecurityHandle::~CWbemThreadSecurityHandle(void)
??1CWbemThreadSecurityHandle@@QAE@XZ
; public: virtual __thiscall CWmiObjectFactory::~CWmiObjectFactory(void)
??1CWmiObjectFactory@@UAE@XZ
; public: __thiscall CWmiTextSourceArray::~CWmiTextSourceArray(void)
??1CWmiTextSourceArray@@QAE@XZ
; public: __thiscall CWbemRefreshingSvc::XCfgRefrSrvc::~XCfgRefrSrvc(void)
??1XCfgRefrSrvc@CWbemRefreshingSvc@@QAE@XZ
; public: __thiscall CWbemEnumMarshaling::XEnumMarshaling::~XEnumMarshaling(void)
??1XEnumMarshaling@CWbemEnumMarshaling@@QAE@XZ
; public: __thiscall CWbemFetchRefrMgr::XFetchRefrMgr::~XFetchRefrMgr(void)
??1XFetchRefrMgr@CWbemFetchRefrMgr@@QAE@XZ
; public: __thiscall CWmiObjectFactory::XObjectFactory::~XObjectFactory(void)
??1XObjectFactory@CWmiObjectFactory@@QAE@XZ
; public: __thiscall CWmiObjectTextSrc::XObjectTextSrc::~XObjectTextSrc(void)
??1XObjectTextSrc@CWmiObjectTextSrc@@QAE@XZ
; public: __thiscall CWbemRefreshingSvc::XWbemRefrSvc::~XWbemRefrSvc(void)
??1XWbemRefrSvc@CWbemRefreshingSvc@@QAE@XZ
; public: __thiscall CWbemRemoteRefresher::XWbemRemoteRefr::~XWbemRemoteRefr(void)
??1XWbemRemoteRefr@CWbemRemoteRefresher@@QAE@XZ
; public: class CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc> & __thiscall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::operator=(class CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc> const &)
??4?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@QAEAAV0@ABV0@@Z
; public: class CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc> & __thiscall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::operator=(class CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc> const &)
??4?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@QAEAAV0@ABV0@@Z
; public: class CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher> & __thiscall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::operator=(class CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher> const &)
??4?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@QAEAAV0@ABV0@@Z
; public: class CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc> & __thiscall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::operator=(class CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc> const &)
??4?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@QAEAAV0@ABV0@@Z
; public: class CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling> & __thiscall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::operator=(class CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling> const &)
??4?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@QAEAAV0@ABV0@@Z
; public: class CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr> & __thiscall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::operator=(class CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr> const &)
??4?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@QAEAAV0@ABV0@@Z
; public: class CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory> & __thiscall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::operator=(class CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory> const &)
??4?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@QAEAAV0@ABV0@@Z
; public: class CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray> & __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::operator=(class CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray> &)
??4?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEAAV0@AAV0@@Z
; public: class CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray> & __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::operator=(class CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray> &)
??4?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEAAV0@AAV0@@Z
; public: class CRefedPointerArray<class CFastPropertyBagItem> & __thiscall CRefedPointerArray<class CFastPropertyBagItem>::operator=(class CRefedPointerArray<class CFastPropertyBagItem> &)
??4?$CRefedPointerArray@VCFastPropertyBagItem@@@@QAEAAV0@AAV0@@Z
; public: class CRefedPointerArray<class CWmiTextSource> & __thiscall CRefedPointerArray<class CWmiTextSource>::operator=(class CRefedPointerArray<class CWmiTextSource> &)
??4?$CRefedPointerArray@VCWmiTextSource@@@@QAEAAV0@AAV0@@Z
; public: class CBasicQualifierSet & __thiscall CBasicQualifierSet::operator=(class CBasicQualifierSet const &)
??4CBasicQualifierSet@@QAEAAV0@ABV0@@Z
; public: class CClassAndMethods & __thiscall CClassAndMethods::operator=(class CClassAndMethods const &)
??4CClassAndMethods@@QAEAAV0@ABV0@@Z
; public: class CClassPart & __thiscall CClassPart::operator=(class CClassPart const &)
??4CClassPart@@QAEAAV0@ABV0@@Z
; public: class CClassPartContainer & __thiscall CClassPartContainer::operator=(class CClassPartContainer const &)
??4CClassPartContainer@@QAEAAV0@ABV0@@Z
; public: class CClassQualifierSet & __thiscall CClassQualifierSet::operator=(class CClassQualifierSet const &)
??4CClassQualifierSet@@QAEAAV0@ABV0@@Z
; public: class CCompressedString & __thiscall CCompressedString::operator=(class CCompressedString const &)
??4CCompressedString@@QAEAAV0@ABV0@@Z
; public: class CCompressedStringList & __thiscall CCompressedStringList::operator=(class CCompressedStringList const &)
??4CCompressedStringList@@QAEAAV0@ABV0@@Z
; public: class CDataTable & __thiscall CDataTable::operator=(class CDataTable const &)
??4CDataTable@@QAEAAV0@ABV0@@Z
; public: class CDecorationPart & __thiscall CDecorationPart::operator=(class CDecorationPart const &)
??4CDecorationPart@@QAEAAV0@ABV0@@Z
; public: class CDerivationList & __thiscall CDerivationList::operator=(class CDerivationList const &)
??4CDerivationList@@QAEAAV0@ABV0@@Z
; public: class CEmbeddedObject & __thiscall CEmbeddedObject::operator=(class CEmbeddedObject const &)
??4CEmbeddedObject@@QAEAAV0@ABV0@@Z
; public: class CFastHeap & __thiscall CFastHeap::operator=(class CFastHeap const &)
??4CFastHeap@@QAEAAV0@ABV0@@Z
; public: class CFastPropertyBag & __thiscall CFastPropertyBag::operator=(class CFastPropertyBag &)
??4CFastPropertyBag@@QAEAAV0@AAV0@@Z
; public: class CFixedBSTRArray & __thiscall CFixedBSTRArray::operator=(class CFixedBSTRArray const &)
??4CFixedBSTRArray@@QAEAAV0@ABV0@@Z
; public: class CHiPerfLock & __thiscall CHiPerfLock::operator=(class CHiPerfLock const &)
??4CHiPerfLock@@QAEAAV0@ABV0@@Z
; public: class CInstancePQSContainer & __thiscall CInstancePQSContainer::operator=(class CInstancePQSContainer const &)
??4CInstancePQSContainer@@QAEAAV0@ABV0@@Z
; public: class CInstancePart & __thiscall CInstancePart::operator=(class CInstancePart const &)
??4CInstancePart@@QAEAAV0@ABV0@@Z
; public: class CInstancePartContainer & __thiscall CInstancePartContainer::operator=(class CInstancePartContainer const &)
??4CInstancePartContainer@@QAEAAV0@ABV0@@Z
; public: class CInstanceQualifierSet & __thiscall CInstanceQualifierSet::operator=(class CInstanceQualifierSet const &)
??4CInstanceQualifierSet@@QAEAAV0@ABV0@@Z
; public: class CInternalString & __thiscall CInternalString::operator=(class CInternalString const &)
??4CInternalString@@QAEAAV0@ABV0@@Z
; public: int __thiscall CInternalString::operator=(class CCompressedString *)
??4CInternalString@@QAEHPAVCCompressedString@@@Z
; public: int __thiscall CInternalString::operator=(unsigned short const *)
??4CInternalString@@QAEHPBG@Z
; public: class CKnownStringTable & __thiscall CKnownStringTable::operator=(class CKnownStringTable const &)
??4CKnownStringTable@@QAEAAV0@ABV0@@Z
; public: class CLimitationMapping & __thiscall CLimitationMapping::operator=(class CLimitationMapping &)
??4CLimitationMapping@@QAEAAV0@AAV0@@Z
; public: struct CMethodDescription & __thiscall CMethodDescription::operator=(struct CMethodDescription const &)
??4CMethodDescription@@QAEAAU0@ABU0@@Z
; public: class CMethodPart & __thiscall CMethodPart::operator=(class CMethodPart const &)
??4CMethodPart@@QAEAAV0@ABV0@@Z
; public: class CMethodPartContainer & __thiscall CMethodPartContainer::operator=(class CMethodPartContainer const &)
??4CMethodPartContainer@@QAEAAV0@ABV0@@Z
; public: class CMethodQualifierSet & __thiscall CMethodQualifierSet::operator=(class CMethodQualifierSet const &)
??4CMethodQualifierSet@@QAEAAV0@ABV0@@Z
; public: class CMethodQualifierSetContainer & __thiscall CMethodQualifierSetContainer::operator=(class CMethodQualifierSetContainer const &)
??4CMethodQualifierSetContainer@@QAEAAV0@ABV0@@Z
; public: class CPropertyBagItemArray & __thiscall CPropertyBagItemArray::operator=(class CPropertyBagItemArray &)
??4CPropertyBagItemArray@@QAEAAV0@AAV0@@Z
; public: class CPropertyLookupTable & __thiscall CPropertyLookupTable::operator=(class CPropertyLookupTable const &)
??4CPropertyLookupTable@@QAEAAV0@ABV0@@Z
; public: class CQualifierSet & __thiscall CQualifierSet::operator=(class CQualifierSet const &)
??4CQualifierSet@@QAEAAV0@ABV0@@Z
; public: class CQualifierSetList & __thiscall CQualifierSetList::operator=(class CQualifierSetList const &)
??4CQualifierSetList@@QAEAAV0@ABV0@@Z
; public: class CQualifierSetListContainer & __thiscall CQualifierSetListContainer::operator=(class CQualifierSetListContainer const &)
??4CQualifierSetListContainer@@QAEAAV0@ABV0@@Z
; public: class CReservedWordTable & __thiscall CReservedWordTable::operator=(class CReservedWordTable const &)
??4CReservedWordTable@@QAEAAV0@ABV0@@Z
; public: class CSharedLock & __thiscall CSharedLock::operator=(class CSharedLock const &)
??4CSharedLock@@QAEAAV0@ABV0@@Z
; public: class CSystemProperties & __thiscall CSystemProperties::operator=(class CSystemProperties const &)
??4CSystemProperties@@QAEAAV0@ABV0@@Z
; public: class CType & __thiscall CType::operator=(class CType const &)
??4CType@@QAEAAV0@ABV0@@Z
; public: class CUntypedArray & __thiscall CUntypedArray::operator=(class CUntypedArray const &)
??4CUntypedArray@@QAEAAV0@ABV0@@Z
; public: class CWbemCallSecurity & __thiscall CWbemCallSecurity::operator=(class CWbemCallSecurity const &)
??4CWbemCallSecurity@@QAEAAV0@ABV0@@Z
; public: class CWbemClassCache & __thiscall CWbemClassCache::operator=(class CWbemClassCache const &)
??4CWbemClassCache@@QAEAAV0@ABV0@@Z
; public: class CWbemDataPacket & __thiscall CWbemDataPacket::operator=(class CWbemDataPacket const &)
??4CWbemDataPacket@@QAEAAV0@ABV0@@Z
; public: class CWbemEnumMarshaling & __thiscall CWbemEnumMarshaling::operator=(class CWbemEnumMarshaling const &)
??4CWbemEnumMarshaling@@QAEAAV0@ABV0@@Z
; public: class CWbemFetchRefrMgr & __thiscall CWbemFetchRefrMgr::operator=(class CWbemFetchRefrMgr const &)
??4CWbemFetchRefrMgr@@QAEAAV0@ABV0@@Z
; public: class CWbemGuidToClassMap & __thiscall CWbemGuidToClassMap::operator=(class CWbemGuidToClassMap const &)
??4CWbemGuidToClassMap@@QAEAAV0@ABV0@@Z
; public: class CWbemMtgtDeliverEventPacket & __thiscall CWbemMtgtDeliverEventPacket::operator=(class CWbemMtgtDeliverEventPacket const &)
??4CWbemMtgtDeliverEventPacket@@QAEAAV0@ABV0@@Z
; public: class CWbemObjectArrayPacket & __thiscall CWbemObjectArrayPacket::operator=(class CWbemObjectArrayPacket const &)
??4CWbemObjectArrayPacket@@QAEAAV0@ABV0@@Z
; public: class CWbemRefreshingSvc & __thiscall CWbemRefreshingSvc::operator=(class CWbemRefreshingSvc const &)
??4CWbemRefreshingSvc@@QAEAAV0@ABV0@@Z
; public: class CWbemSmartEnumNextPacket & __thiscall CWbemSmartEnumNextPacket::operator=(class CWbemSmartEnumNextPacket const &)
??4CWbemSmartEnumNextPacket@@QAEAAV0@ABV0@@Z
; public: class CWbemThreadSecurityHandle & __thiscall CWbemThreadSecurityHandle::operator=(class CWbemThreadSecurityHandle const &)
??4CWbemThreadSecurityHandle@@QAEAAV0@ABV0@@Z
; public: class CWmiObjectFactory & __thiscall CWmiObjectFactory::operator=(class CWmiObjectFactory const &)
??4CWmiObjectFactory@@QAEAAV0@ABV0@@Z
; public: class CWmiTextSourceArray & __thiscall CWmiTextSourceArray::operator=(class CWmiTextSourceArray &)
??4CWmiTextSourceArray@@QAEAAV0@AAV0@@Z
; public: struct SHARED_LOCK_DATA & __thiscall SHARED_LOCK_DATA::operator=(struct SHARED_LOCK_DATA const &)
??4SHARED_LOCK_DATA@@QAEAAU0@ABU0@@Z
; public: struct SHMEM_HANDLE & __thiscall SHMEM_HANDLE::operator=(struct SHMEM_HANDLE const &)
??4SHMEM_HANDLE@@QAEAAU0@ABU0@@Z
; public: class CWbemRefreshingSvc::XCfgRefrSrvc & __thiscall CWbemRefreshingSvc::XCfgRefrSrvc::operator=(class CWbemRefreshingSvc::XCfgRefrSrvc const &)
??4XCfgRefrSrvc@CWbemRefreshingSvc@@QAEAAV01@ABV01@@Z
; public: class CWbemEnumMarshaling::XEnumMarshaling & __thiscall CWbemEnumMarshaling::XEnumMarshaling::operator=(class CWbemEnumMarshaling::XEnumMarshaling const &)
??4XEnumMarshaling@CWbemEnumMarshaling@@QAEAAV01@ABV01@@Z
; public: class CWbemFetchRefrMgr::XFetchRefrMgr & __thiscall CWbemFetchRefrMgr::XFetchRefrMgr::operator=(class CWbemFetchRefrMgr::XFetchRefrMgr const &)
??4XFetchRefrMgr@CWbemFetchRefrMgr@@QAEAAV01@ABV01@@Z
; public: class CWmiObjectFactory::XObjectFactory & __thiscall CWmiObjectFactory::XObjectFactory::operator=(class CWmiObjectFactory::XObjectFactory const &)
??4XObjectFactory@CWmiObjectFactory@@QAEAAV01@ABV01@@Z
; public: class CWmiObjectTextSrc::XObjectTextSrc & __thiscall CWmiObjectTextSrc::XObjectTextSrc::operator=(class CWmiObjectTextSrc::XObjectTextSrc const &)
??4XObjectTextSrc@CWmiObjectTextSrc@@QAEAAV01@ABV01@@Z
; public: class CWbemRefreshingSvc::XWbemRefrSvc & __thiscall CWbemRefreshingSvc::XWbemRefrSvc::operator=(class CWbemRefreshingSvc::XWbemRefrSvc const &)
??4XWbemRefrSvc@CWbemRefreshingSvc@@QAEAAV01@ABV01@@Z
; public: class CWbemRemoteRefresher::XWbemRemoteRefr & __thiscall CWbemRemoteRefresher::XWbemRemoteRefr::operator=(class CWbemRemoteRefresher::XWbemRemoteRefr const &)
??4XWbemRemoteRefr@CWbemRemoteRefresher@@QAEAAV01@ABV01@@Z
; public: bool __thiscall CInternalString::operator==(class CInternalString const &)const 
??8CInternalString@@QBE_NABV0@@Z
; public: bool __thiscall CInternalString::operator==(unsigned short const *)const 
??8CInternalString@@QBE_NPBG@Z
; public: int __thiscall CQualifierSet::operator==(class CQualifierSet &)
??8CQualifierSet@@QAEHAAV0@@Z
; public: bool __thiscall CInternalString::operator!=(class CInternalString const &)const 
??9CInternalString@@QBE_NABV0@@Z
; public: class CFastPropertyBagItem * __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::operator[](int)
??A?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEPAVCFastPropertyBagItem@@H@Z
; public: class CFastPropertyBagItem const * __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::operator[](int)const 
??A?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QBEPBVCFastPropertyBagItem@@H@Z
; public: class CWmiTextSource * __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::operator[](int)
??A?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEPAVCWmiTextSource@@H@Z
; public: class CWmiTextSource const * __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::operator[](int)const 
??A?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QBEPBVCWmiTextSource@@H@Z
; public: unsigned short * & __thiscall CFixedBSTRArray::operator[](int)
??ACFixedBSTRArray@@QAEAAPAGH@Z
; private: __thiscall CInternalString::operator class CCompressedString *(void)
??BCInternalString@@AAEPAVCCompressedString@@XZ
; private: __thiscall CInternalString::operator class CCompressedString *(void)const 
??BCInternalString@@ABEPAVCCompressedString@@XZ
; public: __thiscall CInternalString::operator class WString(void)const 
??BCInternalString@@QBE?AVWString@@XZ
; public: __thiscall CType::operator unsigned long(void)
??BCType@@QAEKXZ
; public: bool __thiscall CInternalString::operator<(class CInternalString const &)const 
??MCInternalString@@QBE_NABV0@@Z
; public: bool __thiscall CInternalString::operator>(class CInternalString const &)const 
??OCInternalString@@QBE_NABV0@@Z
; const  CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::`vftable'
??_7?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@6B@
; const  CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::`vftable'
??_7?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@6B@
; const  CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::`vftable'
??_7?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@6B@
; const  CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::`vftable'
??_7?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@6B@
; const  CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::`vftable'
??_7?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@6B@
; const  CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::`vftable'
??_7?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@6B@
; const  CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::`vftable'
??_7?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@6B@
; const  CClassAndMethods::`vftable'{for `CClassPartContainer'}
??_7CClassAndMethods@@6BCClassPartContainer@@@
; const  CClassAndMethods::`vftable'{for `CMethodPartContainer'}
??_7CClassAndMethods@@6BCMethodPartContainer@@@
; const  CClassPart::`vftable'{for `CDataTableContainer'}
??_7CClassPart@@6BCDataTableContainer@@@
; const  CClassPart::`vftable'{for `CHeapContainer'}
??_7CClassPart@@6BCHeapContainer@@@
; const  CClassPart::`vftable'{for `CPropertyTableContainer'}
??_7CClassPart@@6BCPropertyTableContainer@@@
; const  CClassPart::`vftable'{for `CQualifierSetContainer'}
??_7CClassPart@@6BCQualifierSetContainer@@@
; const  CClassPartContainer::`vftable'
??_7CClassPartContainer@@6B@
; const  CClassQualifierSet::`vftable'
??_7CClassQualifierSet@@6B@
; const  CFastPropertyBag::`vftable'
??_7CFastPropertyBag@@6B@
; const  CInstancePQSContainer::`vftable'
??_7CInstancePQSContainer@@6B@
; const  CInstancePart::`vftable'{for `CDataTableContainer'}
??_7CInstancePart@@6BCDataTableContainer@@@
; const  CInstancePart::`vftable'{for `CHeapContainer'}
??_7CInstancePart@@6BCHeapContainer@@@
; const  CInstancePart::`vftable'{for `CQualifierSetContainer'}
??_7CInstancePart@@6BCQualifierSetContainer@@@
; const  CInstancePart::`vftable'{for `CQualifierSetListContainer'}
??_7CInstancePart@@6BCQualifierSetListContainer@@@
; const  CInstancePartContainer::`vftable'
??_7CInstancePartContainer@@6B@
; const  CInstanceQualifierSet::`vftable'
??_7CInstanceQualifierSet@@6B@
; const  CMethodPart::`vftable'
??_7CMethodPart@@6B@
; const  CMethodPartContainer::`vftable'
??_7CMethodPartContainer@@6B@
; const  CMethodQualifierSet::`vftable'
??_7CMethodQualifierSet@@6B@
; const  CMethodQualifierSetContainer::`vftable'
??_7CMethodQualifierSetContainer@@6B@
; const  CQualifierSet::`vftable'
??_7CQualifierSet@@6B@
; const  CQualifierSetListContainer::`vftable'
??_7CQualifierSetListContainer@@6B@
; const  CWbemCallSecurity::`vftable'{for `IServerSecurity'}
??_7CWbemCallSecurity@@6BIServerSecurity@@@
; const  CWbemCallSecurity::`vftable'{for `_IWmiCallSec'}
??_7CWbemCallSecurity@@6B_IWmiCallSec@@@
; const  CWbemClass::`vftable'{for `IErrorInfo'}
??_7CWbemClass@@6BIErrorInfo@@@
; const  CWbemClass::`vftable'{for `IMarshal'}
??_7CWbemClass@@6BIMarshal@@@
; const  CWbemClass::`vftable'{for `IWbemConstructClassObject'}
??_7CWbemClass@@6BIWbemConstructClassObject@@@
; const  CWbemClass::`vftable'{for `IWbemPropertySource'}
??_7CWbemClass@@6BIWbemPropertySource@@@
; const  CWbemClass::`vftable'{for `_IWmiObject'}
??_7CWbemClass@@6B_IWmiObject@@@
; const  CWbemEnumMarshaling::`vftable'
??_7CWbemEnumMarshaling@@6B@
; const  CWbemFetchRefrMgr::`vftable'
??_7CWbemFetchRefrMgr@@6B@
; const  CWbemInstance::`vftable'{for `CClassPartContainer'}
??_7CWbemInstance@@6BCClassPartContainer@@@
; const  CWbemInstance::`vftable'{for `CInstancePartContainer'}
??_7CWbemInstance@@6BCInstancePartContainer@@@
; const  CWbemInstance::`vftable'{for `IErrorInfo'}
??_7CWbemInstance@@6BIErrorInfo@@@
; const  CWbemInstance::`vftable'{for `IMarshal'}
??_7CWbemInstance@@6BIMarshal@@@
; const  CWbemInstance::`vftable'{for `IWbemConstructClassObject'}
??_7CWbemInstance@@6BIWbemConstructClassObject@@@
; const  CWbemInstance::`vftable'{for `IWbemPropertySource'}
??_7CWbemInstance@@6BIWbemPropertySource@@@
; const  CWbemInstance::`vftable'{for `_IWmiObject'}
??_7CWbemInstance@@6B_IWmiObject@@@
; const  CWbemObject::`vftable'{for `IErrorInfo'}
??_7CWbemObject@@6BIErrorInfo@@@
; const  CWbemObject::`vftable'{for `IMarshal'}
??_7CWbemObject@@6BIMarshal@@@
; const  CWbemObject::`vftable'{for `IWbemConstructClassObject'}
??_7CWbemObject@@6BIWbemConstructClassObject@@@
; const  CWbemObject::`vftable'{for `IWbemPropertySource'}
??_7CWbemObject@@6BIWbemPropertySource@@@
; const  CWbemObject::`vftable'{for `_IWmiObject'}
??_7CWbemObject@@6B_IWmiObject@@@
; const  CWbemRefreshingSvc::`vftable'
??_7CWbemRefreshingSvc@@6B@
; const  CWbemThreadSecurityHandle::`vftable'
??_7CWbemThreadSecurityHandle@@6B@
; const  CWmiObjectFactory::`vftable'
??_7CWmiObjectFactory@@6B@
; const  CWbemRefreshingSvc::XCfgRefrSrvc::`vftable'
??_7XCfgRefrSrvc@CWbemRefreshingSvc@@6B@
; const  CWbemEnumMarshaling::XEnumMarshaling::`vftable'
??_7XEnumMarshaling@CWbemEnumMarshaling@@6B@
; const  CWbemFetchRefrMgr::XFetchRefrMgr::`vftable'
??_7XFetchRefrMgr@CWbemFetchRefrMgr@@6B@
; const  CWmiObjectFactory::XObjectFactory::`vftable'
??_7XObjectFactory@CWmiObjectFactory@@6B@
; const  CWmiObjectTextSrc::XObjectTextSrc::`vftable'
??_7XObjectTextSrc@CWmiObjectTextSrc@@6B@
; const  CWbemRefreshingSvc::XWbemRefrSvc::`vftable'
??_7XWbemRefrSvc@CWbemRefreshingSvc@@6B@
; const  CWbemRemoteRefresher::XWbemRemoteRefr::`vftable'
??_7XWbemRemoteRefr@CWbemRemoteRefresher@@6B@
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::`default constructor closure'(void)
??_F?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXXZ
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::`default constructor closure'(void)
??_F?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXXZ
; public: void __thiscall CClassQualifierSet::`default constructor closure'(void)
??_FCClassQualifierSet@@QAEXXZ
; public: void __thiscall CInstanceQualifierSet::`default constructor closure'(void)
??_FCInstanceQualifierSet@@QAEXXZ
; public: void __thiscall CWbemClassCache::`default constructor closure'(void)
??_FCWbemClassCache@@QAEXXZ
; protected: unsigned long __thiscall CFastHeap::AbsoluteToHeap(unsigned char *)
?AbsoluteToHeap@CFastHeap@@IAEKPAE@Z
; public: void __thiscall CInternalString::AcquireCompressedString(class CCompressedString *)
?AcquireCompressedString@CInternalString@@QAEXPAVCCompressedString@@@Z
; public: int __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::Add(class CFastPropertyBagItem *)
?Add@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEHPAVCFastPropertyBagItem@@@Z
; public: int __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::Add(class CWmiTextSource *)
?Add@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEHPAVCWmiTextSource@@@Z
; public: long __thiscall CFastPropertyBag::Add(unsigned short const *,long,unsigned long,unsigned long,void *)
?Add@CFastPropertyBag@@QAEJPBGJKKPAX@Z
; protected: virtual long __thiscall CWbemRefreshingSvc::AddEnumToRefresher(struct _WBEM_REFRESHER_ID *,unsigned short const *,long,struct IWbemContext *,unsigned long,struct _WBEM_REFRESH_INFO *,unsigned long *)
?AddEnumToRefresher@CWbemRefreshingSvc@@MAEJPAU_WBEM_REFRESHER_ID@@PBGJPAUIWbemContext@@KPAU_WBEM_REFRESH_INFO@@PAK@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XWbemRefrSvc::AddEnumToRefresher(struct _WBEM_REFRESHER_ID *,unsigned short const *,long,struct IWbemContext *,unsigned long,struct _WBEM_REFRESH_INFO *,unsigned long *)
?AddEnumToRefresher@XWbemRefrSvc@CWbemRefreshingSvc@@UAGJPAU_WBEM_REFRESHER_ID@@PBGJPAUIWbemContext@@KPAU_WBEM_REFRESH_INFO@@PAK@Z
; protected: long __thiscall CWbemRefreshingSvc::AddEnumToRefresher_(int,struct _WBEM_REFRESHER_ID *,class CWbemObject *,unsigned short const *,long,struct IWbemContext *,struct _WBEM_REFRESH_INFO *)
?AddEnumToRefresher_@CWbemRefreshingSvc@@IAEJHPAU_WBEM_REFRESHER_ID@@PAVCWbemObject@@PBGJPAUIWbemContext@@PAU_WBEM_REFRESH_INFO@@@Z
; public: long __thiscall CWbemGuidToClassMap::AddMap(class CGUID &,class CWbemClassToIdMap * *)
?AddMap@CWbemGuidToClassMap@@QAEJAAVCGUID@@PAPAVCWbemClassToIdMap@@@Z
; public: long __thiscall CWbemClassCache::AddObject(struct _GUID &,struct IWbemClassObject *)
?AddObject@CWbemClassCache@@QAEJAAU_GUID@@PAUIWbemClassObject@@@Z
; protected: virtual long __thiscall CWbemRefreshingSvc::AddObjectToRefresher(struct _WBEM_REFRESHER_ID *,unsigned short const *,long,struct IWbemContext *,unsigned long,struct _WBEM_REFRESH_INFO *,unsigned long *)
?AddObjectToRefresher@CWbemRefreshingSvc@@MAEJPAU_WBEM_REFRESHER_ID@@PBGJPAUIWbemContext@@KPAU_WBEM_REFRESH_INFO@@PAK@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XWbemRefrSvc::AddObjectToRefresher(struct _WBEM_REFRESHER_ID *,unsigned short const *,long,struct IWbemContext *,unsigned long,struct _WBEM_REFRESH_INFO *,unsigned long *)
?AddObjectToRefresher@XWbemRefrSvc@CWbemRefreshingSvc@@UAGJPAU_WBEM_REFRESHER_ID@@PBGJPAUIWbemContext@@KPAU_WBEM_REFRESH_INFO@@PAK@Z
; protected: virtual long __thiscall CWbemRefreshingSvc::AddObjectToRefresherByTemplate(struct _WBEM_REFRESHER_ID *,struct IWbemClassObject *,long,struct IWbemContext *,unsigned long,struct _WBEM_REFRESH_INFO *,unsigned long *)
?AddObjectToRefresherByTemplate@CWbemRefreshingSvc@@MAEJPAU_WBEM_REFRESHER_ID@@PAUIWbemClassObject@@JPAUIWbemContext@@KPAU_WBEM_REFRESH_INFO@@PAK@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XWbemRefrSvc::AddObjectToRefresherByTemplate(struct _WBEM_REFRESHER_ID *,struct IWbemClassObject *,long,struct IWbemContext *,unsigned long,struct _WBEM_REFRESH_INFO *,unsigned long *)
?AddObjectToRefresherByTemplate@XWbemRefrSvc@CWbemRefreshingSvc@@UAGJPAU_WBEM_REFRESHER_ID@@PAUIWbemClassObject@@JPAUIWbemContext@@KPAU_WBEM_REFRESH_INFO@@PAK@Z
; protected: long __thiscall CWbemRefreshingSvc::AddObjectToRefresher_(int,struct _WBEM_REFRESHER_ID *,class CWbemObject *,long,struct IWbemContext *,struct _WBEM_REFRESH_INFO *)
?AddObjectToRefresher_@CWbemRefreshingSvc@@IAEJHPAU_WBEM_REFRESHER_ID@@PAVCWbemObject@@JPAUIWbemContext@@PAU_WBEM_REFRESH_INFO@@@Z
; public: long __thiscall CWbemClass::AddPropertyText(class WString &,struct CPropertyLookup *,class CPropertyInformation *,long)
?AddPropertyText@CWbemClass@@QAEJAAVWString@@PAUCPropertyLookup@@PAVCPropertyInformation@@J@Z
; public: static void __stdcall CType::AddPropertyType(class WString &,unsigned short const *)
?AddPropertyType@CType@@SGXAAVWString@@PBG@Z
; protected: long __thiscall CQualifierSet::AddQualifierConflicts(class CVarVector &)
?AddQualifierConflicts@CQualifierSet@@IAEJAAVCVarVector@@@Z
; public: virtual unsigned long __stdcall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::AddRef(void)
?AddRef@?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::AddRef(void)
?AddRef@?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::AddRef(void)
?AddRef@?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::AddRef(void)
?AddRef@?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::AddRef(void)
?AddRef@?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::AddRef(void)
?AddRef@?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::AddRef(void)
?AddRef@?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@UAGKXZ
; public: virtual unsigned long __stdcall CQualifierSet::AddRef(void)
?AddRef@CQualifierSet@@UAGKXZ
; public: virtual unsigned long __stdcall CWbemCallSecurity::AddRef(void)
?AddRef@CWbemCallSecurity@@UAGKXZ
; public: virtual unsigned long __stdcall CWbemObject::AddRef(void)
?AddRef@CWbemObject@@UAGKXZ
; public: virtual unsigned long __stdcall CWbemThreadSecurityHandle::AddRef(void)
?AddRef@CWbemThreadSecurityHandle@@UAGKXZ
; protected: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::AddRefElement(class CFastPropertyBagItem *)
?AddRefElement@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@IAEXPAVCFastPropertyBagItem@@@Z
; protected: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::AddRefElement(class CWmiTextSource *)
?AddRefElement@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@IAEXPAVCWmiTextSource@@@Z
; public: void __thiscall CCompressedStringList::AddString(unsigned short const *)
?AddString@CCompressedStringList@@QAEXPBG@Z
; public: static long __stdcall CMethodDescription::AddText(struct CMethodDescription *,class WString &,class CFastHeap *,long)
?AddText@CMethodDescription@@SGJPAU1@AAVWString@@PAVCFastHeap@@J@Z
; public: long __thiscall CMethodPart::AddText(class WString &,long)
?AddText@CMethodPart@@QAEJAAVWString@@J@Z
; public: int __thiscall CFastHeap::Allocate(unsigned long,unsigned long &)
?Allocate@CFastHeap@@QAEHKAAK@Z
; public: int __thiscall CFastHeap::AllocateString(char const *,unsigned long &)
?AllocateString@CFastHeap@@QAEHPBDAAK@Z
; public: int __thiscall CFastHeap::AllocateString(unsigned short const *,unsigned long &)
?AllocateString@CFastHeap@@QAEHPBGAAK@Z
; public: virtual long __stdcall CWbemObject::AppendArrayPropRangeByHandle(long,long,unsigned long,unsigned long,void *)
?AppendArrayPropRangeByHandle@CWbemObject@@UAGJJJKKPAX@Z
; public: long __thiscall CWbemObject::AppendQualifierArrayRange(unsigned short const *,unsigned short const *,int,long,long,unsigned long,unsigned long,void *)
?AppendQualifierArrayRange@CWbemObject@@QAEJPBG0HJJKKPAX@Z
; public: static long __stdcall CUntypedArray::AppendRange(class CPtrSource *,unsigned long,unsigned long,class CFastHeap *,unsigned long,unsigned long,void *)
?AppendRange@CUntypedArray@@SGJPAVCPtrSource@@KKPAVCFastHeap@@KKPAX@Z
; public: static int __stdcall CWbemObject::AreEqual(class CWbemObject *,class CWbemObject *,long)
?AreEqual@CWbemObject@@SGHPAV1@0J@Z
; public: int __thiscall CDecorationPart::AreKeysRemoved(void)
?AreKeysRemoved@CDecorationPart@@QAEHXZ
; public: int __thiscall CLimitationMapping::ArePropertiesLimited(void)
?ArePropertiesLimited@CLimitationMapping@@QAEHXZ
; public: static long __stdcall CWbemInstance::AsymmetricMerge(class CWbemInstance *,class CWbemInstance *)
?AsymmetricMerge@CWbemInstance@@SGJPAV1@0@Z
; protected: unsigned long __thiscall CFastHeap::AugmentRequest(unsigned long,unsigned long)
?AugmentRequest@CFastHeap@@IAEKKK@Z
; public: virtual long __stdcall CQualifierSet::BeginEnumeration(long)
?BeginEnumeration@CQualifierSet@@UAGJJ@Z
; public: virtual long __stdcall CWbemObject::BeginEnumeration(long)
?BeginEnumeration@CWbemObject@@UAGJJ@Z
; public: virtual long __stdcall CWbemObject::BeginEnumerationEx(long,long)
?BeginEnumerationEx@CWbemObject@@UAGJJJ@Z
; public: virtual long __stdcall CWbemClass::BeginMethodEnumeration(long)
?BeginMethodEnumeration@CWbemClass@@UAGJJ@Z
; public: virtual long __stdcall CWbemInstance::BeginMethodEnumeration(long)
?BeginMethodEnumeration@CWbemInstance@@UAGJJ@Z
; public: void __thiscall CLimitationMapping::Build(int)
?Build@CLimitationMapping@@QAEXH@Z
; public: virtual long __stdcall CWbemObject::CIMTYPEToVARTYPE(long,unsigned short *)
?CIMTYPEToVARTYPE@CWbemObject@@UAGJJPAG@Z
; public: static class CType  __stdcall CType::CVarToType(class CVar &)
?CVarToType@CType@@SG?AV1@AAVCVar@@@Z
; public: class CVar * __thiscall CWbemInstance::CalculateCachedKey(void)
?CalculateCachedKey@CWbemInstance@@QAEPAVCVar@@XZ
; public: long __thiscall CWbemMtgtDeliverEventPacket::CalculateLength(long,struct IWbemClassObject * *,unsigned long *,class CWbemClassToIdMap &,struct _GUID *,int *)
?CalculateLength@CWbemMtgtDeliverEventPacket@@QAEJJPAPAUIWbemClassObject@@PAKAAVCWbemClassToIdMap@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemObjectArrayPacket::CalculateLength(long,struct IWbemClassObject * *,unsigned long *,class CWbemClassToIdMap &,struct _GUID *,int *)
?CalculateLength@CWbemObjectArrayPacket@@QAEJJPAPAUIWbemClassObject@@PAKAAVCWbemClassToIdMap@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemSmartEnumNextPacket::CalculateLength(long,struct IWbemClassObject * *,unsigned long *,class CWbemClassToIdMap &,struct _GUID *,int *)
?CalculateLength@CWbemSmartEnumNextPacket@@QAEJJPAPAUIWbemClassObject@@PAKAAVCWbemClassToIdMap@@PAU_GUID@@PAH@Z
; public: static unsigned long __stdcall CUntypedArray::CalculateNecessarySpaceByLength(int,int)
?CalculateNecessarySpaceByLength@CUntypedArray@@SGKHH@Z
; public: static unsigned long __stdcall CUntypedArray::CalculateNecessarySpaceByType(class CType,int)
?CalculateNecessarySpaceByType@CUntypedArray@@SGKVCType@@H@Z
; public: static int __stdcall CType::CanBeKey(unsigned long)
?CanBeKey@CType@@SGHK@Z
; public: int __thiscall CBasicQualifierSet::CanBeReconciledWith(class CBasicQualifierSet &)
?CanBeReconciledWith@CBasicQualifierSet@@QAEHAAV1@@Z
; public: enum EReconciliation  __thiscall CClassAndMethods::CanBeReconciledWith(class CClassAndMethods &)
?CanBeReconciledWith@CClassAndMethods@@QAE?AW4EReconciliation@@AAV1@@Z
; public: enum EReconciliation  __thiscall CClassPart::CanBeReconciledWith(class CClassPart &)
?CanBeReconciledWith@CClassPart@@QAE?AW4EReconciliation@@AAV1@@Z
; public: enum EReconciliation  __thiscall CMethodPart::CanBeReconciledWith(class CMethodPart &)
?CanBeReconciledWith@CMethodPart@@QAE?AW4EReconciliation@@AAV1@@Z
; public: enum EReconciliation  __thiscall CWbemClass::CanBeReconciledWith(class CWbemClass *)
?CanBeReconciledWith@CWbemClass@@QAE?AW4EReconciliation@@PAV1@@Z
; public: virtual long __thiscall CClassPart::CanContainAbstract(int)
?CanContainAbstract@CClassPart@@UAEJH@Z
; public: virtual long __thiscall CInstancePQSContainer::CanContainAbstract(int)
?CanContainAbstract@CInstancePQSContainer@@UAEJH@Z
; public: virtual long __thiscall CInstancePart::CanContainAbstract(int)
?CanContainAbstract@CInstancePart@@UAEJH@Z
; public: virtual long __thiscall CMethodQualifierSetContainer::CanContainAbstract(int)
?CanContainAbstract@CMethodQualifierSetContainer@@UAEJH@Z
; public: virtual long __thiscall CClassPart::CanContainDynamic(void)
?CanContainDynamic@CClassPart@@UAEJXZ
; public: virtual long __thiscall CInstancePQSContainer::CanContainDynamic(void)
?CanContainDynamic@CInstancePQSContainer@@UAEJXZ
; public: virtual long __thiscall CInstancePart::CanContainDynamic(void)
?CanContainDynamic@CInstancePart@@UAEJXZ
; public: virtual long __thiscall CMethodQualifierSetContainer::CanContainDynamic(void)
?CanContainDynamic@CMethodQualifierSetContainer@@UAEJXZ
; public: virtual long __thiscall CClassPart::CanContainKey(void)
?CanContainKey@CClassPart@@UAEJXZ
; public: virtual long __thiscall CInstancePQSContainer::CanContainKey(void)
?CanContainKey@CInstancePQSContainer@@UAEJXZ
; public: virtual long __thiscall CInstancePart::CanContainKey(void)
?CanContainKey@CInstancePart@@UAEJXZ
; public: virtual long __thiscall CMethodQualifierSetContainer::CanContainKey(void)
?CanContainKey@CMethodQualifierSetContainer@@UAEJXZ
; public: int __thiscall CClassPart::CanContainKeyedProps(void)
?CanContainKeyedProps@CClassPart@@QAEHXZ
; public: virtual long __thiscall CClassPart::CanContainSingleton(void)
?CanContainSingleton@CClassPart@@UAEJXZ
; public: virtual long __thiscall CInstancePQSContainer::CanContainSingleton(void)
?CanContainSingleton@CInstancePQSContainer@@UAEJXZ
; public: virtual long __thiscall CInstancePart::CanContainSingleton(void)
?CanContainSingleton@CInstancePart@@UAEJXZ
; public: virtual long __thiscall CMethodQualifierSetContainer::CanContainSingleton(void)
?CanContainSingleton@CMethodQualifierSetContainer@@UAEJXZ
; public: virtual int __thiscall CClassPart::CanHaveCimtype(unsigned short const *)
?CanHaveCimtype@CClassPart@@UAEHPBG@Z
; public: virtual int __thiscall CInstancePQSContainer::CanHaveCimtype(unsigned short const *)
?CanHaveCimtype@CInstancePQSContainer@@UAEHPBG@Z
; public: virtual int __thiscall CInstancePart::CanHaveCimtype(unsigned short const *)
?CanHaveCimtype@CInstancePart@@UAEHPBG@Z
; public: virtual int __thiscall CMethodQualifierSetContainer::CanHaveCimtype(unsigned short const *)
?CanHaveCimtype@CMethodQualifierSetContainer@@UAEHPBG@Z
; public: int __thiscall CCompressedString::CheapCompare(class CCompressedString const &)const 
?CheapCompare@CCompressedString@@QBEHABV1@@Z
; public: int __thiscall CClassPart::CheckBoolQualifier(unsigned short const *)
?CheckBoolQualifier@CClassPart@@QAEHPBG@Z
; public: int __thiscall CWbemObject::CheckBooleanPropQual(unsigned short const *,unsigned short const *)
?CheckBooleanPropQual@CWbemObject@@QAEHPBG0@Z
; public: static int __stdcall CUntypedArray::CheckCVarVector(class CVarVector &,unsigned long)
?CheckCVarVector@CUntypedArray@@SGHAAVCVarVector@@K@Z
; protected: long __thiscall CMethodPart::CheckDuplicateParameters(class CWbemObject *,class CWbemObject *)
?CheckDuplicateParameters@CMethodPart@@IAEJPAVCWbemObject@@0@Z
; protected: long __thiscall CMethodPart::CheckIds(class CWbemClass *,class CWbemClass *)
?CheckIds@CMethodPart@@IAEJPAVCWbemClass@@0@Z
; public: static int __stdcall CUntypedArray::CheckIntervalDateTime(class CVarVector &)
?CheckIntervalDateTime@CUntypedArray@@SGHAAVCVarVector@@@Z
; public: int __thiscall CClassPart::CheckLocalBoolQualifier(unsigned short const *)
?CheckLocalBoolQualifier@CClassPart@@QAEHPBG@Z
; public: static long __stdcall CUntypedArray::CheckRangeSize(unsigned long,unsigned long,unsigned long,unsigned long,void *)
?CheckRangeSize@CUntypedArray@@SGJKKKKPAX@Z
; protected: static long __stdcall CUntypedArray::CheckRangeSizeForGet(unsigned long,unsigned long,unsigned long,unsigned long,unsigned long *)
?CheckRangeSizeForGet@CUntypedArray@@KGJKKKKPAK@Z
; private: void __thiscall CWbemClassCache::Clear(void)
?Clear@CWbemClassCache@@AAEXXZ
; private: void __thiscall CWbemGuidToClassMap::Clear(void)
?Clear@CWbemGuidToClassMap@@AAEXXZ
; public: void __thiscall CWbemInstance::ClearCachedKey(void)
?ClearCachedKey@CWbemInstance@@QAEXXZ
; public: virtual void __thiscall CWbemInstance::ClearCachedKeyValue(void)
?ClearCachedKeyValue@CWbemInstance@@UAEXXZ
; public: virtual long __stdcall CWbemClass::ClearWriteOnlyProperties(void)
?ClearWriteOnlyProperties@CWbemClass@@UAGJXZ
; public: virtual long __stdcall CWbemInstance::ClearWriteOnlyProperties(void)
?ClearWriteOnlyProperties@CWbemInstance@@UAGJXZ
; public: virtual long __stdcall CWbemClass::Clone(struct IWbemClassObject * *)
?Clone@CWbemClass@@UAGJPAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemInstance::Clone(struct IWbemClassObject * *)
?Clone@CWbemInstance@@UAGJPAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemClass::CloneAndDecorate(long,unsigned short *,unsigned short *,struct IWbemClassObject * *)
?CloneAndDecorate@CWbemClass@@UAGJJPAG0PAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemInstance::CloneAndDecorate(long,unsigned short *,unsigned short *,struct IWbemClassObject * *)
?CloneAndDecorate@CWbemInstance@@UAGJJPAG0PAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemClass::CloneEx(long,struct _IWmiObject *)
?CloneEx@CWbemClass@@UAGJJPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::CloneEx(long,struct _IWmiObject *)
?CloneEx@CWbemInstance@@UAGJJPAU_IWmiObject@@@Z
; public: long __thiscall CWbemThreadSecurityHandle::CloneProcessContext(void)
?CloneProcessContext@CWbemThreadSecurityHandle@@QAEJXZ
; public: long __thiscall CWbemThreadSecurityHandle::CloneRpcContext(struct IServerSecurity *)
?CloneRpcContext@CWbemThreadSecurityHandle@@QAEJPAUIServerSecurity@@@Z
; public: long __thiscall CWbemThreadSecurityHandle::CloneThreadContext(unsigned long)
?CloneThreadContext@CWbemThreadSecurityHandle@@QAEJK@Z
; public: void __thiscall CClassAndMethods::Compact(void)
?Compact@CClassAndMethods@@QAEXXZ
; public: void __thiscall CClassPart::Compact(void)
?Compact@CClassPart@@QAEXXZ
; public: void __thiscall CInstancePart::Compact(bool)
?Compact@CInstancePart@@QAEX_N@Z
; public: void __thiscall CMethodPart::Compact(void)
?Compact@CMethodPart@@QAEXXZ
; public: virtual void __thiscall CWbemClass::CompactAll(void)
?CompactAll@CWbemClass@@UAEXXZ
; public: virtual void __thiscall CWbemInstance::CompactAll(void)
?CompactAll@CWbemInstance@@UAEXXZ
; public: void __thiscall CWbemInstance::CompactClass(void)
?CompactClass@CWbemInstance@@QAEXXZ
; public: int __thiscall CBasicQualifierSet::Compare(class CBasicQualifierSet &,unsigned char,unsigned short const * *,unsigned long)
?Compare@CBasicQualifierSet@@QAEHAAV1@EPAPBGK@Z
; public: int __thiscall CCompressedString::Compare(class CCompressedString const &)const 
?Compare@CCompressedString@@QBEHABV1@@Z
; public: int __thiscall CCompressedString::Compare(char const *)const 
?Compare@CCompressedString@@QBEHPBD@Z
; public: int __thiscall CCompressedString::Compare(unsigned short const *)const 
?Compare@CCompressedString@@QBEHPBG@Z
; public: int __thiscall CInternalString::Compare(class CInternalString const &)const 
?Compare@CInternalString@@QBEHABV1@@Z
; public: int __thiscall CInternalString::Compare(unsigned short const *)const 
?Compare@CInternalString@@QBEHPBG@Z
; public: int __thiscall CQualifierSet::Compare(class CQualifierSet &,class CFixedBSTRArray *,int)
?Compare@CQualifierSet@@QAEHAAV1@PAVCFixedBSTRArray@@H@Z
; public: virtual long __stdcall CWbemObject::CompareClassParts(struct IWbemClassObject *,long)
?CompareClassParts@CWbemObject@@UAGJPAUIWbemClassObject@@J@Z
; public: int __thiscall CClassPart::CompareDefs(class CClassPart &)
?CompareDefs@CClassPart@@QAEHAAV1@@Z
; public: virtual long __stdcall CWbemClass::CompareDerivedMostClass(long,struct _IWmiObject *)
?CompareDerivedMostClass@CWbemClass@@UAGJJPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::CompareDerivedMostClass(long,struct _IWmiObject *)
?CompareDerivedMostClass@CWbemInstance@@UAGJJPAU_IWmiObject@@@Z
; public: enum EReconciliation  __thiscall CClassPart::CompareExactMatch(class CClassPart &,int)
?CompareExactMatch@CClassPart@@QAE?AW4EReconciliation@@AAV1@H@Z
; public: enum EReconciliation  __thiscall CMethodPart::CompareExactMatch(class CMethodPart &)
?CompareExactMatch@CMethodPart@@QAE?AW4EReconciliation@@AAV1@@Z
; public: int __thiscall CBasicQualifierSet::CompareLocalizedSet(class CBasicQualifierSet &)
?CompareLocalizedSet@CBasicQualifierSet@@QAEHAAV1@@Z
; public: long __thiscall CWbemClass::CompareMostDerivedClass(class CWbemClass *)
?CompareMostDerivedClass@CWbemClass@@QAEJPAV1@@Z
; public: int __thiscall CCompressedString::CompareNoCase(class CCompressedString const &)const 
?CompareNoCase@CCompressedString@@QBEHABV1@@Z
; public: int __thiscall CCompressedString::CompareNoCase(char const *)const 
?CompareNoCase@CCompressedString@@QBEHPBD@Z
; public: int __thiscall CCompressedString::CompareNoCase(unsigned short const *)const 
?CompareNoCase@CCompressedString@@QBEHPBG@Z
; public: enum EReconciliation  __thiscall CClassAndMethods::CompareTo(class CClassAndMethods &)
?CompareTo@CClassAndMethods@@QAE?AW4EReconciliation@@AAV1@@Z
; public: int __thiscall CDecorationPart::CompareTo(class CDecorationPart &)
?CompareTo@CDecorationPart@@QAEHAAV1@@Z
; public: long __thiscall CMethodPart::CompareTo(long,class CMethodPart &)
?CompareTo@CMethodPart@@QAEJJAAV1@@Z
; public: virtual long __stdcall CQualifierSet::CompareTo(long,struct IWbemQualifierSet *)
?CompareTo@CQualifierSet@@UAGJJPAUIWbemQualifierSet@@@Z
; public: virtual long __stdcall CWbemClass::CompareTo(long,struct IWbemClassObject *)
?CompareTo@CWbemClass@@UAGJJPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemObject::CompareTo(long,struct IWbemClassObject *)
?CompareTo@CWbemObject@@UAGJJPAUIWbemClassObject@@@Z
; protected: static int __stdcall CCompressedString::CompareUnicodeToAscii(unsigned short const *,char const *)
?CompareUnicodeToAscii@CCompressedString@@KGHPBGPBD@Z
; protected: static int __stdcall CCompressedString::CompareUnicodeToAsciiNoCase(unsigned short const *,char const *,int)
?CompareUnicodeToAsciiNoCase@CCompressedString@@KGHPBGPBDH@Z
; public: static unsigned long __stdcall CBasicQualifierSet::ComputeMergeSpace(unsigned char *,class CFastHeap *,unsigned char *,class CFastHeap *,int)
?ComputeMergeSpace@CBasicQualifierSet@@SGKPAEPAVCFastHeap@@01H@Z
; public: static int __stdcall CCompressedString::ComputeNecessarySpace(char const *)
?ComputeNecessarySpace@CCompressedString@@SGHPBD@Z
; public: static int __stdcall CCompressedString::ComputeNecessarySpace(unsigned short const *)
?ComputeNecessarySpace@CCompressedString@@SGHPBG@Z
; public: static int __stdcall CCompressedString::ComputeNecessarySpace(unsigned short const *,int &)
?ComputeNecessarySpace@CCompressedString@@SGHPBGAAH@Z
; public: unsigned long __thiscall CCompressedStringList::ComputeNecessarySpace(class CCompressedString *)
?ComputeNecessarySpace@CCompressedStringList@@QAEKPAVCCompressedString@@@Z
; public: static unsigned long __stdcall CDataTable::ComputeNecessarySpace(int,int)
?ComputeNecessarySpace@CDataTable@@SGKHH@Z
; public: static unsigned long __stdcall CDecorationPart::ComputeNecessarySpace(unsigned short const *,unsigned short const *)
?ComputeNecessarySpace@CDecorationPart@@SGKPBG0@Z
; public: static unsigned long __stdcall CInstancePart::ComputeNecessarySpace(class CClassPart *)
?ComputeNecessarySpace@CInstancePart@@SGKPAVCClassPart@@@Z
; public: static unsigned long __stdcall CQualifierSetList::ComputeNecessarySpace(int)
?ComputeNecessarySpace@CQualifierSetList@@SGKH@Z
; public: static unsigned long __stdcall CBasicQualifierSet::ComputeNecessarySpaceForPropagation(unsigned char *,unsigned char)
?ComputeNecessarySpaceForPropagation@CBasicQualifierSet@@SGKPAEE@Z
; public: static unsigned long __stdcall CQualifierSetList::ComputeRealSpace(int)
?ComputeRealSpace@CQualifierSetList@@SGKH@Z
; public: static unsigned long __stdcall CBasicQualifierSet::ComputeUnmergedSpace(unsigned char *)
?ComputeUnmergedSpace@CBasicQualifierSet@@SGKPAE@Z
; public: unsigned char * __thiscall CInstancePart::ConvertToClass(class CClassPart &,unsigned long,unsigned char *)
?ConvertToClass@CInstancePart@@QAEPAEAAVCClassPart@@KPAE@Z
; public: long __thiscall CWbemInstance::ConvertToClass(class CWbemClass *,class CWbemInstance * *)
?ConvertToClass@CWbemInstance@@QAEJPAVCWbemClass@@PAPAV1@@Z
; public: long __thiscall CWbemInstance::ConvertToMergedInstance(void)
?ConvertToMergedInstance@CWbemInstance@@QAEJXZ
; public: void __thiscall CCompressedString::ConvertToUnicode(unsigned short *)const 
?ConvertToUnicode@CCompressedString@@QBEXPAG@Z
; public: void __thiscall CFastHeap::Copy(unsigned long,unsigned long,unsigned long)
?Copy@CFastHeap@@QAEXKKK@Z
; public: long __thiscall CFastPropertyBag::Copy(class CFastPropertyBag const &)
?Copy@CFastPropertyBag@@QAEJABV1@@Z
; public: long __thiscall CWbemInstance::CopyActualTransferBlob(long,unsigned char *)
?CopyActualTransferBlob@CWbemInstance@@QAEJJPAE@Z
; public: long __thiscall CWbemInstance::CopyBlob(unsigned char *,int)
?CopyBlob@CWbemInstance@@QAEJPAEH@Z
; public: virtual long __thiscall CWbemClass::CopyBlobOf(class CWbemObject *)
?CopyBlobOf@CWbemClass@@UAEJPAVCWbemObject@@@Z
; public: virtual long __thiscall CWbemInstance::CopyBlobOf(class CWbemObject *)
?CopyBlobOf@CWbemInstance@@UAEJPAVCWbemObject@@@Z
; public: unsigned char * __thiscall CCompressedStringList::CopyData(unsigned char *)
?CopyData@CCompressedStringList@@QAEPAEPAE@Z
; protected: void __thiscall CLimitationMapping::CopyInfo(class CPropertyInformation &,class CPropertyInformation const &)
?CopyInfo@CLimitationMapping@@IAEXAAVCPropertyInformation@@ABV2@@Z
; public: virtual long __stdcall CWbemClass::CopyInstanceData(long,struct _IWmiObject *)
?CopyInstanceData@CWbemClass@@UAGJJPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::CopyInstanceData(long,struct _IWmiObject *)
?CopyInstanceData@CWbemInstance@@UAGJJPAU_IWmiObject@@@Z
; public: long __thiscall CQualifierSet::CopyLocalQualifiers(class CQualifierSet &)
?CopyLocalQualifiers@CQualifierSet@@QAEJAAV1@@Z
; public: void __thiscall CDataTable::CopyNullness(class CDataTable *)
?CopyNullness@CDataTable@@QAEXPAV1@@Z
; public: long __thiscall CClassPart::CopyParentProperty(class CClassPart &,unsigned short const *)
?CopyParentProperty@CClassPart@@QAEJAAV1@PBG@Z
; public: static int __stdcall CCompressedString::CopyToNewHeap(unsigned long,class CFastHeap *,class CFastHeap *,unsigned long &)
?CopyToNewHeap@CCompressedString@@SGHKPAVCFastHeap@@0AAK@Z
; public: static int __stdcall CEmbeddedObject::CopyToNewHeap(unsigned long,class CFastHeap *,class CFastHeap *,unsigned long &)
?CopyToNewHeap@CEmbeddedObject@@SGHKPAVCFastHeap@@0AAK@Z
; public: static int __stdcall CUntypedArray::CopyToNewHeap(unsigned long,class CType,class CFastHeap *,class CFastHeap *,unsigned long &)
?CopyToNewHeap@CUntypedArray@@SGHKVCType@@PAVCFastHeap@@1AAK@Z
; public: static long __stdcall CWbemInstance::CopyTransferArrayBlob(class CWbemInstance *,long,long,unsigned char *,class CFlexArray &,long *)
?CopyTransferArrayBlob@CWbemInstance@@SGJPAV1@JJPAEAAVCFlexArray@@PAJ@Z
; public: long __thiscall CWbemInstance::CopyTransferBlob(long,long,unsigned char *)
?CopyTransferBlob@CWbemInstance@@QAEJJJPAE@Z
; public: void __thiscall CDecorationPart::Create(unsigned char,unsigned short const *,unsigned short const *,unsigned char *)
?Create@CDecorationPart@@QAEXEPBG0PAE@Z
; public: void __thiscall CFixedBSTRArray::Create(int)
?Create@CFixedBSTRArray@@QAEXH@Z
; public: void __thiscall CInstancePQSContainer::Create(class CQualifierSetList *,int,class CClassPart *,unsigned long)
?Create@CInstancePQSContainer@@QAEXPAVCQualifierSetList@@HPAVCClassPart@@K@Z
; public: unsigned char * __thiscall CInstancePart::Create(unsigned char *,class CClassPart *,class CInstancePartContainer *)
?Create@CInstancePart@@QAEPAEPAEPAVCClassPart@@PAVCInstancePartContainer@@@Z
; public: long __thiscall CWmiObjectFactory::Create(struct IUnknown *,unsigned long,struct _GUID const &,struct _GUID const &,void * *)
?Create@CWmiObjectFactory@@QAEJPAUIUnknown@@KABU_GUID@@1PAPAX@Z
; public: virtual long __stdcall CWmiObjectFactory::XObjectFactory::Create(struct IUnknown *,unsigned long,struct _GUID const &,struct _GUID const &,void * *)
?Create@XObjectFactory@CWmiObjectFactory@@UAGJPAUIUnknown@@KABU_GUID@@1PAPAX@Z
; public: unsigned short * __thiscall CCompressedString::CreateBSTRCopy(void)const 
?CreateBSTRCopy@CCompressedString@@QBEPAGXZ
; public: class CVarVector * __thiscall CUntypedArray::CreateCVarVector(class CType,class CFastHeap *)
?CreateCVarVector@CUntypedArray@@QAEPAVCVarVector@@VCType@@PAVCFastHeap@@@Z
; public: long __thiscall CWbemClass::CreateDerivedClass(class CWbemClass * *)
?CreateDerivedClass@CWbemClass@@QAEJPAPAV1@@Z
; public: long __thiscall CWbemClass::CreateDerivedClass(class CWbemClass *,int,class CDecorationPart *)
?CreateDerivedClass@CWbemClass@@QAEJPAV1@HPAVCDecorationPart@@@Z
; public: unsigned char * __thiscall CClassAndMethods::CreateDerivedPart(unsigned char *,unsigned long)
?CreateDerivedPart@CClassAndMethods@@QAEPAEPAEK@Z
; public: unsigned char * __thiscall CClassPart::CreateDerivedPart(unsigned char *,int)
?CreateDerivedPart@CClassPart@@QAEPAEPAEH@Z
; public: unsigned char * __thiscall CMethodPart::CreateDerivedPart(unsigned char *,unsigned long)
?CreateDerivedPart@CMethodPart@@QAEPAEPAEK@Z
; public: static int __stdcall CMethodDescription::CreateDerivedVersion(struct CMethodDescription *,struct CMethodDescription *,class CFastHeap *,class CFastHeap *)
?CreateDerivedVersion@CMethodDescription@@SGHPAU1@0PAVCFastHeap@@1@Z
; public: static unsigned char * __stdcall CBasicQualifierSet::CreateEmpty(unsigned char *)
?CreateEmpty@CBasicQualifierSet@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CClassAndMethods::CreateEmpty(unsigned char *)
?CreateEmpty@CClassAndMethods@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CClassPart::CreateEmpty(unsigned char *)
?CreateEmpty@CClassPart@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CCompressedString::CreateEmpty(unsigned char *)
?CreateEmpty@CCompressedString@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CCompressedStringList::CreateEmpty(unsigned char *)
?CreateEmpty@CCompressedStringList@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CDataTable::CreateEmpty(unsigned char *)
?CreateEmpty@CDataTable@@SGPAEPAE@Z
; public: unsigned char * __thiscall CDecorationPart::CreateEmpty(unsigned char,unsigned char *)
?CreateEmpty@CDecorationPart@@QAEPAEEPAE@Z
; public: static unsigned char * __stdcall CFastHeap::CreateEmpty(unsigned char *)
?CreateEmpty@CFastHeap@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CMethodPart::CreateEmpty(unsigned char *)
?CreateEmpty@CMethodPart@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CPropertyLookupTable::CreateEmpty(unsigned char *)
?CreateEmpty@CPropertyLookupTable@@SGPAEPAE@Z
; public: static unsigned char * __stdcall CWbemClass::CreateEmpty(unsigned char *)
?CreateEmpty@CWbemClass@@SGPAEPAE@Z
; public: static class CWbemClass * __stdcall CWbemClass::CreateFromBlob2(class CWbemClass *,unsigned char *,unsigned short *,unsigned short *)
?CreateFromBlob2@CWbemClass@@SGPAV1@PAV1@PAEPAG2@Z
; public: static class CWbemInstance * __stdcall CWbemInstance::CreateFromBlob2(class CWbemClass *,unsigned char *,unsigned short *,unsigned short *)
?CreateFromBlob2@CWbemInstance@@SGPAV1@PAVCWbemClass@@PAEPAG2@Z
; public: static class CWbemClass * __stdcall CWbemClass::CreateFromBlob(class CWbemClass *,unsigned char *,unsigned int)
?CreateFromBlob@CWbemClass@@SGPAV1@PAV1@PAEI@Z
; public: static class CWbemInstance * __stdcall CWbemInstance::CreateFromBlob(class CWbemClass *,unsigned char *,unsigned int)
?CreateFromBlob@CWbemInstance@@SGPAV1@PAVCWbemClass@@PAEI@Z
; public: static class CWbemObject * __stdcall CWbemObject::CreateFromMemory(unsigned char *,int,int,class CBlobControl &)
?CreateFromMemory@CWbemObject@@SGPAV1@PAEHHAAVCBlobControl@@@Z
; public: static class CWbemObject * __stdcall CWbemObject::CreateFromStream(struct IStream *)
?CreateFromStream@CWbemObject@@SGPAV1@PAUIStream@@@Z
; public: virtual long __stdcall CWmiObjectTextSrc::XObjectTextSrc::CreateFromText(long,unsigned short *,unsigned long,struct IWbemContext *,struct IWbemClassObject * *)
?CreateFromText@XObjectTextSrc@CWmiObjectTextSrc@@UAGJJPAGKPAUIWbemContext@@PAPAUIWbemClassObject@@@Z
; public: unsigned short * __thiscall CInternalString::CreateLPWSTRCopy(void)const 
?CreateLPWSTRCopy@CInternalString@@QBEPAGXZ
; public: unsigned char * __thiscall CClassAndMethods::CreateLimitedRepresentation(class CLimitationMapping *,int,unsigned char *,int &)
?CreateLimitedRepresentation@CClassAndMethods@@QAEPAEPAVCLimitationMapping@@HPAEAAH@Z
; public: unsigned char * __thiscall CClassPart::CreateLimitedRepresentation(class CLimitationMapping *,int,unsigned char *,int &)
?CreateLimitedRepresentation@CClassPart@@QAEPAEPAVCLimitationMapping@@HPAEAAH@Z
; public: unsigned char * __thiscall CDataTable::CreateLimitedRepresentation(class CLimitationMapping *,int,class CFastHeap *,class CFastHeap *,unsigned char *)
?CreateLimitedRepresentation@CDataTable@@QAEPAEPAVCLimitationMapping@@HPAVCFastHeap@@1PAE@Z
; public: unsigned char * __thiscall CDecorationPart::CreateLimitedRepresentation(class CLimitationMapping *,unsigned char *)
?CreateLimitedRepresentation@CDecorationPart@@QAEPAEPAVCLimitationMapping@@PAE@Z
; public: unsigned char * __thiscall CDerivationList::CreateLimitedRepresentation(class CLimitationMapping *,unsigned char *)
?CreateLimitedRepresentation@CDerivationList@@QAEPAEPAVCLimitationMapping@@PAE@Z
; public: unsigned char * __thiscall CInstancePart::CreateLimitedRepresentation(class CLimitationMapping *,int,unsigned char *)
?CreateLimitedRepresentation@CInstancePart@@QAEPAEPAVCLimitationMapping@@HPAE@Z
; public: unsigned char * __thiscall CPropertyLookupTable::CreateLimitedRepresentation(class CLimitationMapping *,class CFastHeap *,unsigned char *,int &)
?CreateLimitedRepresentation@CPropertyLookupTable@@QAEPAEPAVCLimitationMapping@@PAVCFastHeap@@PAEAAH@Z
; public: unsigned char * __thiscall CQualifierSetList::CreateLimitedRepresentation(class CLimitationMapping *,class CFastHeap *,class CFastHeap *,unsigned char *)
?CreateLimitedRepresentation@CQualifierSetList@@QAEPAEPAVCLimitationMapping@@PAVCFastHeap@@1PAE@Z
; public: static unsigned char * __stdcall CQualifierSetList::CreateListOfEmpties(unsigned char *,int)
?CreateListOfEmpties@CQualifierSetList@@SGPAEPAEH@Z
; protected: long __thiscall CMethodPart::CreateMethod(unsigned short const *,class CWbemObject *,class CWbemObject *)
?CreateMethod@CMethodPart@@IAEJPBGPAVCWbemObject@@1@Z
; public: int __thiscall CFastHeap::CreateNoCaseStringHeapPtr(unsigned short const *,unsigned long &)
?CreateNoCaseStringHeapPtr@CFastHeap@@QAEHPBGAAK@Z
; public: unsigned char * __thiscall CFastHeap::CreateOutOfLine(unsigned char *,unsigned long)
?CreateOutOfLine@CFastHeap@@QAEPAEPAEK@Z
; protected: long __thiscall CWbemRefreshingSvc::CreateRefreshableObjectTemplate(unsigned short const *,long,struct IWbemClassObject * *)
?CreateRefreshableObjectTemplate@CWbemRefreshingSvc@@IAEJPBGJPAPAUIWbemClassObject@@@Z
; public: static int __stdcall CMethodDescription::CreateUnmergedVersion(struct CMethodDescription *,struct CMethodDescription *,class CFastHeap *,class CFastHeap *)
?CreateUnmergedVersion@CMethodDescription@@SGHPAU1@0PAVCFastHeap@@1@Z
; public: class WString  __thiscall CCompressedString::CreateWStringCopy(void)const 
?CreateWStringCopy@CCompressedString@@QBE?AVWString@@XZ
; public: unsigned char * __thiscall CCompressedStringList::CreateWithExtra(unsigned char *,class CCompressedString *)
?CreateWithExtra@CCompressedStringList@@QAEPAEPAEPAVCCompressedString@@@Z
; public: virtual long __thiscall CWbemClass::Decorate(unsigned short const *,unsigned short const *)
?Decorate@CWbemClass@@UAEJPBG0@Z
; public: virtual long __thiscall CWbemInstance::Decorate(unsigned short const *,unsigned short const *)
?Decorate@CWbemInstance@@UAEJPBG0@Z
; public: static void __stdcall CBasicQualifierSet::Delete(unsigned char *,class CFastHeap *)
?Delete@CBasicQualifierSet@@SGXPAEPAVCFastHeap@@@Z
; public: virtual long __stdcall CQualifierSet::Delete(unsigned short const *)
?Delete@CQualifierSet@@UAGJPBG@Z
; public: void __thiscall CUntypedArray::Delete(class CType,class CFastHeap *)
?Delete@CUntypedArray@@QAEXVCType@@PAVCFastHeap@@@Z
; public: virtual long __stdcall CWbemClass::Delete(unsigned short const *)
?Delete@CWbemClass@@UAGJPBG@Z
; public: virtual long __stdcall CWbemInstance::Delete(unsigned short const *)
?Delete@CWbemInstance@@UAGJPBG@Z
; public: long __thiscall CMethodPart::DeleteMethod(unsigned short const *)
?DeleteMethod@CMethodPart@@QAEJPBG@Z
; public: virtual long __stdcall CWbemClass::DeleteMethod(unsigned short const *)
?DeleteMethod@CWbemClass@@UAGJPBG@Z
; public: virtual long __stdcall CWbemInstance::DeleteMethod(unsigned short const *)
?DeleteMethod@CWbemInstance@@UAGJPBG@Z
; public: long __thiscall CClassPart::DeleteProperty(unsigned short const *)
?DeleteProperty@CClassPart@@QAEJPBG@Z
; public: void __thiscall CClassPart::DeleteProperty(int)
?DeleteProperty@CClassPart@@QAEXH@Z
; public: void __thiscall CInstancePart::DeleteProperty(class CPropertyInformation *)
?DeleteProperty@CInstancePart@@QAEXPAVCPropertyInformation@@@Z
; public: void __thiscall CPropertyLookupTable::DeleteProperty(struct CPropertyLookup *,int)
?DeleteProperty@CPropertyLookupTable@@QAEXPAUCPropertyLookup@@H@Z
; public: long __thiscall CWbemInstance::DeleteProperty(int)
?DeleteProperty@CWbemInstance@@QAEJH@Z
; public: long __thiscall CQualifierSet::DeleteQualifier(unsigned short const *,int)
?DeleteQualifier@CQualifierSet@@QAEJPBGH@Z
; public: void __thiscall CQualifierSetList::DeleteQualifierSet(int)
?DeleteQualifierSet@CQualifierSetList@@QAEXH@Z
; protected: void __thiscall CMethodPart::DeleteSignature(int,int)
?DeleteSignature@CMethodPart@@IAEXHH@Z
; protected: static long __stdcall CWbemObject::DisabledValidateObject(class CWbemObject *)
?DisabledValidateObject@CWbemObject@@KGJPAV1@@Z
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::Discard(int)
?Discard@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXH@Z
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::Discard(int)
?Discard@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXH@Z
; public: virtual long __stdcall CWbemObject::DisconnectObject(unsigned long)
?DisconnectObject@CWbemObject@@UAGJK@Z
; protected: int __thiscall CMethodPart::DoSignaturesMatch(int,enum METHOD_SIGNATURE_TYPE,class CWbemObject *)
?DoSignaturesMatch@CMethodPart@@IAEHHW4METHOD_SIGNATURE_TYPE@@PAVCWbemObject@@@Z
; public: static int __stdcall CType::DoesCIMTYPEMatchVARTYPE(long,unsigned short)
?DoesCIMTYPEMatchVARTYPE@CType@@SGHJG@Z
; protected: int __thiscall CMethodPart::DoesSignatureMatchOther(class CMethodPart &,int,enum METHOD_SIGNATURE_TYPE)
?DoesSignatureMatchOther@CMethodPart@@IAEHAAV1@HW4METHOD_SIGNATURE_TYPE@@@Z
; public: int __thiscall CFastHeap::ElementMaxSize(unsigned long)
?ElementMaxSize@CFastHeap@@QAEHK@Z
; public: void __thiscall CFastHeap::Empty(void)
?Empty@CFastHeap@@QAEXXZ
; public: void __thiscall CInternalString::Empty(void)
?Empty@CInternalString@@QAEXXZ
; protected: static long __stdcall CWbemObject::EnabledValidateObject(class CWbemObject *)
?EnabledValidateObject@CWbemObject@@KGJPAV1@@Z
; public: virtual long __stdcall CQualifierSet::EndEnumeration(void)
?EndEnumeration@CQualifierSet@@UAGJXZ
; public: virtual long __stdcall CWbemObject::EndEnumeration(void)
?EndEnumeration@CWbemObject@@UAGJXZ
; public: virtual long __stdcall CWbemClass::EndMethodEnumeration(void)
?EndMethodEnumeration@CWbemClass@@UAGJXZ
; public: virtual long __stdcall CWbemInstance::EndMethodEnumeration(void)
?EndMethodEnumeration@CWbemInstance@@UAGJXZ
; public: long __thiscall CClassPart::EnsureProperty(unsigned short const *,unsigned short,long,int)
?EnsureProperty@CClassPart@@QAEJPBGGJH@Z
; public: long __thiscall CMethodPart::EnsureQualifier(class CWbemObject *,unsigned short const *,class CWbemObject * *)
?EnsureQualifier@CMethodPart@@QAEJPAVCWbemObject@@PBGPAPAV2@@Z
; public: long __thiscall CWbemClass::EnsureQualifier(unsigned short const *)
?EnsureQualifier@CWbemClass@@QAEJPBG@Z
; public: int __thiscall CQualifierSetList::EnsureReal(void)
?EnsureReal@CQualifierSetList@@QAEHXZ
; public: long __thiscall CBasicQualifierSet::EnumPrimaryQualifiers(unsigned char,unsigned char,class CFixedBSTRArray &,class CFixedBSTRArray &)
?EnumPrimaryQualifiers@CBasicQualifierSet@@QAEJEEAAVCFixedBSTRArray@@0@Z
; public: long __thiscall CQualifierSet::EnumQualifiers(unsigned char,unsigned char,class CFixedBSTRArray &)
?EnumQualifiers@CQualifierSet@@QAEJEEAAVCFixedBSTRArray@@@Z
; public: unsigned long __thiscall CWbemClass::EstimateDerivedClassSpace(class CDecorationPart *)
?EstimateDerivedClassSpace@CWbemClass@@QAEKPAVCDecorationPart@@@Z
; public: unsigned long __thiscall CClassAndMethods::EstimateDerivedPartSpace(void)
?EstimateDerivedPartSpace@CClassAndMethods@@QAEKXZ
; public: unsigned long __thiscall CClassPart::EstimateDerivedPartSpace(void)
?EstimateDerivedPartSpace@CClassPart@@QAEKXZ
; public: unsigned long __thiscall CMethodPart::EstimateDerivedPartSpace(void)
?EstimateDerivedPartSpace@CMethodPart@@QAEKXZ
; public: static unsigned long __stdcall CCompressedStringList::EstimateExtraSpace(class CCompressedString *)
?EstimateExtraSpace@CCompressedStringList@@SGKPAVCCompressedString@@@Z
; public: static unsigned long __stdcall CCompressedStringList::EstimateExtraSpace(unsigned short const *)
?EstimateExtraSpace@CCompressedStringList@@SGKPBG@Z
; public: static unsigned long __stdcall CWbemInstance::EstimateInstanceSpace(class CClassPart &,class CDecorationPart *)
?EstimateInstanceSpace@CWbemInstance@@SGKAAVCClassPart@@PAVCDecorationPart@@@Z
; public: unsigned long __thiscall CWbemObject::EstimateLimitedRepresentationSpace(long,class CWStringArray *)
?EstimateLimitedRepresentationSpace@CWbemObject@@QAEKJPAVCWStringArray@@@Z
; public: static unsigned long __stdcall CClassAndMethods::EstimateMergeSpace(class CClassAndMethods &,class CClassAndMethods &)
?EstimateMergeSpace@CClassAndMethods@@SGKAAV1@0@Z
; public: static unsigned long __stdcall CClassPart::EstimateMergeSpace(class CClassPart &,class CClassPart &)
?EstimateMergeSpace@CClassPart@@SGKAAV1@0@Z
; public: static unsigned long __stdcall CMethodPart::EstimateMergeSpace(class CMethodPart &,class CMethodPart &)
?EstimateMergeSpace@CMethodPart@@SGKAAV1@0@Z
; public: unsigned long __thiscall CWbemClass::EstimateMergeSpace(unsigned char *,long)
?EstimateMergeSpace@CWbemClass@@QAEKPAEJ@Z
; public: static unsigned long __stdcall CEmbeddedObject::EstimateNecessarySpace(class CVar &)
?EstimateNecessarySpace@CEmbeddedObject@@SGKAAVCVar@@@Z
; public: static unsigned long __stdcall CEmbeddedObject::EstimateNecessarySpace(class CWbemObject *)
?EstimateNecessarySpace@CEmbeddedObject@@SGKPAVCWbemObject@@@Z
; public: unsigned long __thiscall CClassAndMethods::EstimateUnmergeSpace(void)
?EstimateUnmergeSpace@CClassAndMethods@@QAEKXZ
; public: unsigned long __thiscall CClassPart::EstimateUnmergeSpace(void)
?EstimateUnmergeSpace@CClassPart@@QAEKXZ
; public: unsigned long __thiscall CMethodPart::EstimateUnmergeSpace(void)
?EstimateUnmergeSpace@CMethodPart@@QAEKXZ
; public: virtual unsigned long __thiscall CWbemClass::EstimateUnmergeSpace(void)
?EstimateUnmergeSpace@CWbemClass@@UAEKXZ
; public: virtual unsigned long __thiscall CWbemInstance::EstimateUnmergeSpace(void)
?EstimateUnmergeSpace@CWbemInstance@@UAEKXZ
; public: int __thiscall CFastHeap::Extend(unsigned long,unsigned long,unsigned long)
?Extend@CFastHeap@@QAEHKKK@Z
; public: int __thiscall CWbemClass::ExtendClassAndMethodsSpace(unsigned long)
?ExtendClassAndMethodsSpace@CWbemClass@@QAEHK@Z
; public: virtual int __thiscall CClassAndMethods::ExtendClassPartSpace(class CClassPart *,unsigned long)
?ExtendClassPartSpace@CClassAndMethods@@UAEHPAVCClassPart@@K@Z
; public: virtual int __thiscall CWbemInstance::ExtendClassPartSpace(class CClassPart *,unsigned long)
?ExtendClassPartSpace@CWbemInstance@@UAEHPAVCClassPart@@K@Z
; public: virtual int __thiscall CClassPart::ExtendDataTableSpace(unsigned char *,unsigned long,unsigned long)
?ExtendDataTableSpace@CClassPart@@UAEHPAEKK@Z
; public: virtual int __thiscall CInstancePart::ExtendDataTableSpace(unsigned char *,unsigned long,unsigned long)
?ExtendDataTableSpace@CInstancePart@@UAEHPAEKK@Z
; public: virtual int __thiscall CClassPart::ExtendHeapSize(unsigned char *,unsigned long,unsigned long)
?ExtendHeapSize@CClassPart@@UAEHPAEKK@Z
; public: virtual int __thiscall CInstancePart::ExtendHeapSize(unsigned char *,unsigned long,unsigned long)
?ExtendHeapSize@CInstancePart@@UAEHPAEKK@Z
; public: virtual int __thiscall CMethodPart::ExtendHeapSize(unsigned char *,unsigned long,unsigned long)
?ExtendHeapSize@CMethodPart@@UAEHPAEKK@Z
; public: virtual int __thiscall CWbemInstance::ExtendInstancePartSpace(class CInstancePart *,unsigned long)
?ExtendInstancePartSpace@CWbemInstance@@UAEHPAVCInstancePart@@K@Z
; public: virtual int __thiscall CClassAndMethods::ExtendMethodPartSpace(class CMethodPart *,unsigned long)
?ExtendMethodPartSpace@CClassAndMethods@@UAEHPAVCMethodPart@@K@Z
; public: virtual int __thiscall CClassPart::ExtendPropertyTableSpace(unsigned char *,unsigned long,unsigned long)
?ExtendPropertyTableSpace@CClassPart@@UAEHPAEKK@Z
; public: virtual int __thiscall CInstancePart::ExtendQualifierSetListSpace(unsigned char *,unsigned long,unsigned long)
?ExtendQualifierSetListSpace@CInstancePart@@UAEHPAEKK@Z
; public: virtual int __thiscall CClassPart::ExtendQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ExtendQualifierSetSpace@CClassPart@@UAEHPAVCBasicQualifierSet@@K@Z
; public: virtual int __thiscall CInstancePQSContainer::ExtendQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ExtendQualifierSetSpace@CInstancePQSContainer@@UAEHPAVCBasicQualifierSet@@K@Z
; public: virtual int __thiscall CInstancePart::ExtendQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ExtendQualifierSetSpace@CInstancePart@@UAEHPAVCBasicQualifierSet@@K@Z
; public: virtual int __thiscall CMethodQualifierSetContainer::ExtendQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ExtendQualifierSetSpace@CMethodQualifierSetContainer@@UAEHPAVCBasicQualifierSet@@K@Z
; public: int __thiscall CQualifierSetList::ExtendQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ExtendQualifierSetSpace@CQualifierSetList@@QAEHPAVCBasicQualifierSet@@K@Z
; public: int __thiscall CDataTable::ExtendTo(unsigned short,unsigned long)
?ExtendTo@CDataTable@@QAEHGK@Z
; public: long __thiscall CWbemInstance::FastClone(class CWbemInstance *)
?FastClone@CWbemInstance@@QAEJPAV1@@Z
; public: void __thiscall CFixedBSTRArray::Filter(unsigned short const *,int)
?Filter@CFixedBSTRArray@@QAEXPBGH@Z
; public: int __thiscall CCompressedStringList::Find(unsigned short const *)
?Find@CCompressedStringList@@QAEHPBG@Z
; public: class WString  __thiscall CWbemClass::FindLimitationError(long,class CWStringArray *)
?FindLimitationError@CWbemClass@@QAE?AVWString@@JPAVCWStringArray@@@Z
; protected: int __thiscall CMethodPart::FindMethod(unsigned short const *)
?FindMethod@CMethodPart@@IAEHPBG@Z
; public: virtual long __thiscall CWbemClass::FindMethod(unsigned short const *)
?FindMethod@CWbemClass@@UAEJPBG@Z
; public: virtual long __thiscall CWbemObject::FindMethod(unsigned short const *)
?FindMethod@CWbemObject@@UAEJPBG@Z
; public: static int __stdcall CSystemProperties::FindName(unsigned short const *)
?FindName@CSystemProperties@@SGHPBG@Z
; protected: class CFastPropertyBagItem * __thiscall CFastPropertyBag::FindProperty(unsigned short const *)
?FindProperty@CFastPropertyBag@@IAEPAVCFastPropertyBagItem@@PBG@Z
; public: struct CPropertyLookup * __thiscall CPropertyLookupTable::FindProperty(unsigned short const *)
?FindProperty@CPropertyLookupTable@@QAEPAUCPropertyLookup@@PBG@Z
; public: struct CPropertyLookup * __thiscall CPropertyLookupTable::FindPropertyByName(class CCompressedString *)
?FindPropertyByName@CPropertyLookupTable@@QAEPAUCPropertyLookup@@PAVCCompressedString@@@Z
; public: struct CPropertyLookup * __thiscall CPropertyLookupTable::FindPropertyByOffset(unsigned long)
?FindPropertyByOffset@CPropertyLookupTable@@QAEPAUCPropertyLookup@@K@Z
; public: struct CPropertyLookup * __thiscall CPropertyLookupTable::FindPropertyByPtr(unsigned long)
?FindPropertyByPtr@CPropertyLookupTable@@QAEPAUCPropertyLookup@@K@Z
; protected: int __thiscall CFastPropertyBag::FindPropertyIndex(unsigned short const *)
?FindPropertyIndex@CFastPropertyBag@@IAEHPBG@Z
; public: class CPropertyInformation * __thiscall CClassPart::FindPropertyInfo(unsigned short const *)
?FindPropertyInfo@CClassPart@@QAEPAVCPropertyInformation@@PBG@Z
; public: long __thiscall CWbemClass::ForcePropValue(unsigned short const *,class CVar *,long)
?ForcePropValue@CWbemClass@@QAEJPBGPAVCVar@@J@Z
; public: long __thiscall CWbemClass::ForcePut(unsigned short const *,long,struct tagVARIANT *,long)
?ForcePut@CWbemClass@@QAEJPBGJPAUtagVARIANT@@J@Z
; public: void __thiscall CFastHeap::Free(unsigned long,unsigned long)
?Free@CFastHeap@@QAEXKK@Z
; public: void __thiscall CFixedBSTRArray::Free(void)
?Free@CFixedBSTRArray@@QAEXXZ
; public: void __thiscall CFastHeap::FreeString(unsigned long)
?FreeString@CFastHeap@@QAEXK@Z
; public: long __thiscall CFastPropertyBag::Get(int,unsigned short const * *,long *,unsigned long *,unsigned long *,void * *)
?Get@CFastPropertyBag@@QAEJHPAPBGPAJPAK2PAPAX@Z
; public: long __thiscall CFastPropertyBag::Get(unsigned short const *,long *,unsigned long *,unsigned long *,void * *)
?Get@CFastPropertyBag@@QAEJPBGPAJPAK2PAPAX@Z
; public: virtual long __stdcall CQualifierSet::Get(unsigned short const *,long,struct tagVARIANT *,long *)
?Get@CQualifierSet@@UAGJPBGJPAUtagVARIANT@@PAJ@Z
; public: long __thiscall CWbemFetchRefrMgr::Get(struct _IWbemRefresherMgr * *)
?Get@CWbemFetchRefrMgr@@QAEJPAPAU_IWbemRefresherMgr@@@Z
; public: virtual long __stdcall CWbemObject::Get(unsigned short const *,long,struct tagVARIANT *,long *,long *)
?Get@CWbemObject@@UAGJPBGJPAUtagVARIANT@@PAJ2@Z
; public: virtual long __stdcall CWbemFetchRefrMgr::XFetchRefrMgr::Get(struct _IWbemRefresherMgr * *)
?Get@XFetchRefrMgr@CWbemFetchRefrMgr@@UAGJPAPAU_IWbemRefresherMgr@@@Z
; public: unsigned char __thiscall CClassPart::GetAbstractFlavor(void)
?GetAbstractFlavor@CClassPart@@QAEEXZ
; public: unsigned char __thiscall CWbemClass::GetAbstractFlavor(void)
?GetAbstractFlavor@CWbemClass@@QAEEXZ
; public: void __thiscall CWbemInstance::GetActualTransferBlob(unsigned char *)
?GetActualTransferBlob@CWbemInstance@@QAEXPAE@Z
; public: long __thiscall CWbemInstance::GetActualTransferBlobSize(void)
?GetActualTransferBlobSize@CWbemInstance@@QAEJXZ
; public: unsigned long __thiscall CType::GetActualType(void)
?GetActualType@CType@@QAEKXZ
; public: static unsigned long __stdcall CType::GetActualType(unsigned long)
?GetActualType@CType@@SGKK@Z
; public: long __thiscall CInstancePart::GetActualValue(class CPropertyInformation *,class CVar *)
?GetActualValue@CInstancePart@@QAEJPAVCPropertyInformation@@PAVCVar@@@Z
; public: unsigned long __thiscall CFastHeap::GetAllocatedDataLength(void)
?GetAllocatedDataLength@CFastHeap@@QAEKXZ
; public: class CFlexArray & __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::GetArray(void)
?GetArray@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEAAVCFlexArray@@XZ
; public: class CFlexArray & __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::GetArray(void)
?GetArray@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEAAVCFlexArray@@XZ
; public: class CUntypedArray * __thiscall CWbemObject::GetArrayByHandle(long)
?GetArrayByHandle@CWbemObject@@QAEPAVCUntypedArray@@J@Z
; public: virtual long __stdcall CWbemObject::GetArrayPropAddrByHandle(long,long,unsigned long *,void * *)
?GetArrayPropAddrByHandle@CWbemObject@@UAGJJJPAKPAPAX@Z
; public: virtual long __stdcall CWbemObject::GetArrayPropElementByHandle(long,long,unsigned long,unsigned long *,unsigned long *,void * *)
?GetArrayPropElementByHandle@CWbemObject@@UAGJJJKPAK0PAPAX@Z
; public: virtual long __stdcall CWbemObject::GetArrayPropInfoByHandle(long,long,unsigned short * *,long *,unsigned long *)
?GetArrayPropInfoByHandle@CWbemObject@@UAGJJJPAPAGPAJPAK@Z
; public: virtual long __stdcall CWbemObject::GetArrayPropRangeByHandle(long,long,unsigned long,unsigned long,unsigned long,unsigned long *,unsigned long *,void *)
?GetArrayPropRangeByHandle@CWbemObject@@UAGJJJKKKPAK0PAX@Z
; public: long __thiscall CWbemObject::GetArrayPropertyHandle(unsigned short const *,long *,long *)
?GetArrayPropertyHandle@CWbemObject@@QAEJPBGPAJ1@Z
; public: class CFastPropertyBagItem * * __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::GetArrayPtr(void)
?GetArrayPtr@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEPAPAVCFastPropertyBagItem@@XZ
; public: class CWmiTextSource * * __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::GetArrayPtr(void)
?GetArrayPtr@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEPAPAVCWmiTextSource@@XZ
; public: class CFastPropertyBagItem * __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::GetAt(int)
?GetAt@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEPAVCFastPropertyBagItem@@H@Z
; public: class CFastPropertyBagItem const * __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::GetAt(int)const 
?GetAt@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QBEPBVCFastPropertyBagItem@@H@Z
; public: class CWmiTextSource * __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::GetAt(int)
?GetAt@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEPAVCWmiTextSource@@H@Z
; public: class CWmiTextSource const * __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::GetAt(int)const 
?GetAt@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QBEPBVCWmiTextSource@@H@Z
; public: unsigned short * & __thiscall CFixedBSTRArray::GetAt(int)
?GetAt@CFixedBSTRArray@@QAEAAPAGH@Z
; public: struct CPropertyLookup * __thiscall CPropertyLookupTable::GetAt(int)
?GetAt@CPropertyLookupTable@@QAEPAUCPropertyLookup@@H@Z
; public: class CCompressedString * __thiscall CCompressedStringList::GetAtFromLast(int)
?GetAtFromLast@CCompressedStringList@@QAEPAVCCompressedString@@H@Z
; public: long __stdcall CWbemCallSecurity::GetAuthentication(unsigned long *)
?GetAuthentication@CWbemCallSecurity@@QAGJPAK@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetAuthentication(unsigned long *)
?GetAuthentication@CWbemThreadSecurityHandle@@UAGJPAK@Z
; public: unsigned long __thiscall CWbemThreadSecurityHandle::GetAuthenticationLevel(void)
?GetAuthenticationLevel@CWbemThreadSecurityHandle@@QAEKXZ
; public: virtual long __stdcall CWbemCallSecurity::GetAuthenticationLuid(void *)
?GetAuthenticationLuid@CWbemCallSecurity@@UAGJPAX@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetAuthenticationLuid(void *)
?GetAuthenticationLuid@CWbemThreadSecurityHandle@@UAGJPAX@Z
; public: unsigned long __thiscall CWbemThreadSecurityHandle::GetAuthenticationService(void)
?GetAuthenticationService@CWbemThreadSecurityHandle@@QAEKXZ
; public: unsigned long __thiscall CWbemThreadSecurityHandle::GetAuthorizationService(void)
?GetAuthorizationService@CWbemThreadSecurityHandle@@QAEKXZ
; public: unsigned long __thiscall CType::GetBasic(void)
?GetBasic@CType@@QAEKXZ
; public: static unsigned long __stdcall CType::GetBasic(unsigned long)
?GetBasic@CType@@SGKK@Z
; protected: virtual unsigned long __thiscall CWbemClass::GetBlockLength(void)
?GetBlockLength@CWbemClass@@MAEKXZ
; protected: virtual unsigned long __thiscall CWbemInstance::GetBlockLength(void)
?GetBlockLength@CWbemInstance@@MAEKXZ
; public: unsigned long __thiscall CClassPart::GetClassIndex(unsigned short const *)
?GetClassIndex@CClassPart@@QAEKPBG@Z
; public: unsigned long __thiscall CWbemObject::GetClassIndex(unsigned short const *)
?GetClassIndex@CWbemObject@@QAEKPBG@Z
; public: class CCompressedString * __thiscall CWbemObject::GetClassInternal(void)
?GetClassInternal@CWbemObject@@QAEPAVCCompressedString@@XZ
; public: static long __stdcall CClassAndMethods::GetClassNameW(class WString &,unsigned char *)
?GetClassNameW@CClassAndMethods@@SGJAAVWString@@PAE@Z
; public: long __thiscall CClassPart::GetClassNameW(class CVar *)
?GetClassNameW@CClassPart@@QAEJPAVCVar@@@Z
; public: class CCompressedString * __thiscall CClassPart::GetClassNameW(void)
?GetClassNameW@CClassPart@@QAEPAVCCompressedString@@XZ
; public: virtual long __thiscall CWbemClass::GetClassNameW(class CVar *)
?GetClassNameW@CWbemClass@@UAEJPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetClassNameW(class CVar *)
?GetClassNameW@CWbemInstance@@UAEJPAVCVar@@@Z
; private: long __thiscall CWbemObjectArrayPacket::GetClassObject(class CWbemObjectPacket &,struct IWbemClassObject * *)
?GetClassObject@CWbemObjectArrayPacket@@AAEJAAVCWbemObjectPacket@@PAPAUIWbemClassObject@@@Z
; protected: virtual class CClassPart * __thiscall CWbemClass::GetClassPart(void)
?GetClassPart@CWbemClass@@MAEPAVCClassPart@@XZ
; public: virtual long __stdcall CWbemClass::GetClassPart(void *,unsigned long,unsigned long *)
?GetClassPart@CWbemClass@@UAGJPAXKPAK@Z
; protected: virtual class CClassPart * __thiscall CWbemInstance::GetClassPart(void)
?GetClassPart@CWbemInstance@@MAEPAVCClassPart@@XZ
; public: virtual long __stdcall CWbemInstance::GetClassPart(void *,unsigned long,unsigned long *)
?GetClassPart@CWbemInstance@@UAGJPAXKPAK@Z
; public: long __thiscall CClassPart::GetClassQualifier(unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetClassQualifier@CClassPart@@QAEJPBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: long __thiscall CClassPart::GetClassQualifier(unsigned short const *,class CVar *,long *,long *)
?GetClassQualifier@CClassPart@@QAEJPBGPAVCVar@@PAJ2@Z
; public: virtual long __stdcall CWbemClass::GetClassSubset(unsigned long,unsigned short const * *,struct _IWmiObject * *)
?GetClassSubset@CWbemClass@@UAGJKPAPBGPAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::GetClassSubset(unsigned long,unsigned short const * *,struct _IWmiObject * *)
?GetClassSubset@CWbemInstance@@UAGJKPAPBGPAPAU_IWmiObject@@@Z
; private: long __thiscall CWbemObjectArrayPacket::GetClasslessInstanceObject(class CWbemObjectPacket &,struct IWbemClassObject * *,class CWbemClassCache &)
?GetClasslessInstanceObject@CWbemObjectArrayPacket@@AAEJAAVCWbemObjectPacket@@PAPAUIWbemClassObject@@AAVCWbemClassCache@@@Z
; public: virtual unsigned long __thiscall CClassAndMethods::GetCurrentOrigin(void)
?GetCurrentOrigin@CClassAndMethods@@UAEKXZ
; public: virtual unsigned long __thiscall CClassPart::GetCurrentOrigin(void)
?GetCurrentOrigin@CClassPart@@UAEKXZ
; public: unsigned long __thiscall CWbemClass::GetCurrentOrigin(void)
?GetCurrentOrigin@CWbemClass@@QAEKXZ
; public: unsigned long __thiscall CDataTable::GetDataLength(void)
?GetDataLength@CDataTable@@QAEKXZ
; public: virtual class CDataTable * __thiscall CClassPart::GetDataTable(void)
?GetDataTable@CClassPart@@UAEPAVCDataTable@@XZ
; public: class CDataTable * __thiscall CInstancePart::GetDataTable(void)
?GetDataTable@CInstancePart@@QAEPAVCDataTable@@XZ
; public: static unsigned char * __stdcall CInstancePart::GetDataTableData(unsigned char *)
?GetDataTableData@CInstancePart@@SGPAEPAE@Z
; public: long __thiscall CClassPart::GetDefaultByHandle(long,long,long *,unsigned char *)
?GetDefaultByHandle@CClassPart@@QAEJJJPAJPAE@Z
; public: long __thiscall CClassPart::GetDefaultPtrByHandle(long,void * *)
?GetDefaultPtrByHandle@CClassPart@@QAEJJPAPAX@Z
; public: long __thiscall CClassPart::GetDefaultValue(class CPropertyInformation *,class CVar *)
?GetDefaultValue@CClassPart@@QAEJPAVCPropertyInformation@@PAVCVar@@@Z
; public: long __thiscall CClassPart::GetDefaultValue(unsigned short const *,class CVar *)
?GetDefaultValue@CClassPart@@QAEJPBGPAVCVar@@@Z
; public: long __thiscall CClassPart::GetDerivation(class CVar *)
?GetDerivation@CClassPart@@QAEJPAVCVar@@@Z
; public: long __thiscall CWbemObject::GetDerivation(class CVar *)
?GetDerivation@CWbemObject@@QAEJPAVCVar@@@Z
; public: virtual long __stdcall CWbemObject::GetDerivation(long,unsigned long,unsigned long *,unsigned long *,unsigned short *)
?GetDerivation@CWbemObject@@UAGJJKPAK0PAG@Z
; public: virtual long __stdcall CWbemObject::GetDescription(unsigned short * *)
?GetDescription@CWbemObject@@UAGJPAPAG@Z
; public: long __thiscall CClassPart::GetDynasty(class CVar *)
?GetDynasty@CClassPart@@QAEJPAVCVar@@@Z
; public: class CCompressedString * __thiscall CClassPart::GetDynasty(void)
?GetDynasty@CClassPart@@QAEPAVCCompressedString@@XZ
; public: virtual long __thiscall CWbemClass::GetDynasty(class CVar *)
?GetDynasty@CWbemClass@@UAEJPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetDynasty(class CVar *)
?GetDynasty@CWbemInstance@@UAEJPAVCVar@@@Z
; public: unsigned char * __thiscall CUntypedArray::GetElement(int,int)
?GetElement@CUntypedArray@@QAEPAEHH@Z
; public: class CWbemObject * __thiscall CEmbeddedObject::GetEmbedded(void)
?GetEmbedded@CEmbeddedObject@@QAEPAVCWbemObject@@XZ
; public: class CWbemObject * __thiscall CWbemObject::GetEmbeddedObj(long)
?GetEmbeddedObj@CWbemObject@@QAEPAV1@J@Z
; public: class CCompressedString * __thiscall CCompressedStringList::GetFirst(void)
?GetFirst@CCompressedStringList@@QAEPAVCCompressedString@@XZ
; public: struct CQualifier * __thiscall CBasicQualifierSet::GetFirstQualifier(void)
?GetFirstQualifier@CBasicQualifierSet@@QAEPAUCQualifier@@XZ
; public: static struct CQualifier * __stdcall CBasicQualifierSet::GetFirstQualifierFromData(unsigned char *)
?GetFirstQualifierFromData@CBasicQualifierSet@@SGPAUCQualifier@@PAE@Z
; public: long __thiscall CLimitationMapping::GetFlags(void)
?GetFlags@CLimitationMapping@@QAEJXZ
; public: unsigned short * __thiscall CWbemObject::GetFullPath(void)
?GetFullPath@CWbemObject@@QAEPAGXZ
; public: virtual long __stdcall CWbemObject::GetGUID(struct _GUID *)
?GetGUID@CWbemObject@@UAGJPAU_GUID@@@Z
; public: virtual long __thiscall CWbemClass::GetGenus(class CVar *)
?GetGenus@CWbemClass@@UAEJPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetGenus(class CVar *)
?GetGenus@CWbemInstance@@UAEJPAVCVar@@@Z
; public: virtual long __stdcall CWbemRemoteRefresher::XWbemRemoteRefr::GetGuid(long,struct _GUID *)
?GetGuid@XWbemRemoteRefr@CWbemRemoteRefresher@@UAGJJPAU_GUID@@@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetHandleType(unsigned long *)
?GetHandleType@CWbemThreadSecurityHandle@@UAGJPAK@Z
; public: static unsigned long __stdcall CCompressedStringList::GetHeaderLength(void)
?GetHeaderLength@CCompressedStringList@@SGKXZ
; protected: unsigned long __thiscall CFastHeap::GetHeaderLength(void)
?GetHeaderLength@CFastHeap@@IAEKXZ
; public: static int __stdcall CQualifierSetList::GetHeaderLength(void)
?GetHeaderLength@CQualifierSetList@@SGHXZ
; public: static unsigned long __stdcall CUntypedArray::GetHeaderLength(void)
?GetHeaderLength@CUntypedArray@@SGKXZ
; public: class CFastHeap * __thiscall CBasicQualifierSet::GetHeap(void)
?GetHeap@CBasicQualifierSet@@QAEPAVCFastHeap@@XZ
; public: virtual class CFastHeap * __thiscall CClassPart::GetHeap(void)
?GetHeap@CClassPart@@UAEPAVCFastHeap@@XZ
; public: virtual class CFastHeap * __thiscall CInstancePQSContainer::GetHeap(void)
?GetHeap@CInstancePQSContainer@@UAEPAVCFastHeap@@XZ
; public: virtual class CFastHeap * __thiscall CInstancePart::GetHeap(void)
?GetHeap@CInstancePart@@UAEPAVCFastHeap@@XZ
; public: class CFastHeap * __thiscall CMethodPart::GetHeap(void)
?GetHeap@CMethodPart@@QAEPAVCFastHeap@@XZ
; public: virtual class CFastHeap * __thiscall CMethodQualifierSetContainer::GetHeap(void)
?GetHeap@CMethodQualifierSetContainer@@UAEPAVCFastHeap@@XZ
; public: class CFastHeap * __thiscall CPropertyLookupTable::GetHeap(void)
?GetHeap@CPropertyLookupTable@@QAEPAVCFastHeap@@XZ
; public: class CFastHeap * __thiscall CQualifierSetList::GetHeap(void)
?GetHeap@CQualifierSetList@@QAEPAVCFastHeap@@XZ
; public: unsigned char * __thiscall CFastHeap::GetHeapData(void)
?GetHeapData@CFastHeap@@QAEPAEXZ
; public: unsigned long __thiscall CClassPart::GetHeapPtrByHandle(long)
?GetHeapPtrByHandle@CClassPart@@QAEKJ@Z
; public: unsigned long __thiscall CWbemObject::GetHeapPtrByHandle(long)
?GetHeapPtrByHandle@CWbemObject@@QAEKJ@Z
; public: virtual long __stdcall CWbemObject::GetHelpContext(unsigned long *)
?GetHelpContext@CWbemObject@@UAGJPAK@Z
; public: virtual long __stdcall CWbemObject::GetHelpFile(unsigned short * *)
?GetHelpFile@CWbemObject@@UAGJPAPAG@Z
; public: unsigned short * __thiscall CWbemThreadSecurityHandle::GetIdentity(void)
?GetIdentity@CWbemThreadSecurityHandle@@QAEPAGXZ
; public: long __thiscall CWbemClass::GetIds(class CFlexArray &,class CWbemClass *)
?GetIds@CWbemClass@@QAEJAAVCFlexArray@@PAV1@@Z
; public: virtual long __stdcall CWbemCallSecurity::GetImpersonation(unsigned long *)
?GetImpersonation@CWbemCallSecurity@@UAGJPAK@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetImpersonation(unsigned long *)
?GetImpersonation@CWbemThreadSecurityHandle@@UAGJPAK@Z
; public: unsigned long __thiscall CWbemThreadSecurityHandle::GetImpersonationLevel(void)
?GetImpersonationLevel@CWbemThreadSecurityHandle@@QAEKXZ
; protected: unsigned long * __thiscall CFastHeap::GetInLineLength(void)
?GetInLineLength@CFastHeap@@IAEPAKXZ
; public: static int __stdcall CFastHeap::GetIndexFromFake(unsigned long)
?GetIndexFromFake@CFastHeap@@SGHK@Z
; public: static int __stdcall CKnownStringTable::GetIndexOfKey(void)
?GetIndexOfKey@CKnownStringTable@@SGHXZ
; public: static int __stdcall CClassAndMethods::GetIndexedProps(class CWStringArray &,unsigned char *)
?GetIndexedProps@CClassAndMethods@@SGHAAVCWStringArray@@PAE@Z
; public: int __thiscall CClassPart::GetIndexedProps(class CWStringArray &)
?GetIndexedProps@CClassPart@@QAEHAAVCWStringArray@@@Z
; public: virtual int __thiscall CWbemClass::GetIndexedProps(class CWStringArray &)
?GetIndexedProps@CWbemClass@@UAEHAAVCWStringArray@@@Z
; public: virtual int __thiscall CWbemInstance::GetIndexedProps(class CWStringArray &)
?GetIndexedProps@CWbemInstance@@UAEHAAVCWStringArray@@@Z
; private: long __thiscall CWbemObjectArrayPacket::GetInstanceObject(class CWbemObjectPacket &,struct IWbemClassObject * *,class CWbemClassCache &)
?GetInstanceObject@CWbemObjectArrayPacket@@AAEJAAVCWbemObjectPacket@@PAPAUIWbemClassObject@@AAVCWbemClassCache@@@Z
; public: virtual struct IUnknown * __thiscall CWbemInstance::GetInstanceObjectUnknown(void)
?GetInstanceObjectUnknown@CWbemInstance@@UAEPAUIUnknown@@XZ
; protected: virtual void * __thiscall CWbemEnumMarshaling::GetInterface(struct _GUID const &)
?GetInterface@CWbemEnumMarshaling@@MAEPAXABU_GUID@@@Z
; protected: virtual void * __thiscall CWbemFetchRefrMgr::GetInterface(struct _GUID const &)
?GetInterface@CWbemFetchRefrMgr@@MAEPAXABU_GUID@@@Z
; protected: virtual void * __thiscall CWbemRefreshingSvc::GetInterface(struct _GUID const &)
?GetInterface@CWbemRefreshingSvc@@MAEPAXABU_GUID@@@Z
; protected: virtual void * __thiscall CWmiObjectFactory::GetInterface(struct _GUID const &)
?GetInterface@CWmiObjectFactory@@MAEPAXABU_GUID@@@Z
; public: class CVar * __thiscall CWbemInstance::GetKey(void)
?GetKey@CWbemInstance@@QAEPAVCVar@@XZ
; public: long __thiscall CClassPart::GetKeyOrigin(class WString &)
?GetKeyOrigin@CClassPart@@QAEJAAVWString@@@Z
; public: virtual long __thiscall CWbemClass::GetKeyOrigin(class WString &)
?GetKeyOrigin@CWbemClass@@UAEJAAVWString@@@Z
; public: virtual long __thiscall CWbemInstance::GetKeyOrigin(class WString &)
?GetKeyOrigin@CWbemInstance@@UAEJAAVWString@@@Z
; public: virtual long __stdcall CWbemObject::GetKeyOrigin(long,unsigned long,unsigned long *,unsigned short *)
?GetKeyOrigin@CWbemObject@@UAGJJKPAKPAG@Z
; public: int __thiscall CClassPart::GetKeyProps(class CWStringArray &)
?GetKeyProps@CClassPart@@QAEHAAVCWStringArray@@@Z
; public: virtual int __thiscall CWbemClass::GetKeyProps(class CWStringArray &)
?GetKeyProps@CWbemClass@@UAEHAAVCWStringArray@@@Z
; public: virtual int __thiscall CWbemInstance::GetKeyProps(class CWStringArray &)
?GetKeyProps@CWbemInstance@@UAEHAAVCWStringArray@@@Z
; public: unsigned short * __thiscall CWbemInstance::GetKeyStr(void)
?GetKeyStr@CWbemInstance@@QAEPAGXZ
; public: virtual long __stdcall CWbemObject::GetKeyString(long,unsigned short * *)
?GetKeyString@CWbemObject@@UAGJJPAPAG@Z
; public: struct CQualifier * __thiscall CBasicQualifierSet::GetKnownQualifierLocally(int)
?GetKnownQualifierLocally@CBasicQualifierSet@@QAEPAUCQualifier@@H@Z
; public: static struct CQualifier * __stdcall CBasicQualifierSet::GetKnownQualifierLocally(unsigned char *,int)
?GetKnownQualifierLocally@CBasicQualifierSet@@SGPAUCQualifier@@PAEH@Z
; public: static class CCompressedString & __stdcall CKnownStringTable::GetKnownString(int)
?GetKnownString@CKnownStringTable@@SGAAVCCompressedString@@H@Z
; public: static int __stdcall CKnownStringTable::GetKnownStringIndex(unsigned short const *)
?GetKnownStringIndex@CKnownStringTable@@SGHPBG@Z
; public: class CCompressedString * __thiscall CCompressedStringList::GetLast(void)
?GetLast@CCompressedStringList@@QAEPAVCCompressedString@@XZ
; public: unsigned long __thiscall CBasicQualifierSet::GetLength(void)
?GetLength@CBasicQualifierSet@@QAEKXZ
; public: unsigned long __thiscall CClassAndMethods::GetLength(void)
?GetLength@CClassAndMethods@@QAEKXZ
; public: unsigned long __thiscall CClassPart::GetLength(void)
?GetLength@CClassPart@@QAEKXZ
; public: int __thiscall CCompressedString::GetLength(void)const 
?GetLength@CCompressedString@@QBEHXZ
; public: unsigned long __thiscall CCompressedStringList::GetLength(void)
?GetLength@CCompressedStringList@@QAEKXZ
; public: unsigned long __thiscall CDataTable::GetLength(void)
?GetLength@CDataTable@@QAEKXZ
; public: unsigned long __thiscall CDecorationPart::GetLength(void)
?GetLength@CDecorationPart@@QAEKXZ
; public: unsigned long __thiscall CEmbeddedObject::GetLength(void)
?GetLength@CEmbeddedObject@@QAEKXZ
; public: unsigned long __thiscall CFastHeap::GetLength(void)
?GetLength@CFastHeap@@QAEKXZ
; public: int __thiscall CFixedBSTRArray::GetLength(void)
?GetLength@CFixedBSTRArray@@QAEHXZ
; public: int __thiscall CInstancePart::GetLength(void)
?GetLength@CInstancePart@@QAEHXZ
; public: static int __stdcall CInstancePart::GetLength(unsigned char *)
?GetLength@CInstancePart@@SGHPAE@Z
; public: int __thiscall CInternalString::GetLength(void)const 
?GetLength@CInternalString@@QBEHXZ
; public: unsigned long __thiscall CMethodPart::GetLength(void)
?GetLength@CMethodPart@@QAEKXZ
; public: int __thiscall CPropertyLookupTable::GetLength(void)
?GetLength@CPropertyLookupTable@@QAEHXZ
; public: int __thiscall CQualifierSetList::GetLength(void)
?GetLength@CQualifierSetList@@QAEHXZ
; public: static int __stdcall CQualifierSetList::GetLength(unsigned char *,int)
?GetLength@CQualifierSetList@@SGHPAEH@Z
; public: unsigned long __thiscall CType::GetLength(void)
?GetLength@CType@@QAEKXZ
; public: static unsigned long __stdcall CType::GetLength(unsigned long)
?GetLength@CType@@SGKK@Z
; public: unsigned long __thiscall CWbemClass::GetLength(void)
?GetLength@CWbemClass@@QAEKXZ
; public: unsigned long __thiscall CWbemInstance::GetLength(void)
?GetLength@CWbemInstance@@QAEKXZ
; public: unsigned long __thiscall CUntypedArray::GetLengthByActualLength(int)
?GetLengthByActualLength@CUntypedArray@@QAEKH@Z
; public: unsigned long __thiscall CUntypedArray::GetLengthByType(class CType)
?GetLengthByType@CUntypedArray@@QAEKVCType@@@Z
; public: static unsigned long __stdcall CBasicQualifierSet::GetLengthFromData(unsigned char *)
?GetLengthFromData@CBasicQualifierSet@@SGKPAE@Z
; public: long __thiscall CWbemClass::GetLimitedVersion(class CLimitationMapping *,class CWbemClass * *)
?GetLimitedVersion@CWbemClass@@QAEJPAVCLimitationMapping@@PAPAV1@@Z
; public: long __thiscall CWbemInstance::GetLimitedVersion(class CLimitationMapping *,class CWbemInstance * *)
?GetLimitedVersion@CWbemInstance@@QAEJPAVCLimitationMapping@@PAPAV1@@Z
; public: long __thiscall CWbemGuidToClassMap::GetMap(class CGUID &,class CWbemClassToIdMap * *)
?GetMap@CWbemGuidToClassMap@@QAEJAAVCGUID@@PAPAVCWbemClassToIdMap@@@Z
; public: unsigned short __thiscall CLimitationMapping::GetMapped(unsigned short)
?GetMapped@CLimitationMapping@@QAEGG@Z
; public: class CPropertyInformation * __thiscall CLimitationMapping::GetMapped(class CPropertyInformation *)
?GetMapped@CLimitationMapping@@QAEPAVCPropertyInformation@@PAV2@@Z
; public: long __thiscall CWbemEnumMarshaling::GetMarshalPacket(struct _GUID const &,unsigned long,struct IWbemClassObject * *,unsigned long *,unsigned char * *)
?GetMarshalPacket@CWbemEnumMarshaling@@QAEJABU_GUID@@KPAPAUIWbemClassObject@@PAKPAPAE@Z
; public: virtual long __stdcall CWbemEnumMarshaling::XEnumMarshaling::GetMarshalPacket(struct _GUID const &,unsigned long,struct IWbemClassObject * *,unsigned long *,unsigned char * *)
?GetMarshalPacket@XEnumMarshaling@CWbemEnumMarshaling@@UAGJABU_GUID@@KPAPAUIWbemClassObject@@PAKPAPAE@Z
; public: virtual long __stdcall CWbemObject::GetMarshalSizeMax(struct _GUID const &,void *,unsigned long,void *,unsigned long,unsigned long *)
?GetMarshalSizeMax@CWbemObject@@UAGJABU_GUID@@PAXK1KPAK@Z
; public: virtual long __thiscall CWbemInstance::GetMaxMarshalStreamSize(unsigned long *)
?GetMaxMarshalStreamSize@CWbemInstance@@UAEJPAK@Z
; public: virtual long __thiscall CWbemObject::GetMaxMarshalStreamSize(unsigned long *)
?GetMaxMarshalStreamSize@CWbemObject@@UAEJPAK@Z
; public: virtual unsigned char * __thiscall CClassPart::GetMemoryLimit(void)
?GetMemoryLimit@CClassPart@@UAEPAEXZ
; public: virtual unsigned char * __thiscall CInstancePart::GetMemoryLimit(void)
?GetMemoryLimit@CInstancePart@@UAEPAEXZ
; public: virtual unsigned char * __thiscall CMethodPart::GetMemoryLimit(void)
?GetMemoryLimit@CMethodPart@@UAEPAEXZ
; public: long __thiscall CMethodPart::GetMethod(unsigned short const *,long,class CWbemObject * *,class CWbemObject * *)
?GetMethod@CMethodPart@@QAEJPBGJPAPAVCWbemObject@@1@Z
; public: virtual long __stdcall CWbemClass::GetMethod(unsigned short const *,long,struct IWbemClassObject * *,struct IWbemClassObject * *)
?GetMethod@CWbemClass@@UAGJPBGJPAPAUIWbemClassObject@@1@Z
; public: virtual long __stdcall CWbemInstance::GetMethod(unsigned short const *,long,struct IWbemClassObject * *,struct IWbemClassObject * *)
?GetMethod@CWbemInstance@@UAGJPBGJPAPAUIWbemClassObject@@1@Z
; public: long __thiscall CMethodPart::GetMethodAt(int,unsigned short * *,class CWbemObject * *,class CWbemObject * *)
?GetMethodAt@CMethodPart@@QAEJHPAPAGPAPAVCWbemObject@@1@Z
; public: long __thiscall CMethodPart::GetMethodOrigin(unsigned short const *,unsigned long *)
?GetMethodOrigin@CMethodPart@@QAEJPBGPAK@Z
; public: virtual long __stdcall CWbemClass::GetMethodOrigin(unsigned short const *,unsigned short * *)
?GetMethodOrigin@CWbemClass@@UAGJPBGPAPAG@Z
; public: virtual long __stdcall CWbemInstance::GetMethodOrigin(unsigned short const *,unsigned short * *)
?GetMethodOrigin@CWbemInstance@@UAGJPBGPAPAG@Z
; public: virtual long __stdcall CWbemObject::GetMethodQual(unsigned short const *,unsigned short const *,long,unsigned long,long *,unsigned long *,unsigned long *,void *)
?GetMethodQual@CWbemObject@@UAGJPBG0JKPAJPAK2PAX@Z
; public: virtual long __thiscall CWbemClass::GetMethodQualifier(unsigned short const *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetMethodQualifier@CWbemClass@@UAEJPBG0PAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemClass::GetMethodQualifier(unsigned short const *,unsigned short const *,class CVar *,long *,long *)
?GetMethodQualifier@CWbemClass@@UAEJPBG0PAVCVar@@PAJ2@Z
; public: virtual long __thiscall CWbemInstance::GetMethodQualifier(unsigned short const *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetMethodQualifier@CWbemInstance@@UAEJPBG0PAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemInstance::GetMethodQualifier(unsigned short const *,unsigned short const *,class CVar *,long *,long *)
?GetMethodQualifier@CWbemInstance@@UAEJPBG0PAVCVar@@PAJ2@Z
; public: long __thiscall CMethodPart::GetMethodQualifierSet(unsigned short const *,struct IWbemQualifierSet * *)
?GetMethodQualifierSet@CMethodPart@@QAEJPBGPAPAUIWbemQualifierSet@@@Z
; public: virtual long __stdcall CWbemClass::GetMethodQualifierSet(unsigned short const *,struct IWbemQualifierSet * *)
?GetMethodQualifierSet@CWbemClass@@UAGJPBGPAPAUIWbemQualifierSet@@@Z
; public: virtual long __stdcall CWbemInstance::GetMethodQualifierSet(unsigned short const *,struct IWbemQualifierSet * *)
?GetMethodQualifierSet@CWbemInstance@@UAGJPBGPAPAUIWbemQualifierSet@@@Z
; public: unsigned long __thiscall CWbemDataPacket::GetMinHeaderSize(void)
?GetMinHeaderSize@CWbemDataPacket@@QAEKXZ
; public: static unsigned long __stdcall CBasicQualifierSet::GetMinLength(void)
?GetMinLength@CBasicQualifierSet@@SGKXZ
; public: static unsigned long __stdcall CClassAndMethods::GetMinLength(void)
?GetMinLength@CClassAndMethods@@SGKXZ
; public: static int __stdcall CClassPart::GetMinLength(void)
?GetMinLength@CClassPart@@SGHXZ
; public: static unsigned long __stdcall CDataTable::GetMinLength(void)
?GetMinLength@CDataTable@@SGKXZ
; public: static unsigned long __stdcall CDecorationPart::GetMinLength(void)
?GetMinLength@CDecorationPart@@SGKXZ
; public: static unsigned long __stdcall CFastHeap::GetMinLength(void)
?GetMinLength@CFastHeap@@SGKXZ
; public: static unsigned long __stdcall CMethodPart::GetMinLength(void)
?GetMinLength@CMethodPart@@SGKXZ
; public: static unsigned long __stdcall CPropertyLookupTable::GetMinLength(void)
?GetMinLength@CPropertyLookupTable@@SGKXZ
; public: static unsigned long __stdcall CWbemClass::GetMinLength(void)
?GetMinLength@CWbemClass@@SGKXZ
; protected: class CCompressedString * __thiscall CMethodPart::GetName(int)
?GetName@CMethodPart@@IAEPAVCCompressedString@@H@Z
; public: static unsigned short * __stdcall CSystemProperties::GetNameAsBSTR(int)
?GetNameAsBSTR@CSystemProperties@@SGPAGH@Z
; public: virtual long __stdcall CQualifierSet::GetNames(long,struct tagSAFEARRAY * *)
?GetNames@CQualifierSet@@UAGJJPAPAUtagSAFEARRAY@@@Z
; public: virtual long __stdcall CWbemObject::GetNames(unsigned short const *,long,struct tagVARIANT *,struct tagSAFEARRAY * *)
?GetNames@CWbemObject@@UAGJPBGJPAUtagVARIANT@@PAPAUtagSAFEARRAY@@@Z
; public: long __thiscall CWbemObject::GetNamespace(class CVar *)
?GetNamespace@CWbemObject@@QAEJPAVCVar@@@Z
; public: class CCompressedString * __thiscall CCompressedStringList::GetNext(class CCompressedString *)
?GetNext@CCompressedStringList@@QAEPAVCCompressedString@@PAV2@@Z
; public: long __thiscall CWbemInstance::GetNonsystemPropertyValue(unsigned short const *,class CVar *)
?GetNonsystemPropertyValue@CWbemInstance@@QAEJPBGPAVCVar@@@Z
; public: virtual long __stdcall CWbemObject::GetNormalizedPath(long,unsigned short * *)
?GetNormalizedPath@CWbemObject@@UAGJJPAPAG@Z
; public: unsigned long __thiscall CDataTable::GetNullnessLength(void)
?GetNullnessLength@CDataTable@@QAEKXZ
; public: static int __stdcall CSystemProperties::GetNumDecorationIndependentProperties(void)
?GetNumDecorationIndependentProperties@CSystemProperties@@SGHXZ
; public: int __thiscall CUntypedArray::GetNumElements(void)
?GetNumElements@CUntypedArray@@QAEHXZ
; public: int __thiscall CLimitationMapping::GetNumMappings(void)
?GetNumMappings@CLimitationMapping@@QAEHXZ
; protected: int __thiscall CMethodPart::GetNumMethods(void)
?GetNumMethods@CMethodPart@@IAEHXZ
; public: int __thiscall CWbemObject::GetNumParents(void)
?GetNumParents@CWbemObject@@QAEHXZ
; public: int __thiscall CPropertyLookupTable::GetNumProperties(void)
?GetNumProperties@CPropertyLookupTable@@QAEHXZ
; public: virtual int __thiscall CWbemClass::GetNumProperties(void)
?GetNumProperties@CWbemClass@@UAEHXZ
; public: virtual int __thiscall CWbemInstance::GetNumProperties(void)
?GetNumProperties@CWbemInstance@@UAEHXZ
; public: int __thiscall CQualifierSetList::GetNumSets(void)
?GetNumSets@CQualifierSetList@@QAEHXZ
; public: int __thiscall CCompressedStringList::GetNumStrings(void)
?GetNumStrings@CCompressedStringList@@QAEHXZ
; public: static int __stdcall CSystemProperties::GetNumSystemProperties(void)
?GetNumSystemProperties@CSystemProperties@@SGHXZ
; public: int __thiscall CBasicQualifierSet::GetNumUpperBound(void)
?GetNumUpperBound@CBasicQualifierSet@@QAEHXZ
; public: virtual long __stdcall CWbemObject::GetObjQual(unsigned short const *,long,unsigned long,long *,unsigned long *,unsigned long *,void *)
?GetObjQual@CWbemObject@@UAGJPBGJKPAJPAK2PAX@Z
; public: virtual long __stdcall CWbemObject::GetObjectMemory(void *,unsigned long,unsigned long *)
?GetObjectMemory@CWbemObject@@UAGJPAXKPAK@Z
; public: virtual long __stdcall CWbemClass::GetObjectParts(void *,unsigned long,unsigned long,unsigned long *)
?GetObjectParts@CWbemClass@@UAGJPAXKKPAK@Z
; public: virtual long __stdcall CWbemInstance::GetObjectParts(void *,unsigned long,unsigned long,unsigned long *)
?GetObjectParts@CWbemInstance@@UAGJPAXKKPAK@Z
; public: long __thiscall CInstancePart::GetObjectQualifier(unsigned short const *,class CVar *,long *)
?GetObjectQualifier@CInstancePart@@QAEJPBGPAVCVar@@PAJ@Z
; public: virtual long __stdcall CWbemClass::GetObjectText(long,unsigned short * *)
?GetObjectText@CWbemClass@@UAGJJPAPAG@Z
; public: virtual long __stdcall CWbemInstance::GetObjectText(long,unsigned short * *)
?GetObjectText@CWbemInstance@@UAGJJPAPAG@Z
; public: long __thiscall CWbemClassCache::GetObjectW(struct _GUID &,struct IWbemClassObject * *)
?GetObjectW@CWbemClassCache@@QAEJAAU_GUID@@PAPAUIWbemClassObject@@@Z
; public: class CUntypedValue * __thiscall CDataTable::GetOffset(unsigned long)
?GetOffset@CDataTable@@QAEPAVCUntypedValue@@K@Z
; public: class CCompressedString * __thiscall CWbemObject::GetParentAtIndex(int)
?GetParentAtIndex@CWbemObject@@QAEPAVCCompressedString@@H@Z
; public: virtual long __stdcall CWbemClass::GetParentClassFromBlob(long,unsigned long,void *,unsigned short * *)
?GetParentClassFromBlob@CWbemClass@@UAGJJKPAXPAPAG@Z
; public: virtual long __stdcall CWbemObject::GetParentClassFromBlob(long,unsigned long,void *,unsigned short * *)
?GetParentClassFromBlob@CWbemObject@@UAGJJKPAXPAPAG@Z
; public: long __thiscall CWbemObject::GetPath(class CVar *)
?GetPath@CWbemObject@@QAEJPAVCVar@@@Z
; public: static class CUntypedArray * __stdcall CUntypedArray::GetPointer(class CPtrSource *)
?GetPointer@CUntypedArray@@SGPAV1@PAVCPtrSource@@@Z
; public: class CCompressedString * __thiscall CCompressedStringList::GetPrevious(class CCompressedString *)
?GetPrevious@CCompressedStringList@@QAEPAVCCompressedString@@PAV2@@Z
; public: virtual long __stdcall CWbemObject::GetPropAddrByHandle(long,long,unsigned long *,void * *)
?GetPropAddrByHandle@CWbemObject@@UAGJJJPAKPAPAX@Z
; public: virtual long __thiscall CWbemClass::GetPropName(int,class CVar *)
?GetPropName@CWbemClass@@UAEJHPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetPropName(int,class CVar *)
?GetPropName@CWbemInstance@@UAEJHPAVCVar@@@Z
; public: virtual long __stdcall CWbemObject::GetPropQual(unsigned short const *,unsigned short const *,long,unsigned long,long *,unsigned long *,unsigned long *,void *)
?GetPropQual@CWbemObject@@UAGJPBG0JKPAJPAK2PAX@Z
; public: long __thiscall CClassPart::GetPropQualifier(class CPropertyInformation *,unsigned short const *,class CVar *,long *,long *)
?GetPropQualifier@CClassPart@@QAEJPAVCPropertyInformation@@PBGPAVCVar@@PAJ3@Z
; public: long __thiscall CClassPart::GetPropQualifier(unsigned short const *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetPropQualifier@CClassPart@@QAEJPBG0PAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemClass::GetPropQualifier(class CPropertyInformation *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetPropQualifier@CWbemClass@@UAEJPAVCPropertyInformation@@PBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemClass::GetPropQualifier(class CPropertyInformation *,unsigned short const *,class CVar *,long *,long *)
?GetPropQualifier@CWbemClass@@UAEJPAVCPropertyInformation@@PBGPAVCVar@@PAJ3@Z
; public: virtual long __thiscall CWbemClass::GetPropQualifier(unsigned short const *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetPropQualifier@CWbemClass@@UAEJPBG0PAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemClass::GetPropQualifier(unsigned short const *,unsigned short const *,class CVar *,long *,long *)
?GetPropQualifier@CWbemClass@@UAEJPBG0PAVCVar@@PAJ2@Z
; public: virtual long __thiscall CWbemInstance::GetPropQualifier(class CPropertyInformation *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetPropQualifier@CWbemInstance@@UAEJPAVCPropertyInformation@@PBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemInstance::GetPropQualifier(class CPropertyInformation *,unsigned short const *,class CVar *,long *,long *)
?GetPropQualifier@CWbemInstance@@UAEJPAVCPropertyInformation@@PBGPAVCVar@@PAJ3@Z
; public: virtual long __thiscall CWbemInstance::GetPropQualifier(unsigned short const *,unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetPropQualifier@CWbemInstance@@UAEJPBG0PAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemInstance::GetPropQualifier(unsigned short const *,unsigned short const *,class CVar *,long *,long *)
?GetPropQualifier@CWbemInstance@@UAEJPBG0PAVCVar@@PAJ2@Z
; protected: virtual long __thiscall CWbemClass::GetProperty(class CPropertyInformation *,class CVar *)
?GetProperty@CWbemClass@@MAEJPAVCPropertyInformation@@PAVCVar@@@Z
; public: virtual long __thiscall CWbemClass::GetProperty(unsigned short const *,class CVar *)
?GetProperty@CWbemClass@@UAEJPBGPAVCVar@@@Z
; protected: virtual long __thiscall CWbemInstance::GetProperty(class CPropertyInformation *,class CVar *)
?GetProperty@CWbemInstance@@MAEJPAVCPropertyInformation@@PAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetProperty(unsigned short const *,class CVar *)
?GetProperty@CWbemInstance@@UAEJPBGPAVCVar@@@Z
; public: long __thiscall CClassPart::GetPropertyCount(class CVar *)
?GetPropertyCount@CClassPart@@QAEJPAVCVar@@@Z
; public: virtual long __thiscall CWbemClass::GetPropertyCount(class CVar *)
?GetPropertyCount@CWbemClass@@UAEJPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetPropertyCount(class CVar *)
?GetPropertyCount@CWbemInstance@@UAEJPAVCVar@@@Z
; public: long __thiscall CClassPart::GetPropertyHandle(unsigned short const *,long *,long *)
?GetPropertyHandle@CClassPart@@QAEJPBGPAJ1@Z
; public: virtual long __stdcall CWbemObject::GetPropertyHandle(unsigned short const *,long *,long *)
?GetPropertyHandle@CWbemObject@@UAGJPBGPAJ1@Z
; public: long __thiscall CClassPart::GetPropertyHandleEx(unsigned short const *,long *,long *)
?GetPropertyHandleEx@CClassPart@@QAEJPBGPAJ1@Z
; public: virtual long __stdcall CWbemObject::GetPropertyHandleEx(unsigned short const *,long,long *,long *)
?GetPropertyHandleEx@CWbemObject@@UAGJPBGJPAJ1@Z
; public: long __thiscall CWbemObject::GetPropertyIndex(unsigned short const *,int *)
?GetPropertyIndex@CWbemObject@@QAEJPBGPAH@Z
; public: long __thiscall CClassPart::GetPropertyInfoByHandle(long,unsigned short * *,long *)
?GetPropertyInfoByHandle@CClassPart@@QAEJJPAPAGPAJ@Z
; public: virtual long __stdcall CWbemObject::GetPropertyInfoByHandle(long,unsigned short * *,long *)
?GetPropertyInfoByHandle@CWbemObject@@UAGJJPAPAGPAJ@Z
; public: struct CPropertyLookup * __thiscall CClassPart::GetPropertyLookup(int)
?GetPropertyLookup@CClassPart@@QAEPAUCPropertyLookup@@H@Z
; public: long __thiscall CWbemObject::GetPropertyNameFromIndex(int,unsigned short * *)
?GetPropertyNameFromIndex@CWbemObject@@QAEJHPAPAG@Z
; public: long __thiscall CClassPart::GetPropertyOrigin(unsigned short const *,unsigned short * *)
?GetPropertyOrigin@CClassPart@@QAEJPBGPAPAG@Z
; public: virtual long __stdcall CWbemObject::GetPropertyOrigin(unsigned short const *,unsigned short * *)
?GetPropertyOrigin@CWbemObject@@UAGJPBGPAPAG@Z
; public: virtual long __stdcall CWbemClass::GetPropertyQualifierSet(unsigned short const *,struct IWbemQualifierSet * *)
?GetPropertyQualifierSet@CWbemClass@@UAGJPBGPAPAUIWbemQualifierSet@@@Z
; public: virtual long __stdcall CWbemInstance::GetPropertyQualifierSet(unsigned short const *,struct IWbemQualifierSet * *)
?GetPropertyQualifierSet@CWbemInstance@@UAGJPBGPAPAUIWbemQualifierSet@@@Z
; public: unsigned char * __thiscall CClassPart::GetPropertyQualifierSetData(unsigned short const *)
?GetPropertyQualifierSetData@CClassPart@@QAEPAEPBG@Z
; public: class CCompressedString * __thiscall CWbemObject::GetPropertyString(long)
?GetPropertyString@CWbemObject@@QAEPAVCCompressedString@@J@Z
; public: long __thiscall CClassPart::GetPropertyType(class CPropertyInformation *,long *,long *)
?GetPropertyType@CClassPart@@QAEJPAVCPropertyInformation@@PAJ1@Z
; public: long __thiscall CClassPart::GetPropertyType(unsigned short const *,long *,long *)
?GetPropertyType@CClassPart@@QAEJPBGPAJ1@Z
; public: static long __stdcall CSystemProperties::GetPropertyType(unsigned short const *,long *,long *)
?GetPropertyType@CSystemProperties@@SGJPBGPAJ1@Z
; public: virtual long __thiscall CWbemClass::GetPropertyType(class CPropertyInformation *,long *,long *)
?GetPropertyType@CWbemClass@@UAEJPAVCPropertyInformation@@PAJ1@Z
; public: virtual long __thiscall CWbemClass::GetPropertyType(unsigned short const *,long *,long *)
?GetPropertyType@CWbemClass@@UAEJPBGPAJ1@Z
; public: virtual long __thiscall CWbemInstance::GetPropertyType(class CPropertyInformation *,long *,long *)
?GetPropertyType@CWbemInstance@@UAEJPAVCPropertyInformation@@PAJ1@Z
; public: virtual long __thiscall CWbemInstance::GetPropertyType(unsigned short const *,long *,long *)
?GetPropertyType@CWbemInstance@@UAEJPBGPAJ1@Z
; public: virtual long __stdcall CWbemObject::GetPropertyValue(struct _tag_WbemPropertyName *,long,unsigned short * *,struct tagVARIANT *)
?GetPropertyValue@CWbemObject@@UAGJPAU_tag_WbemPropertyName@@JPAPAGPAUtagVARIANT@@@Z
; public: long __thiscall CClassPart::GetQualifier(unsigned short const *,class CVar *,long *,long *)
?GetQualifier@CClassPart@@QAEJPBGPAVCVar@@PAJ2@Z
; public: long __thiscall CInstancePart::GetQualifier(unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetQualifier@CInstancePart@@QAEJPBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: long __thiscall CInstancePart::GetQualifier(unsigned short const *,class CVar *,long *,long *)
?GetQualifier@CInstancePart@@QAEJPBGPAVCVar@@PAJ2@Z
; public: long __thiscall CQualifierSet::GetQualifier(unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetQualifier@CQualifierSet@@QAEJPBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: long __thiscall CQualifierSet::GetQualifier(unsigned short const *,class CVar *,long *,long *)
?GetQualifier@CQualifierSet@@QAEJPBGPAVCVar@@PAJ2@Z
; public: struct CQualifier * __thiscall CQualifierSet::GetQualifier(unsigned short const *)
?GetQualifier@CQualifierSet@@QAEPAUCQualifier@@PBG@Z
; public: struct CQualifier * __thiscall CQualifierSet::GetQualifier(unsigned short const *,int &)
?GetQualifier@CQualifierSet@@QAEPAUCQualifier@@PBGAAH@Z
; public: virtual long __thiscall CWbemClass::GetQualifier(unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetQualifier@CWbemClass@@UAEJPBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemClass::GetQualifier(unsigned short const *,class CVar *,long *,long *)
?GetQualifier@CWbemClass@@UAEJPBGPAVCVar@@PAJ2@Z
; public: virtual long __thiscall CWbemInstance::GetQualifier(unsigned short const *,long *,class CTypedValue *,class CFastHeap * *,int)
?GetQualifier@CWbemInstance@@UAEJPBGPAJPAVCTypedValue@@PAPAVCFastHeap@@H@Z
; public: virtual long __thiscall CWbemInstance::GetQualifier(unsigned short const *,class CVar *,long *,long *)
?GetQualifier@CWbemInstance@@UAEJPBGPAVCVar@@PAJ2@Z
; public: long __thiscall CWbemObject::GetQualifierArrayInfo(unsigned short const *,unsigned short const *,int,long,long *,unsigned long *)
?GetQualifierArrayInfo@CWbemObject@@QAEJPBG0HJPAJPAK@Z
; public: long __thiscall CWbemObject::GetQualifierArrayRange(unsigned short const *,unsigned short const *,int,long,unsigned long,unsigned long,unsigned long,unsigned long *,unsigned long *,void *)
?GetQualifierArrayRange@CWbemObject@@QAEJPBG0HJKKKPAK1PAX@Z
; public: struct CQualifier * __thiscall CBasicQualifierSet::GetQualifierLocally(class CCompressedString *)
?GetQualifierLocally@CBasicQualifierSet@@QAEPAUCQualifier@@PAVCCompressedString@@@Z
; public: struct CQualifier * __thiscall CBasicQualifierSet::GetQualifierLocally(unsigned short const *)
?GetQualifierLocally@CBasicQualifierSet@@QAEPAUCQualifier@@PBG@Z
; public: struct CQualifier * __thiscall CBasicQualifierSet::GetQualifierLocally(unsigned short const *,int &)
?GetQualifierLocally@CBasicQualifierSet@@QAEPAUCQualifier@@PBGAAH@Z
; public: static struct CQualifier * __stdcall CBasicQualifierSet::GetQualifierLocally(unsigned char *,class CFastHeap *,class CCompressedString *)
?GetQualifierLocally@CBasicQualifierSet@@SGPAUCQualifier@@PAEPAVCFastHeap@@PAVCCompressedString@@@Z
; public: static struct CQualifier * __stdcall CBasicQualifierSet::GetQualifierLocally(unsigned char *,class CFastHeap *,unsigned short const *)
?GetQualifierLocally@CBasicQualifierSet@@SGPAUCQualifier@@PAEPAVCFastHeap@@PBG@Z
; public: static struct CQualifier * __stdcall CBasicQualifierSet::GetQualifierLocally(unsigned char *,class CFastHeap *,unsigned short const *,int &)
?GetQualifierLocally@CBasicQualifierSet@@SGPAUCQualifier@@PAEPAVCFastHeap@@PBGAAH@Z
; public: virtual long __stdcall CWbemClass::GetQualifierSet(struct IWbemQualifierSet * *)
?GetQualifierSet@CWbemClass@@UAGJPAPAUIWbemQualifierSet@@@Z
; public: virtual long __stdcall CWbemInstance::GetQualifierSet(struct IWbemQualifierSet * *)
?GetQualifierSet@CWbemInstance@@UAGJPAPAUIWbemQualifierSet@@@Z
; public: unsigned char * __thiscall CQualifierSetList::GetQualifierSetData(int)
?GetQualifierSetData@CQualifierSetList@@QAEPAEH@Z
; public: static unsigned char * __stdcall CQualifierSetList::GetQualifierSetData(unsigned char *,int)
?GetQualifierSetData@CQualifierSetList@@SGPAEPAEH@Z
; public: virtual unsigned char * __thiscall CInstancePart::GetQualifierSetListStart(void)
?GetQualifierSetListStart@CInstancePart@@UAEPAEXZ
; public: virtual unsigned char * __thiscall CClassPart::GetQualifierSetStart(void)
?GetQualifierSetStart@CClassPart@@UAEPAEXZ
; public: virtual unsigned char * __thiscall CInstancePQSContainer::GetQualifierSetStart(void)
?GetQualifierSetStart@CInstancePQSContainer@@UAEPAEXZ
; public: virtual unsigned char * __thiscall CInstancePart::GetQualifierSetStart(void)
?GetQualifierSetStart@CInstancePart@@UAEPAEXZ
; public: virtual unsigned char * __thiscall CMethodQualifierSetContainer::GetQualifierSetStart(void)
?GetQualifierSetStart@CMethodQualifierSetContainer@@UAEPAEXZ
; public: static long __stdcall CUntypedArray::GetRange(class CPtrSource *,unsigned long,unsigned long,class CFastHeap *,unsigned long,unsigned long,unsigned long,unsigned long *,void *)
?GetRange@CUntypedArray@@SGJPAVCPtrSource@@KKPAVCFastHeap@@KKKPAKPAX@Z
; public: unsigned char * __thiscall CCompressedString::GetRawData(void)const 
?GetRawData@CCompressedString@@QBEPAEXZ
; public: unsigned long __thiscall CFastHeap::GetRealLength(void)
?GetRealLength@CFastHeap@@QAEKXZ
; protected: long __thiscall CWbemRefreshingSvc::GetRefrMgr(struct _IWbemRefresherMgr * *)
?GetRefrMgr@CWbemRefreshingSvc@@IAEJPAPAU_IWbemRefresherMgr@@@Z
; public: struct CQualifier * __thiscall CBasicQualifierSet::GetRegularQualifierLocally(unsigned short const *)
?GetRegularQualifierLocally@CBasicQualifierSet@@QAEPAUCQualifier@@PBG@Z
; public: static struct CQualifier * __stdcall CBasicQualifierSet::GetRegularQualifierLocally(unsigned char *,class CFastHeap *,unsigned short const *)
?GetRegularQualifierLocally@CBasicQualifierSet@@SGPAUCQualifier@@PAEPAVCFastHeap@@PBG@Z
; public: virtual unsigned short * __thiscall CWbemClass::GetRelPath(int)
?GetRelPath@CWbemClass@@UAEPAGH@Z
; public: virtual unsigned short * __thiscall CWbemInstance::GetRelPath(int)
?GetRelPath@CWbemInstance@@UAEPAGH@Z
; public: long __thiscall CWbemObject::GetRelPath(class CVar *)
?GetRelPath@CWbemObject@@QAEJPAVCVar@@@Z
; protected: virtual long __thiscall CWbemRefreshingSvc::GetRemoteRefresher(struct _WBEM_REFRESHER_ID *,long,unsigned long,struct IWbemRemoteRefresher * *,struct _GUID *,unsigned long *)
?GetRemoteRefresher@CWbemRefreshingSvc@@MAEJPAU_WBEM_REFRESHER_ID@@JKPAPAUIWbemRemoteRefresher@@PAU_GUID@@PAK@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XWbemRefrSvc::GetRemoteRefresher(struct _WBEM_REFRESHER_ID *,long,unsigned long,struct IWbemRemoteRefresher * *,struct _GUID *,unsigned long *)
?GetRemoteRefresher@XWbemRefrSvc@CWbemRefreshingSvc@@UAGJPAU_WBEM_REFRESHER_ID@@JKPAPAUIWbemRemoteRefresher@@PAU_GUID@@PAK@Z
; public: class CBasicQualifierSet * __thiscall CMethodQualifierSetContainer::GetSecondarySet(void)
?GetSecondarySet@CMethodQualifierSetContainer@@QAEPAVCBasicQualifierSet@@XZ
; protected: static unsigned long __stdcall CCompressedStringList::GetSeparatorLength(void)
?GetSeparatorLength@CCompressedStringList@@KGKXZ
; public: long __thiscall CWbemObject::GetServer(class CVar *)
?GetServer@CWbemObject@@QAEJPAVCVar@@@Z
; public: long __thiscall CWbemObject::GetServerAndNamespace(class CVar *)
?GetServerAndNamespace@CWbemObject@@QAEJPAVCVar@@@Z
; public: unsigned short * __thiscall CWbemThreadSecurityHandle::GetServerPrincipalName(void)
?GetServerPrincipalName@CWbemThreadSecurityHandle@@QAEPAGXZ
; public: unsigned long __thiscall CMethodDescription::GetSig(int)
?GetSig@CMethodDescription@@QAEKH@Z
; protected: void __thiscall CMethodPart::GetSignature(int,int,class CWbemObject * *)
?GetSignature@CMethodPart@@IAEXHHPAPAVCWbemObject@@@Z
; public: int __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::GetSize(void)const 
?GetSize@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QBEHXZ
; public: int __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::GetSize(void)const 
?GetSize@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QBEHXZ
; public: virtual long __stdcall CWbemObject::GetSource(unsigned short * *)
?GetSource@CWbemObject@@UAGJPAPAG@Z
; public: unsigned char * __thiscall CBasicQualifierSet::GetStart(void)
?GetStart@CBasicQualifierSet@@QAEPAEXZ
; public: unsigned char * __thiscall CClassAndMethods::GetStart(void)
?GetStart@CClassAndMethods@@QAEPAEXZ
; public: unsigned char * __thiscall CClassPart::GetStart(void)
?GetStart@CClassPart@@QAEPAEXZ
; public: unsigned char * __thiscall CCompressedString::GetStart(void)
?GetStart@CCompressedString@@QAEPAEXZ
; public: unsigned char * __thiscall CCompressedStringList::GetStart(void)
?GetStart@CCompressedStringList@@QAEPAEXZ
; public: unsigned char * __thiscall CDataTable::GetStart(void)
?GetStart@CDataTable@@QAEPAEXZ
; public: unsigned char * __thiscall CDecorationPart::GetStart(void)
?GetStart@CDecorationPart@@QAEPAEXZ
; public: unsigned char * __thiscall CEmbeddedObject::GetStart(void)
?GetStart@CEmbeddedObject@@QAEPAEXZ
; public: unsigned char * __thiscall CFastHeap::GetStart(void)
?GetStart@CFastHeap@@QAEPAEXZ
; public: unsigned char * __thiscall CInstancePart::GetStart(void)
?GetStart@CInstancePart@@QAEPAEXZ
; public: unsigned char * __thiscall CMethodPart::GetStart(void)
?GetStart@CMethodPart@@QAEPAEXZ
; public: unsigned char * __thiscall CPropertyLookupTable::GetStart(void)
?GetStart@CPropertyLookupTable@@QAEPAEXZ
; public: unsigned char * __thiscall CQualifierSetList::GetStart(void)
?GetStart@CQualifierSetList@@QAEPAEXZ
; public: unsigned char * __thiscall CWbemInstance::GetStart(void)
?GetStart@CWbemInstance@@QAEPAEXZ
; public: unsigned char * __thiscall CWbemObject::GetStart(void)
?GetStart@CWbemObject@@QAEPAEXZ
; public: int __thiscall CCompressedString::GetStringLength(void)const 
?GetStringLength@CCompressedString@@QBEHXZ
; public: static long __stdcall CClassAndMethods::GetSuperclassName(class WString &,unsigned char *)
?GetSuperclassName@CClassAndMethods@@SGJAAVWString@@PAE@Z
; public: long __thiscall CClassPart::GetSuperclassName(class CVar *)
?GetSuperclassName@CClassPart@@QAEJPAVCVar@@@Z
; public: class CCompressedString * __thiscall CClassPart::GetSuperclassName(void)
?GetSuperclassName@CClassPart@@QAEPAVCCompressedString@@XZ
; public: virtual long __thiscall CWbemClass::GetSuperclassName(class CVar *)
?GetSuperclassName@CWbemClass@@UAEJPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::GetSuperclassName(class CVar *)
?GetSuperclassName@CWbemInstance@@UAEJPAVCVar@@@Z
; public: unsigned short * __thiscall CType::GetSyntax(void)
?GetSyntax@CType@@QAEPAGXZ
; public: static unsigned short * __stdcall CType::GetSyntax(unsigned long)
?GetSyntax@CType@@SGPAGK@Z
; public: long __thiscall CWbemObject::GetSystemProperty(int,class CVar *)
?GetSystemProperty@CWbemObject@@QAEJHPAVCVar@@@Z
; public: long __thiscall CWbemObject::GetSystemPropertyByName(unsigned short const *,class CVar *)
?GetSystemPropertyByName@CWbemObject@@QAEJPBGPAVCVar@@@Z
; public: long __thiscall CBasicQualifierSet::GetText(long,class WString &)
?GetText@CBasicQualifierSet@@QAEJJAAVWString@@@Z
; public: static long __stdcall CBasicQualifierSet::GetText(unsigned char *,class CFastHeap *,long,class WString &)
?GetText@CBasicQualifierSet@@SGJPAEPAVCFastHeap@@JAAVWString@@@Z
; public: char const * __thiscall CInternalString::GetText(void)const 
?GetText@CInternalString@@QBEPBDXZ
; public: virtual long __stdcall CWmiObjectTextSrc::XObjectTextSrc::GetText(long,struct IWbemClassObject *,unsigned long,struct IWbemContext *,unsigned short * *)
?GetText@XObjectTextSrc@CWmiObjectTextSrc@@UAGJJPAUIWbemClassObject@@KPAUIWbemContext@@PAPAG@Z
; public: virtual long __stdcall CWbemCallSecurity::GetThreadSecurity(enum tag_WMI_THREAD_SECURITY_ORIGIN,struct _IWmiThreadSecHandle * *)
?GetThreadSecurity@CWbemCallSecurity@@UAGJW4tag_WMI_THREAD_SECURITY_ORIGIN@@PAPAU_IWmiThreadSecHandle@@@Z
; public: class CWbemThreadSecurityHandle * __thiscall CWbemCallSecurity::GetThreadSecurityHandle(void)
?GetThreadSecurityHandle@CWbemCallSecurity@@QAEPAVCWbemThreadSecurityHandle@@XZ
; public: void * __thiscall CWbemThreadSecurityHandle::GetThreadToken(void)
?GetThreadToken@CWbemThreadSecurityHandle@@QAEPAXXZ
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetToken(void * *)
?GetToken@CWbemThreadSecurityHandle@@UAGJPAPAX@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetTokenOrigin(enum tag_WMI_THREAD_SECURITY_ORIGIN *)
?GetTokenOrigin@CWbemThreadSecurityHandle@@UAGJPAW4tag_WMI_THREAD_SECURITY_ORIGIN@@@Z
; public: unsigned long __thiscall CClassPart::GetTotalRealLength(void)
?GetTotalRealLength@CClassPart@@QAEKXZ
; public: unsigned long __thiscall CInstancePart::GetTotalRealLength(void)
?GetTotalRealLength@CInstancePart@@QAEKXZ
; public: long __thiscall CWbemInstance::GetTransferArrayBlob(long,unsigned char * *,long *)
?GetTransferArrayBlob@CWbemInstance@@QAEJJPAPAEPAJ@Z
; public: long __thiscall CWbemInstance::GetTransferArrayBlobSize(void)
?GetTransferArrayBlobSize@CWbemInstance@@QAEJXZ
; public: static long __stdcall CWbemInstance::GetTransferArrayHeaderSize(void)
?GetTransferArrayHeaderSize@CWbemInstance@@SGJXZ
; public: long __thiscall CWbemInstance::GetTransferBlob(long *,long *,unsigned char * *)
?GetTransferBlob@CWbemInstance@@QAEJPAJ0PAPAE@Z
; public: long __thiscall CWbemInstance::GetTransferBlobSize(void)
?GetTransferBlobSize@CWbemInstance@@QAEJXZ
; public: virtual long __stdcall CWbemObject::GetUnmarshalClass(struct _GUID const &,void *,unsigned long,void *,unsigned long,struct _GUID *)
?GetUnmarshalClass@CWbemObject@@UAGJABU_GUID@@PAXK1KPAU2@@Z
; public: unsigned long __thiscall CFastHeap::GetUsedLength(void)
?GetUsedLength@CFastHeap@@QAEKXZ
; public: virtual long __stdcall CWbemCallSecurity::GetUser(unsigned long *,unsigned short *)
?GetUser@CWbemCallSecurity@@UAGJPAKPAG@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetUser(unsigned long *,unsigned short *)
?GetUser@CWbemThreadSecurityHandle@@UAGJPAKPAG@Z
; public: virtual long __stdcall CWbemCallSecurity::GetUserSid(unsigned long *,void *)
?GetUserSid@CWbemCallSecurity@@UAGJPAKPAX@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::GetUserSid(unsigned long *,void *)
?GetUserSid@CWbemThreadSecurityHandle@@UAGJPAKPAX@Z
; public: unsigned short __thiscall CType::GetVARTYPE(void)
?GetVARTYPE@CType@@QAEGXZ
; public: static unsigned short __stdcall CType::GetVARTYPE(unsigned long)
?GetVARTYPE@CType@@SGGK@Z
; public: static unsigned short * __stdcall CWbemObject::GetValueText(long,class CVar &,unsigned long)
?GetValueText@CWbemObject@@SGPAGJAAVCVar@@K@Z
; public: unsigned long __thiscall CLimitationMapping::GetVtableLength(void)
?GetVtableLength@CLimitationMapping@@QAEKXZ
; public: virtual struct IUnknown * __thiscall CClassAndMethods::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CClassAndMethods@@UAEPAUIUnknown@@XZ
; public: virtual struct IUnknown * __thiscall CClassPart::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CClassPart@@UAEPAUIUnknown@@XZ
; public: virtual struct IUnknown * __thiscall CInstancePQSContainer::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CInstancePQSContainer@@UAEPAUIUnknown@@XZ
; public: virtual struct IUnknown * __thiscall CInstancePart::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CInstancePart@@UAEPAUIUnknown@@XZ
; public: struct IUnknown * __thiscall CMethodPart::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CMethodPart@@QAEPAUIUnknown@@XZ
; public: virtual struct IUnknown * __thiscall CMethodQualifierSetContainer::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CMethodQualifierSetContainer@@UAEPAUIUnknown@@XZ
; public: struct IUnknown * __thiscall CQualifierSetList::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CQualifierSetList@@QAEPAUIUnknown@@XZ
; public: struct IUnknown * __thiscall CWbemClass::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CWbemClass@@QAEPAUIUnknown@@XZ
; public: virtual struct IUnknown * __thiscall CWbemInstance::GetWbemObjectUnknown(void)
?GetWbemObjectUnknown@CWbemInstance@@UAEPAUIUnknown@@XZ
; public: static int __stdcall CBasicQualifierSet::HasLocalQualifiers(unsigned char *)
?HasLocalQualifiers@CBasicQualifierSet@@SGHPAE@Z
; public: int __thiscall CWbemObject::HasRefs(void)
?HasRefs@CWbemObject@@QAEHXZ
; public: virtual long __stdcall CWbemCallSecurity::ImpersonateClient(void)
?ImpersonateClient@CWbemCallSecurity@@UAGJXZ
; public: void __thiscall CBasicQualifierSet::IncrementLength(unsigned long)
?IncrementLength@CBasicQualifierSet@@QAEXK@Z
; public: int __thiscall CClassPart::InheritsFrom(unsigned short const *)
?InheritsFrom@CClassPart@@QAEHPBG@Z
; public: virtual long __stdcall CWbemObject::InheritsFrom(unsigned short const *)
?InheritsFrom@CWbemObject@@UAGJPBG@Z
; public: long __thiscall CWbemFetchRefrMgr::Init(struct _IWmiProvSS *,struct IWbemServices *)
?Init@CWbemFetchRefrMgr@@QAEJPAU_IWmiProvSS@@PAUIWbemServices@@@Z
; public: virtual long __stdcall CWbemFetchRefrMgr::XFetchRefrMgr::Init(struct _IWmiProvSS *,struct IWbemServices *)
?Init@XFetchRefrMgr@CWbemFetchRefrMgr@@UAGJPAU_IWmiProvSS@@PAUIWbemServices@@@Z
; public: long __thiscall CWbemClass::InitEmpty(int,int)
?InitEmpty@CWbemClass@@QAEJHH@Z
; public: long __thiscall CWbemInstance::InitEmptyInstance(class CClassPart &,unsigned char *,int,class CDecorationPart *)
?InitEmptyInstance@CWbemInstance@@QAEJAAVCClassPart@@PAEHPAVCDecorationPart@@@Z
; public: long __thiscall CWbemInstance::InitNew(class CWbemClass *,int,class CDecorationPart *)
?InitNew@CWbemInstance@@QAEJPAVCWbemClass@@HPAVCDecorationPart@@@Z
; public: long __thiscall CClassPart::InitPropertyQualifierSet(unsigned short const *,class CClassPropertyQualifierSet *)
?InitPropertyQualifierSet@CClassPart@@QAEJPBGPAVCClassPropertyQualifierSet@@@Z
; public: static void __stdcall CKnownStringTable::Initialize(void)
?Initialize@CKnownStringTable@@SGXXZ
; public: virtual int __thiscall CWbemRefreshingSvc::Initialize(void)
?Initialize@CWbemRefreshingSvc@@UAEHXZ
; protected: long __thiscall CWbemInstance::InitializePropQualifierSet(class CPropertyInformation *,class CInstancePropertyQualifierSet &)
?InitializePropQualifierSet@CWbemInstance@@IAEJPAVCPropertyInformation@@AAVCInstancePropertyQualifierSet@@@Z
; protected: long __thiscall CWbemInstance::InitializePropQualifierSet(unsigned short const *,class CInstancePropertyQualifierSet &)
?InitializePropQualifierSet@CWbemInstance@@IAEJPBGAAVCInstancePropertyQualifierSet@@@Z
; public: bool __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::InsertAt(int,class CFastPropertyBagItem *)
?InsertAt@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAE_NHPAVCFastPropertyBagItem@@@Z
; public: bool __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::InsertAt(int,class CWmiTextSource *)
?InsertAt@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAE_NHPAVCWmiTextSource@@@Z
; public: long __thiscall CPropertyLookupTable::InsertProperty(struct CPropertyLookup const &,int &)
?InsertProperty@CPropertyLookupTable@@QAEJABUCPropertyLookup@@AAH@Z
; public: long __thiscall CPropertyLookupTable::InsertProperty(unsigned short const *,unsigned long,int &)
?InsertProperty@CPropertyLookupTable@@QAEJPBGKAAH@Z
; public: long __thiscall CQualifierSetList::InsertQualifierSet(int)
?InsertQualifierSet@CQualifierSetList@@QAEJH@Z
; public: int __thiscall CClassPart::IsAbstract(void)
?IsAbstract@CClassPart@@QAEHXZ
; public: int __thiscall CWbemClass::IsAbstract(void)
?IsAbstract@CWbemClass@@QAEHXZ
; public: int __thiscall CClassPart::IsAmendment(void)
?IsAmendment@CClassPart@@QAEHXZ
; public: int __thiscall CWbemClass::IsAmendment(void)
?IsAmendment@CWbemClass@@QAEHXZ
; public: int __thiscall CType::IsArray(void)
?IsArray@CType@@QAEHXZ
; public: static int __stdcall CType::IsArray(unsigned long)
?IsArray@CType@@SGHK@Z
; public: long __thiscall CWbemObject::IsArrayPropertyHandle(long,long *,unsigned long *)
?IsArrayPropertyHandle@CWbemObject@@QAEJJPAJPAK@Z
; public: long __thiscall CUntypedArray::IsArrayValid(class CType,class CFastHeap *)
?IsArrayValid@CUntypedArray@@QAEJVCType@@PAVCFastHeap@@@Z
; protected: static int __stdcall CCompressedString::IsAsciiable(unsigned short const *)
?IsAsciiable@CCompressedString@@KGHPBG@Z
; public: int __thiscall CClassPart::IsAssociation(void)
?IsAssociation@CClassPart@@QAEHXZ
; public: int __thiscall CClassPart::IsAutocook(void)
?IsAutocook@CClassPart@@QAEHXZ
; public: int __thiscall CWbemClass::IsChildOf(class CWbemClass *)
?IsChildOf@CWbemClass@@QAEHPAV1@@Z
; protected: int __thiscall CWbemInstance::IsClassPartAvailable(void)
?IsClassPartAvailable@CWbemInstance@@IAEHXZ
; protected: int __thiscall CWbemInstance::IsClassPartInternal(void)
?IsClassPartInternal@CWbemInstance@@IAEHXZ
; protected: int __thiscall CWbemInstance::IsClassPartShared(void)
?IsClassPartShared@CWbemInstance@@IAEHXZ
; public: int __thiscall CDecorationPart::IsClientOnly(void)
?IsClientOnly@CDecorationPart@@QAEHXZ
; public: int __thiscall CWbemObject::IsClientOnly(void)
?IsClientOnly@CWbemObject@@QAEHXZ
; public: int __thiscall CQualifierSet::IsComplete(void)
?IsComplete@CQualifierSet@@QAEHXZ
; public: int __thiscall CClassPart::IsCompressed(void)
?IsCompressed@CClassPart@@QAEHXZ
; public: int __thiscall CWbemClass::IsCompressed(void)
?IsCompressed@CWbemClass@@QAEHXZ
; public: int __thiscall CDecorationPart::IsDecorated(void)
?IsDecorated@CDecorationPart@@QAEHXZ
; protected: int __thiscall CWbemInstance::IsDecorationPartAvailable(void)
?IsDecorationPartAvailable@CWbemInstance@@IAEHXZ
; public: int __thiscall CDataTable::IsDefault(int)
?IsDefault@CDataTable@@QAEHH@Z
; public: int __thiscall CClassPart::IsDynamic(void)
?IsDynamic@CClassPart@@QAEHXZ
; public: int __thiscall CWbemClass::IsDynamic(void)
?IsDynamic@CWbemClass@@QAEHXZ
; public: int __thiscall CBasicQualifierSet::IsEmpty(void)
?IsEmpty@CBasicQualifierSet@@QAEHXZ
; public: static int __stdcall CBasicQualifierSet::IsEmpty(unsigned char *)
?IsEmpty@CBasicQualifierSet@@SGHPAE@Z
; public: int __thiscall CCompressedStringList::IsEmpty(void)
?IsEmpty@CCompressedStringList@@QAEHXZ
; public: bool __thiscall CInternalString::IsEmpty(void)
?IsEmpty@CInternalString@@QAE_NXZ
; public: int __thiscall CQualifierSetList::IsEmpty(void)
?IsEmpty@CQualifierSetList@@QAEHXZ
; public: static int __stdcall CFastHeap::IsFakeAddress(unsigned long)
?IsFakeAddress@CFastHeap@@SGHK@Z
; public: int __thiscall CClassPart::IsHiPerf(void)
?IsHiPerf@CClassPart@@QAEHXZ
; public: int __thiscall CClassPart::IsIdenticalWith(class CClassPart &)
?IsIdenticalWith@CClassPart@@QAEHAAV1@@Z
; public: static int __stdcall CSystemProperties::IsIllegalDerivedClass(unsigned short const *)
?IsIllegalDerivedClass@CSystemProperties@@SGHPBG@Z
; public: virtual int __stdcall CWbemCallSecurity::IsImpersonating(void)
?IsImpersonating@CWbemCallSecurity@@UAGHXZ
; public: int __thiscall CWbemClass::IsIndexLocal(unsigned short const *)
?IsIndexLocal@CWbemClass@@QAEHPBG@Z
; public: int __thiscall CDecorationPart::IsInstance(void)
?IsInstance@CDecorationPart@@QAEHXZ
; public: int __thiscall CWbemObject::IsInstance(void)
?IsInstance@CWbemObject@@QAEHXZ
; public: int __thiscall CWbemInstance::IsInstanceOf(class CWbemClass *)
?IsInstanceOf@CWbemInstance@@QAEHPAVCWbemClass@@@Z
; protected: int __thiscall CWbemInstance::IsInstancePartAvailable(void)
?IsInstancePartAvailable@CWbemInstance@@IAEHXZ
; public: int __thiscall CWbemClass::IsKeyLocal(unsigned short const *)
?IsKeyLocal@CWbemClass@@QAEHPBG@Z
; public: int __thiscall CClassPart::IsKeyed(void)
?IsKeyed@CClassPart@@QAEHXZ
; public: virtual int __thiscall CWbemClass::IsKeyed(void)
?IsKeyed@CWbemClass@@UAEHXZ
; public: virtual int __thiscall CWbemInstance::IsKeyed(void)
?IsKeyed@CWbemInstance@@UAEHXZ
; public: int __thiscall CDecorationPart::IsLimited(void)
?IsLimited@CDecorationPart@@QAEHXZ
; public: int __thiscall CWbemObject::IsLimited(void)
?IsLimited@CWbemObject@@QAEHXZ
; public: int __thiscall CClassPart::IsLocalized(void)
?IsLocalized@CClassPart@@QAEHXZ
; public: int __thiscall CInstancePart::IsLocalized(void)
?IsLocalized@CInstancePart@@QAEHXZ
; public: virtual int __thiscall CWbemClass::IsLocalized(void)
?IsLocalized@CWbemClass@@UAEHXZ
; public: virtual int __thiscall CWbemInstance::IsLocalized(void)
?IsLocalized@CWbemInstance@@UAEHXZ
; public: static int __stdcall CType::IsMemCopyAble(unsigned short,long)
?IsMemCopyAble@CType@@SGHGJ@Z
; public: int __thiscall CType::IsNonArrayPointerType(void)
?IsNonArrayPointerType@CType@@QAEHXZ
; public: static int __stdcall CType::IsNonArrayPointerType(unsigned long)
?IsNonArrayPointerType@CType@@SGHK@Z
; public: int __thiscall CDataTable::IsNull(int)
?IsNull@CDataTable@@QAEHH@Z
; public: virtual long __stdcall CWbemObject::IsObjectInstance(void)
?IsObjectInstance@CWbemObject@@UAGJXZ
; protected: int __thiscall CFastHeap::IsOutOfLine(void)
?IsOutOfLine@CFastHeap@@IAEHXZ
; public: virtual long __stdcall CWbemClass::IsParentClass(long,struct _IWmiObject *)
?IsParentClass@CWbemClass@@UAGJJPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::IsParentClass(long,struct _IWmiObject *)
?IsParentClass@CWbemInstance@@UAGJJPAU_IWmiObject@@@Z
; public: int __thiscall CType::IsParents(void)
?IsParents@CType@@QAEHXZ
; public: static int __stdcall CType::IsParents(unsigned long)
?IsParents@CType@@SGHK@Z
; public: int __thiscall CType::IsPointerType(void)
?IsPointerType@CType@@QAEHXZ
; public: static int __stdcall CType::IsPointerType(unsigned long)
?IsPointerType@CType@@SGHK@Z
; public: static int __stdcall CSystemProperties::IsPossibleSystemPropertyName(unsigned short const *)
?IsPossibleSystemPropertyName@CSystemProperties@@SGHPBG@Z
; protected: int __thiscall CMethodPart::IsPropagated(int)
?IsPropagated@CMethodPart@@IAEHH@Z
; public: int __thiscall CClassPart::IsPropertyIndexed(unsigned short const *)
?IsPropertyIndexed@CClassPart@@QAEHPBG@Z
; public: int __thiscall CClassPart::IsPropertyKeyed(unsigned short const *)
?IsPropertyKeyed@CClassPart@@QAEHPBG@Z
; public: static int __stdcall CReservedWordTable::IsReservedWord(unsigned short const *)
?IsReservedWord@CReservedWordTable@@SGHPBG@Z
; public: int __thiscall CWbemObject::IsSameClass(class CWbemObject *)
?IsSameClass@CWbemObject@@QAEHPAV1@@Z
; public: int __thiscall CClassPart::IsSingleton(void)
?IsSingleton@CClassPart@@QAEHXZ
; public: int __thiscall CWbemClass::IsSingleton(void)
?IsSingleton@CWbemClass@@QAEHXZ
; public: int __thiscall CType::IsStringType(void)
?IsStringType@CType@@QAEHXZ
; public: static int __stdcall CType::IsStringType(unsigned long)
?IsStringType@CType@@SGHK@Z
; public: int __thiscall CClassPart::IsTopLevel(void)
?IsTopLevel@CClassPart@@QAEHXZ
; public: static int __stdcall CMethodDescription::IsTouched(struct CMethodDescription *,class CFastHeap *)
?IsTouched@CMethodDescription@@SGHPAU1@PAVCFastHeap@@@Z
; public: int __thiscall CMethodPart::IsTouched(int,int *)
?IsTouched@CMethodPart@@QAEHHPAH@Z
; public: int __thiscall CMethodPart::IsTouched(unsigned short const *,int *)
?IsTouched@CMethodPart@@QAEHPBGPAH@Z
; public: int __thiscall CCompressedString::IsUnicode(void)const 
?IsUnicode@CCompressedString@@QBEHXZ
; public: long __thiscall CWbemDataPacket::IsValid(void)
?IsValid@CWbemDataPacket@@QAEJXZ
; public: bool __thiscall CWbemObjectArrayPacket::IsValid(class CWbemClassCache *)
?IsValid@CWbemObjectArrayPacket@@QAE_NPAVCWbemClassCache@@@Z
; public: long __thiscall CClassPart::IsValidClassPart(void)
?IsValidClassPart@CClassPart@@QAEJXZ
; public: long __thiscall CInstancePart::IsValidInstancePart(class CClassPart *,class std::vector<struct EmbeddedObj,class wbem_allocator<struct EmbeddedObj> > &)
?IsValidInstancePart@CInstancePart@@QAEJPAVCClassPart@@AAV?$vector@UEmbeddedObj@@V?$wbem_allocator@UEmbeddedObj@@@@@std@@@Z
; public: int __thiscall CWbemInstance::IsValidKey(unsigned short const *)
?IsValidKey@CWbemInstance@@QAEHPBG@Z
; public: long __thiscall CMethodPart::IsValidMethodPart(void)
?IsValidMethodPart@CMethodPart@@QAEJXZ
; public: virtual long __thiscall CWbemClass::IsValidObj(void)
?IsValidObj@CWbemClass@@UAEJXZ
; public: virtual long __thiscall CWbemInstance::IsValidObj(void)
?IsValidObj@CWbemInstance@@UAEJXZ
; public: long __thiscall CClassPart::IsValidPropertyHandle(long)
?IsValidPropertyHandle@CClassPart@@QAEJJ@Z
; public: long __thiscall CWbemObject::IsValidPropertyHandle(long)
?IsValidPropertyHandle@CWbemObject@@QAEJJ@Z
; public: bool __thiscall CFastHeap::IsValidPtr(unsigned long)
?IsValidPtr@CFastHeap@@QAE_NK@Z
; public: long __thiscall CBasicQualifierSet::IsValidQualifierSet(void)
?IsValidQualifierSet@CBasicQualifierSet@@QAEJXZ
; public: static int __stdcall CBasicQualifierSet::IsValidQualifierType(unsigned short)
?IsValidQualifierType@CBasicQualifierSet@@SGHG@Z
; protected: int __thiscall CWbemRefreshingSvc::IsWinmgmt(struct _WBEM_REFRESHER_ID *)
?IsWinmgmt@CWbemRefreshingSvc@@IAEHPAU_WBEM_REFRESHER_ID@@@Z
; public: static long __stdcall CUntypedArray::LoadFromCVarVector(class CPtrSource *,class CVarVector &,unsigned long,class CFastHeap *,unsigned long &,int)
?LoadFromCVarVector@CUntypedArray@@SGJPAVCPtrSource@@AAVCVarVector@@KPAVCFastHeap@@AAKH@Z
; protected: long __thiscall CWbemObject::LocalizeProperties(int,bool,struct IWbemClassObject *,struct IWbemClassObject *,bool &)
?LocalizeProperties@CWbemObject@@IAEJH_NPAUIWbemClassObject@@1AA_N@Z
; protected: long __thiscall CWbemObject::LocalizeQualifiers(int,bool,struct IWbemQualifierSet *,struct IWbemQualifierSet *,bool &)
?LocalizeQualifiers@CWbemObject@@IAEJH_NPAUIWbemQualifierSet@@1AA_N@Z
; public: int __thiscall CHiPerfLock::Lock(unsigned long)
?Lock@CHiPerfLock@@QAEHK@Z
; public: int __thiscall CSharedLock::Lock(unsigned long)
?Lock@CSharedLock@@QAEHK@Z
; public: virtual long __stdcall CWbemObject::Lock(long)
?Lock@CWbemObject@@UAGJJ@Z
; protected: static char __stdcall CCompressedString::LowerByte(unsigned short)
?LowerByte@CCompressedString@@KGDG@Z
; public: static unsigned long __stdcall CType::MakeArray(unsigned long)
?MakeArray@CType@@SGKK@Z
; public: static unsigned long __stdcall CFastHeap::MakeFakeFromIndex(int)
?MakeFakeFromIndex@CFastHeap@@SGKH@Z
; public: static unsigned long __stdcall CType::MakeLocal(unsigned long)
?MakeLocal@CType@@SGKK@Z
; public: void __thiscall CCompressedString::MakeLowercase(void)
?MakeLowercase@CCompressedString@@QAEXXZ
; public: static unsigned long __stdcall CType::MakeNotArray(unsigned long)
?MakeNotArray@CType@@SGKK@Z
; public: static unsigned long __stdcall CType::MakeParents(unsigned long)
?MakeParents@CType@@SGKK@Z
; public: virtual long __stdcall CWbemClass::MakeSubsetInst(struct _IWmiObject *,struct _IWmiObject * *)
?MakeSubsetInst@CWbemClass@@UAGJPAU_IWmiObject@@PAPAU2@@Z
; public: virtual long __stdcall CWbemInstance::MakeSubsetInst(struct _IWmiObject *,struct _IWmiObject * *)
?MakeSubsetInst@CWbemInstance@@UAGJPAU_IWmiObject@@PAPAU2@@Z
; public: void __thiscall CLimitationMapping::Map(class CPropertyInformation *,class CPropertyInformation *,int)
?Map@CLimitationMapping@@QAEXPAVCPropertyInformation@@0H@Z
; public: int __thiscall CClassPart::MapLimitation(long,class CWStringArray *,class CLimitationMapping *)
?MapLimitation@CClassPart@@QAEHJPAVCWStringArray@@PAVCLimitationMapping@@@Z
; public: static int __stdcall CDecorationPart::MapLimitation(class CWStringArray *,class CLimitationMapping *)
?MapLimitation@CDecorationPart@@SGHPAVCWStringArray@@PAVCLimitationMapping@@@Z
; public: int __thiscall CPropertyLookupTable::MapLimitation(long,class CWStringArray *,class CLimitationMapping *)
?MapLimitation@CPropertyLookupTable@@QAEHJPAVCWStringArray@@PAVCLimitationMapping@@@Z
; public: int __thiscall CWbemClass::MapLimitation(long,class CWStringArray *,class CLimitationMapping *)
?MapLimitation@CWbemClass@@QAEHJPAVCWStringArray@@PAVCLimitationMapping@@@Z
; public: static void __stdcall CDecorationPart::MarkKeyRemoval(unsigned char *)
?MarkKeyRemoval@CDecorationPart@@SGXPAE@Z
; public: virtual long __stdcall CWbemObject::MarshalInterface(struct IStream *,struct _GUID const &,void *,unsigned long,void *,unsigned long)
?MarshalInterface@CWbemObject@@UAGJPAUIStream@@ABU_GUID@@PAXK2K@Z
; public: long __thiscall CWbemMtgtDeliverEventPacket::MarshalPacket(long,struct IWbemClassObject * *,struct _GUID *,int *)
?MarshalPacket@CWbemMtgtDeliverEventPacket@@QAEJJPAPAUIWbemClassObject@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemMtgtDeliverEventPacket::MarshalPacket(unsigned char *,unsigned long,long,struct IWbemClassObject * *,struct _GUID *,int *)
?MarshalPacket@CWbemMtgtDeliverEventPacket@@QAEJPAEKJPAPAUIWbemClassObject@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemObjectArrayPacket::MarshalPacket(long,struct IWbemClassObject * *,struct _GUID *,int *)
?MarshalPacket@CWbemObjectArrayPacket@@QAEJJPAPAUIWbemClassObject@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemObjectArrayPacket::MarshalPacket(unsigned char *,unsigned long,long,struct IWbemClassObject * *,struct _GUID *,int *)
?MarshalPacket@CWbemObjectArrayPacket@@QAEJPAEKJPAPAUIWbemClassObject@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemSmartEnumNextPacket::MarshalPacket(long,struct IWbemClassObject * *,struct _GUID *,int *)
?MarshalPacket@CWbemSmartEnumNextPacket@@QAEJJPAPAUIWbemClassObject@@PAU_GUID@@PAH@Z
; public: long __thiscall CWbemSmartEnumNextPacket::MarshalPacket(unsigned char *,unsigned long,long,struct IWbemClassObject * *,struct _GUID *,int *)
?MarshalPacket@CWbemSmartEnumNextPacket@@QAEJPAEKJPAPAUIWbemClassObject@@PAU_GUID@@PAH@Z
; public: static int __stdcall CSystemProperties::MaxNumProperties(void)
?MaxNumProperties@CSystemProperties@@SGHXZ
; public: static unsigned char * __stdcall CBasicQualifierSet::Merge(unsigned char *,class CFastHeap *,unsigned char *,class CFastHeap *,unsigned char *,class CFastHeap *,int)
?Merge@CBasicQualifierSet@@SGPAEPAEPAVCFastHeap@@0101H@Z
; public: static unsigned char * __stdcall CClassAndMethods::Merge(class CClassAndMethods &,class CClassAndMethods &,unsigned char *,int)
?Merge@CClassAndMethods@@SGPAEAAV1@0PAEH@Z
; public: static unsigned char * __stdcall CClassPart::Merge(class CClassPart &,class CClassPart &,unsigned char *,int)
?Merge@CClassPart@@SGPAEAAV1@0PAEH@Z
; public: static unsigned char * __stdcall CDataTable::Merge(class CDataTable *,class CFastHeap *,class CDataTable *,class CFastHeap *,class CPropertyLookupTable *,unsigned char *,class CFastHeap *)
?Merge@CDataTable@@SGPAEPAV1@PAVCFastHeap@@01PAVCPropertyLookupTable@@PAE1@Z
; public: static unsigned char * __stdcall CDerivationList::Merge(class CCompressedStringList &,class CCompressedStringList &,unsigned char *)
?Merge@CDerivationList@@SGPAEAAVCCompressedStringList@@0PAE@Z
; public: static unsigned char * __stdcall CMethodPart::Merge(class CMethodPart &,class CMethodPart &,unsigned char *,unsigned long)
?Merge@CMethodPart@@SGPAEAAV1@0PAEK@Z
; public: static unsigned char * __stdcall CPropertyLookupTable::Merge(class CPropertyLookupTable *,class CFastHeap *,class CPropertyLookupTable *,class CFastHeap *,unsigned char *,class CFastHeap *,int)
?Merge@CPropertyLookupTable@@SGPAEPAV1@PAVCFastHeap@@01PAE1H@Z
; public: unsigned char * __thiscall CWbemClass::Merge(unsigned char *,unsigned char *,int,int)
?Merge@CWbemClass@@QAEPAEPAE0HH@Z
; public: virtual long __stdcall CWbemClass::Merge(long,unsigned long,void *,struct _IWmiObject * *)
?Merge@CWbemClass@@UAGJJKPAXPAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::Merge(long,unsigned long,void *,struct _IWmiObject * *)
?Merge@CWbemInstance@@UAGJJKPAXPAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemObject::MergeAmended(long,struct _IWmiObject *)
?MergeAmended@CWbemObject@@UAGJJPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemClass::MergeAndDecorate(long,unsigned long,void *,unsigned short *,unsigned short *,struct _IWmiObject * *)
?MergeAndDecorate@CWbemClass@@UAGJJKPAXPAG1PAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::MergeAndDecorate(long,unsigned long,void *,unsigned short *,unsigned short *,struct _IWmiObject * *)
?MergeAndDecorate@CWbemInstance@@UAGJJKPAXPAG1PAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemClass::MergeClassPart(struct IWbemClassObject *)
?MergeClassPart@CWbemClass@@UAGJPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemInstance::MergeClassPart(struct IWbemClassObject *)
?MergeClassPart@CWbemInstance@@UAGJPAUIWbemClassObject@@@Z
; public: bool __thiscall CCompressedString::NValidateSize(int)const 
?NValidateSize@CCompressedString@@QBE_NH@Z
; public: static class CWbemCallSecurity * __stdcall CWbemCallSecurity::New(void)
?New@CWbemCallSecurity@@SGPAV1@XZ
; public: static class CWbemThreadSecurityHandle * __stdcall CWbemThreadSecurityHandle::New(void)
?New@CWbemThreadSecurityHandle@@SGPAV1@XZ
; public: virtual long __stdcall CQualifierSet::Next(long,unsigned short * *,struct tagVARIANT *,long *)
?Next@CQualifierSet@@UAGJJPAPAGPAUtagVARIANT@@PAJ@Z
; public: virtual long __stdcall CWbemObject::Next(long,unsigned short * *,struct tagVARIANT *,long *,long *)
?Next@CWbemObject@@UAGJJPAPAGPAUtagVARIANT@@PAJ2@Z
; public: int __thiscall CLimitationMapping::NextMapping(class CPropertyInformation *,class CPropertyInformation *)
?NextMapping@CLimitationMapping@@QAEHPAVCPropertyInformation@@0@Z
; public: virtual long __stdcall CWbemClass::NextMethod(long,unsigned short * *,struct IWbemClassObject * *,struct IWbemClassObject * *)
?NextMethod@CWbemClass@@UAGJJPAPAGPAPAUIWbemClassObject@@1@Z
; public: virtual long __stdcall CWbemInstance::NextMethod(long,unsigned short * *,struct IWbemClassObject * *,struct IWbemClassObject * *)
?NextMethod@CWbemInstance@@UAGJJPAPAGPAPAUIWbemClassObject@@1@Z
; public: long __thiscall CWbemInstance::PlugKeyHoles(void)
?PlugKeyHoles@CWbemInstance@@QAEJXZ
; public: virtual long __stdcall CQualifierSet::Put(unsigned short const *,struct tagVARIANT *,long)
?Put@CQualifierSet@@UAGJPBGPAUtagVARIANT@@J@Z
; public: virtual long __stdcall CWbemClass::Put(unsigned short const *,long,struct tagVARIANT *,long)
?Put@CWbemClass@@UAGJPBGJPAUtagVARIANT@@J@Z
; public: virtual long __stdcall CWbemInstance::Put(unsigned short const *,long,struct tagVARIANT *,long)
?Put@CWbemInstance@@UAGJPBGJPAUtagVARIANT@@J@Z
; public: long __thiscall CMethodPart::PutMethod(unsigned short const *,long,class CWbemObject *,class CWbemObject *)
?PutMethod@CMethodPart@@QAEJPBGJPAVCWbemObject@@1@Z
; public: virtual long __stdcall CWbemClass::PutMethod(unsigned short const *,long,struct IWbemClassObject *,struct IWbemClassObject *)
?PutMethod@CWbemClass@@UAGJPBGJPAUIWbemClassObject@@1@Z
; public: virtual long __stdcall CWbemInstance::PutMethod(unsigned short const *,long,struct IWbemClassObject *,struct IWbemClassObject *)
?PutMethod@CWbemInstance@@UAGJPBGJPAUIWbemClassObject@@1@Z
; public: virtual long __stdcall CWbemCallSecurity::QueryBlanket(unsigned long *,unsigned long *,unsigned short * *,unsigned long *,unsigned long *,void * *,unsigned long *)
?QueryBlanket@CWbemCallSecurity@@UAGJPAK0PAPAG00PAPAX0@Z
; public: virtual long __stdcall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CQualifierSet::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CQualifierSet@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CWbemCallSecurity::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CWbemCallSecurity@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CWbemObject::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CWbemObject@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CWbemThreadSecurityHandle::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CWbemThreadSecurityHandle@@UAGJABU_GUID@@PAPAX@Z
; public: virtual long __stdcall CWbemObject::QueryObjectFlags(long,unsigned __int64,unsigned __int64 *)
?QueryObjectFlags@CWbemObject@@UAGJJ_KPA_K@Z
; public: virtual long __stdcall CWbemObject::QueryPartInfo(unsigned long *)
?QueryPartInfo@CWbemObject@@UAGJPAK@Z
; public: virtual long __stdcall CWbemObject::QueryPropertyFlags(long,unsigned short const *,unsigned __int64,unsigned __int64 *)
?QueryPropertyFlags@CWbemObject@@UAGJJPBG_KPA_K@Z
; public: virtual long __stdcall CWbemObject::ReadDWORD(long,unsigned long *)
?ReadDWORD@CWbemObject@@UAGJJPAK@Z
; public: virtual long __stdcall CWbemObject::ReadProp(unsigned short const *,long,unsigned long,long *,long *,int *,unsigned long *,void *)
?ReadProp@CWbemObject@@UAGJPBGJKPAJ1PAHPAKPAX@Z
; public: virtual long __stdcall CWbemObject::ReadPropertyValue(long,long,long *,unsigned char *)
?ReadPropertyValue@CWbemObject@@UAGJJJPAJPAE@Z
; public: virtual long __stdcall CWbemObject::ReadQWORD(long,unsigned __int64 *)
?ReadQWORD@CWbemObject@@UAGJJPA_K@Z
; public: int __thiscall CClassPart::ReallocAndCompact(unsigned long)
?ReallocAndCompact@CClassPart@@QAEHK@Z
; public: int __thiscall CInstancePart::ReallocAndCompact(unsigned long)
?ReallocAndCompact@CInstancePart@@QAEHK@Z
; protected: static long __stdcall CUntypedArray::ReallocArray(class CPtrSource *,unsigned long,class CFastHeap *,unsigned long,unsigned long *,unsigned long *,unsigned long *)
?ReallocArray@CUntypedArray@@KGJPAVCPtrSource@@KPAVCFastHeap@@KPAK22@Z
; public: int __thiscall CFastHeap::Reallocate(unsigned long,unsigned long,unsigned long,unsigned long &)
?Reallocate@CFastHeap@@QAEHKKKAAK@Z
; protected: unsigned char * __thiscall CWbemObject::Reallocate(unsigned long)
?Reallocate@CWbemObject@@IAEPAEK@Z
; public: void __thiscall CBasicQualifierSet::Rebase(unsigned char *)
?Rebase@CBasicQualifierSet@@QAEXPAE@Z
; public: void __thiscall CClassAndMethods::Rebase(unsigned char *)
?Rebase@CClassAndMethods@@QAEXPAE@Z
; public: void __thiscall CClassPart::Rebase(unsigned char *)
?Rebase@CClassPart@@QAEXPAE@Z
; public: void __thiscall CCompressedStringList::Rebase(unsigned char *)
?Rebase@CCompressedStringList@@QAEXPAE@Z
; public: void __thiscall CDataTable::Rebase(unsigned char *)
?Rebase@CDataTable@@QAEXPAE@Z
; public: void __thiscall CDecorationPart::Rebase(unsigned char *)
?Rebase@CDecorationPart@@QAEXPAE@Z
; public: void __thiscall CFastHeap::Rebase(unsigned char *)
?Rebase@CFastHeap@@QAEXPAE@Z
; public: void __thiscall CInstancePart::Rebase(unsigned char *)
?Rebase@CInstancePart@@QAEXPAE@Z
; public: void __thiscall CMethodPart::Rebase(unsigned char *)
?Rebase@CMethodPart@@QAEXPAE@Z
; public: void __thiscall CPropertyLookupTable::Rebase(unsigned char *)
?Rebase@CPropertyLookupTable@@QAEXPAE@Z
; public: void __thiscall CQualifierSetList::Rebase(unsigned char *)
?Rebase@CQualifierSetList@@QAEXPAE@Z
; public: void __thiscall CQualifierSetList::Rebase(void)
?Rebase@CQualifierSetList@@QAEXXZ
; public: void __thiscall CWbemClass::Rebase(unsigned char *)
?Rebase@CWbemClass@@QAEXPAE@Z
; public: void __thiscall CWbemInstance::Rebase(unsigned char *)
?Rebase@CWbemInstance@@QAEXPAE@Z
; public: void __thiscall CInstancePQSContainer::RebaseSecondarySet(void)
?RebaseSecondarySet@CInstancePQSContainer@@QAEXXZ
; public: enum EReconciliation  __thiscall CClassAndMethods::ReconcileWith(class CClassAndMethods &)
?ReconcileWith@CClassAndMethods@@QAE?AW4EReconciliation@@AAV1@@Z
; public: enum EReconciliation  __thiscall CClassPart::ReconcileWith(class CClassPart &)
?ReconcileWith@CClassPart@@QAE?AW4EReconciliation@@AAV1@@Z
; public: enum EReconciliation  __thiscall CMethodPart::ReconcileWith(class CMethodPart &)
?ReconcileWith@CMethodPart@@QAE?AW4EReconciliation@@AAV1@@Z
; public: enum EReconciliation  __thiscall CWbemClass::ReconcileWith(class CWbemClass *)
?ReconcileWith@CWbemClass@@QAE?AW4EReconciliation@@PAV1@@Z
; public: virtual long __stdcall CWbemClass::ReconcileWith(long,struct _IWmiObject *)
?ReconcileWith@CWbemClass@@UAGJJPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::ReconcileWith(long,struct _IWmiObject *)
?ReconcileWith@CWbemInstance@@UAGJJPAU_IWmiObject@@@Z
; protected: virtual long __thiscall CWbemRefreshingSvc::ReconnectRemoteRefresher(struct _WBEM_REFRESHER_ID *,long,long,unsigned long,struct _WBEM_RECONNECT_INFO *,struct _WBEM_RECONNECT_RESULTS *,unsigned long *)
?ReconnectRemoteRefresher@CWbemRefreshingSvc@@MAEJPAU_WBEM_REFRESHER_ID@@JJKPAU_WBEM_RECONNECT_INFO@@PAU_WBEM_RECONNECT_RESULTS@@PAK@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XWbemRefrSvc::ReconnectRemoteRefresher(struct _WBEM_REFRESHER_ID *,long,long,unsigned long,struct _WBEM_RECONNECT_INFO *,struct _WBEM_RECONNECT_RESULTS *,unsigned long *)
?ReconnectRemoteRefresher@XWbemRefrSvc@CWbemRefreshingSvc@@UAGJPAU_WBEM_REFRESHER_ID@@JJKPAU_WBEM_RECONNECT_INFO@@PAU_WBEM_RECONNECT_RESULTS@@PAK@Z
; public: void __thiscall CFastHeap::Reduce(unsigned long,unsigned long,unsigned long)
?Reduce@CFastHeap@@QAEXKKK@Z
; public: void __thiscall CWbemClass::ReduceClassAndMethodsSpace(unsigned long)
?ReduceClassAndMethodsSpace@CWbemClass@@QAEXK@Z
; public: virtual void __thiscall CClassAndMethods::ReduceClassPartSpace(class CClassPart *,unsigned long)
?ReduceClassPartSpace@CClassAndMethods@@UAEXPAVCClassPart@@K@Z
; public: virtual void __thiscall CWbemInstance::ReduceClassPartSpace(class CClassPart *,unsigned long)
?ReduceClassPartSpace@CWbemInstance@@UAEXPAVCClassPart@@K@Z
; public: virtual void __thiscall CClassPart::ReduceDataTableSpace(unsigned char *,unsigned long,unsigned long)
?ReduceDataTableSpace@CClassPart@@UAEXPAEKK@Z
; public: virtual void __thiscall CInstancePart::ReduceDataTableSpace(unsigned char *,unsigned long,unsigned long)
?ReduceDataTableSpace@CInstancePart@@UAEXPAEKK@Z
; public: virtual void __thiscall CClassPart::ReduceHeapSize(unsigned char *,unsigned long,unsigned long)
?ReduceHeapSize@CClassPart@@UAEXPAEKK@Z
; public: virtual void __thiscall CInstancePart::ReduceHeapSize(unsigned char *,unsigned long,unsigned long)
?ReduceHeapSize@CInstancePart@@UAEXPAEKK@Z
; public: virtual void __thiscall CMethodPart::ReduceHeapSize(unsigned char *,unsigned long,unsigned long)
?ReduceHeapSize@CMethodPart@@UAEXPAEKK@Z
; public: virtual void __thiscall CWbemInstance::ReduceInstancePartSpace(class CInstancePart *,unsigned long)
?ReduceInstancePartSpace@CWbemInstance@@UAEXPAVCInstancePart@@K@Z
; public: virtual void __thiscall CClassAndMethods::ReduceMethodPartSpace(class CMethodPart *,unsigned long)
?ReduceMethodPartSpace@CClassAndMethods@@UAEXPAVCMethodPart@@K@Z
; public: virtual void __thiscall CClassPart::ReducePropertyTableSpace(unsigned char *,unsigned long,unsigned long)
?ReducePropertyTableSpace@CClassPart@@UAEXPAEKK@Z
; public: virtual void __thiscall CInstancePart::ReduceQualifierSetListSpace(unsigned char *,unsigned long,unsigned long)
?ReduceQualifierSetListSpace@CInstancePart@@UAEXPAEKK@Z
; public: virtual void __thiscall CClassPart::ReduceQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ReduceQualifierSetSpace@CClassPart@@UAEXPAVCBasicQualifierSet@@K@Z
; public: virtual void __thiscall CInstancePQSContainer::ReduceQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ReduceQualifierSetSpace@CInstancePQSContainer@@UAEXPAVCBasicQualifierSet@@K@Z
; public: virtual void __thiscall CInstancePart::ReduceQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ReduceQualifierSetSpace@CInstancePart@@UAEXPAVCBasicQualifierSet@@K@Z
; public: virtual void __thiscall CMethodQualifierSetContainer::ReduceQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ReduceQualifierSetSpace@CMethodQualifierSetContainer@@UAEXPAVCBasicQualifierSet@@K@Z
; public: void __thiscall CQualifierSetList::ReduceQualifierSetSpace(class CBasicQualifierSet *,unsigned long)
?ReduceQualifierSetSpace@CQualifierSetList@@QAEXPAVCBasicQualifierSet@@K@Z
; public: virtual unsigned long __stdcall CImpl<struct IWbemObjectTextSrc,class CWmiObjectTextSrc>::Release(void)
?Release@?$CImpl@UIWbemObjectTextSrc@@VCWmiObjectTextSrc@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct IWbemRefreshingServices,class CWbemRefreshingSvc>::Release(void)
?Release@?$CImpl@UIWbemRefreshingServices@@VCWbemRefreshingSvc@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct IWbemRemoteRefresher,class CWbemRemoteRefresher>::Release(void)
?Release@?$CImpl@UIWbemRemoteRefresher@@VCWbemRemoteRefresher@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWbemConfigureRefreshingSvcs,class CWbemRefreshingSvc>::Release(void)
?Release@?$CImpl@U_IWbemConfigureRefreshingSvcs@@VCWbemRefreshingSvc@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWbemEnumMarshaling,class CWbemEnumMarshaling>::Release(void)
?Release@?$CImpl@U_IWbemEnumMarshaling@@VCWbemEnumMarshaling@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWbemFetchRefresherMgr,class CWbemFetchRefrMgr>::Release(void)
?Release@?$CImpl@U_IWbemFetchRefresherMgr@@VCWbemFetchRefrMgr@@@@UAGKXZ
; public: virtual unsigned long __stdcall CImpl<struct _IWmiObjectFactory,class CWmiObjectFactory>::Release(void)
?Release@?$CImpl@U_IWmiObjectFactory@@VCWmiObjectFactory@@@@UAGKXZ
; public: virtual unsigned long __stdcall CClassQualifierSet::Release(void)
?Release@CClassQualifierSet@@UAGKXZ
; public: virtual unsigned long __stdcall CInstanceQualifierSet::Release(void)
?Release@CInstanceQualifierSet@@UAGKXZ
; public: virtual unsigned long __stdcall CMethodQualifierSet::Release(void)
?Release@CMethodQualifierSet@@UAGKXZ
; public: virtual unsigned long __stdcall CQualifierSet::Release(void)
?Release@CQualifierSet@@UAGKXZ
; public: virtual unsigned long __stdcall CWbemCallSecurity::Release(void)
?Release@CWbemCallSecurity@@UAGKXZ
; public: virtual unsigned long __stdcall CWbemObject::Release(void)
?Release@CWbemObject@@UAGKXZ
; public: virtual unsigned long __stdcall CWbemThreadSecurityHandle::Release(void)
?Release@CWbemThreadSecurityHandle@@UAGKXZ
; protected: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::ReleaseElement(class CFastPropertyBagItem *)
?ReleaseElement@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@IAEXPAVCFastPropertyBagItem@@@Z
; protected: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::ReleaseElement(class CWmiTextSource *)
?ReleaseElement@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@IAEXPAVCWmiTextSource@@@Z
; public: virtual long __stdcall CWbemObject::ReleaseMarshalData(struct IStream *)
?ReleaseMarshalData@CWbemObject@@UAGJPAUIStream@@@Z
; public: virtual long __stdcall CWbemRemoteRefresher::XWbemRemoteRefr::RemoteRefresh(long,long *,struct _WBEM_REFRESHED_OBJECT * *)
?RemoteRefresh@XWbemRemoteRefr@CWbemRemoteRefresher@@UAGJJPAJPAPAU_WBEM_REFRESHED_OBJECT@@@Z
; public: long __thiscall CFastPropertyBag::Remove(unsigned short const *)
?Remove@CFastPropertyBag@@QAEJPBG@Z
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::RemoveAll(void)
?RemoveAll@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXXZ
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::RemoveAll(void)
?RemoveAll@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXXZ
; public: long __thiscall CFastPropertyBag::RemoveAll(void)
?RemoveAll@CFastPropertyBag@@QAEJXZ
; public: virtual long __stdcall CWbemObject::RemoveArrayPropElementByHandle(long,long,unsigned long)
?RemoveArrayPropElementByHandle@CWbemObject@@UAGJJJK@Z
; public: virtual long __stdcall CWbemObject::RemoveArrayPropRangeByHandle(long,long,unsigned long,unsigned long)
?RemoveArrayPropRangeByHandle@CWbemObject@@UAGJJJKK@Z
; public: bool __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::RemoveAt(int,class CFastPropertyBagItem * *)
?RemoveAt@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAE_NHPAPAVCFastPropertyBagItem@@@Z
; public: bool __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::RemoveAt(int,class CWmiTextSource * *)
?RemoveAt@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAE_NHPAPAVCWmiTextSource@@@Z
; public: virtual long __stdcall CWbemObject::RemoveDecoration(void)
?RemoveDecoration@CWbemObject@@UAGJXZ
; protected: virtual long __thiscall CWbemRefreshingSvc::RemoveObjectFromRefresher(struct _WBEM_REFRESHER_ID *,long,long,unsigned long,unsigned long *)
?RemoveObjectFromRefresher@CWbemRefreshingSvc@@MAEJPAU_WBEM_REFRESHER_ID@@JJKPAK@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XWbemRefrSvc::RemoveObjectFromRefresher(struct _WBEM_REFRESHER_ID *,long,long,unsigned long,unsigned long *)
?RemoveObjectFromRefresher@XWbemRefrSvc@CWbemRefreshingSvc@@UAGJPAU_WBEM_REFRESHER_ID@@JJKPAK@Z
; public: void __thiscall CDataTable::RemoveProperty(unsigned short,unsigned long,unsigned long)
?RemoveProperty@CDataTable@@QAEXGKK@Z
; public: long __thiscall CWbemObject::RemoveQualifierArrayRange(unsigned short const *,unsigned short const *,int,long,unsigned long,unsigned long)
?RemoveQualifierArrayRange@CWbemObject@@QAEJPBG0HJKK@Z
; public: static long __stdcall CUntypedArray::RemoveRange(class CPtrSource *,unsigned long,unsigned long,class CFastHeap *,unsigned long,unsigned long)
?RemoveRange@CUntypedArray@@SGJPAVCPtrSource@@KKPAVCFastHeap@@KK@Z
; public: void __thiscall CLimitationMapping::RemoveSpecific(void)
?RemoveSpecific@CLimitationMapping@@QAEXXZ
; public: long __thiscall CWbemInstance::Reparent(class CWbemClass *,class CWbemInstance * *)
?Reparent@CWbemInstance@@QAEJPAVCWbemClass@@PAPAV1@@Z
; public: void __thiscall CCompressedStringList::Reset(void)
?Reset@CCompressedStringList@@QAEXXZ
; public: void __thiscall CLimitationMapping::Reset(void)
?Reset@CLimitationMapping@@QAEXXZ
; protected: long __thiscall CWbemRefreshingSvc::ResetRefreshInfo(struct _WBEM_REFRESH_INFO *)
?ResetRefreshInfo@CWbemRefreshingSvc@@IAEJPAU_WBEM_REFRESH_INFO@@@Z
; public: unsigned char * __thiscall CClassPart::ResolveHeapPointer(unsigned long)
?ResolveHeapPointer@CClassPart@@QAEPAEK@Z
; public: unsigned char * __thiscall CFastHeap::ResolveHeapPointer(unsigned long)
?ResolveHeapPointer@CFastHeap@@QAEPAEK@Z
; public: class CCompressedString * __thiscall CClassPart::ResolveHeapString(unsigned long)
?ResolveHeapString@CClassPart@@QAEPAVCCompressedString@@K@Z
; public: class CCompressedString * __thiscall CFastHeap::ResolveString(unsigned long)
?ResolveString@CFastHeap@@QAEPAVCCompressedString@@K@Z
; public: virtual long __stdcall CWbemCallSecurity::RevertToSelf(void)
?RevertToSelf@CWbemCallSecurity@@UAGJXZ
; public: int __thiscall CQualifierSet::SelfRebase(void)
?SelfRebase@CQualifierSet@@QAEHXZ
; public: long __thiscall CInstancePart::SetActualValue(class CPropertyInformation *,class CVar *)
?SetActualValue@CInstancePart@@QAEJPAVCPropertyInformation@@PAVCVar@@@Z
; public: void __thiscall CLimitationMapping::SetAddChildKeys(int)
?SetAddChildKeys@CLimitationMapping@@QAEXH@Z
; public: void __thiscall CDataTable::SetAllToDefault(void)
?SetAllToDefault@CDataTable@@QAEXXZ
; public: void __thiscall CFastHeap::SetAllocatedDataLength(unsigned long)
?SetAllocatedDataLength@CFastHeap@@QAEXK@Z
; public: virtual long __stdcall CWbemObject::SetArrayPropElementByHandle(long,long,unsigned long,unsigned long,void *)
?SetArrayPropElementByHandle@CWbemObject@@UAGJJJKKPAX@Z
; public: virtual long __stdcall CWbemObject::SetArrayPropRangeByHandle(long,long,unsigned long,unsigned long,unsigned long,void *)
?SetArrayPropRangeByHandle@CWbemObject@@UAGJJJKKKPAX@Z
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::SetAt(int,class CFastPropertyBagItem *,class CFastPropertyBagItem * *)
?SetAt@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXHPAVCFastPropertyBagItem@@PAPAV2@@Z
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::SetAt(int,class CWmiTextSource *,class CWmiTextSource * *)
?SetAt@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXHPAVCWmiTextSource@@PAPAV2@@Z
; public: long __thiscall CClassPart::SetClassName(class CVar *)
?SetClassName@CClassPart@@QAEJPAVCVar@@@Z
; public: void __thiscall CLimitationMapping::SetClassObject(class CWbemClass *)
?SetClassObject@CLimitationMapping@@QAEXPAVCWbemClass@@@Z
; public: virtual long __stdcall CWbemClass::SetClassPart(void *,unsigned long)
?SetClassPart@CWbemClass@@UAGJPAXK@Z
; public: virtual long __stdcall CWbemInstance::SetClassPart(void *,unsigned long)
?SetClassPart@CWbemInstance@@UAGJPAXK@Z
; public: long __thiscall CClassPart::SetClassQualifier(unsigned short const *,long,class CTypedValue *)
?SetClassQualifier@CClassPart@@QAEJPBGJPAVCTypedValue@@@Z
; public: long __thiscall CClassPart::SetClassQualifier(unsigned short const *,class CVar *,long)
?SetClassQualifier@CClassPart@@QAEJPBGPAVCVar@@J@Z
; public: void __thiscall CDecorationPart::SetClientOnly(void)
?SetClientOnly@CDecorationPart@@QAEXXZ
; public: void __thiscall CWbemObject::SetClientOnly(void)
?SetClientOnly@CWbemObject@@QAEXXZ
; public: void __thiscall CFastHeap::SetContainer(class CHeapContainer *)
?SetContainer@CFastHeap@@QAEXPAVCHeapContainer@@@Z
; public: void __thiscall CBasicQualifierSet::SetData(unsigned char *,class CFastHeap *)
?SetData@CBasicQualifierSet@@QAEXPAEPAVCFastHeap@@@Z
; public: void __thiscall CClassAndMethods::SetData(unsigned char *,class CWbemClass *,class CClassAndMethods *)
?SetData@CClassAndMethods@@QAEXPAEPAVCWbemClass@@PAV1@@Z
; public: void __thiscall CClassPart::SetData(unsigned char *,class CClassPartContainer *,class CClassPart *)
?SetData@CClassPart@@QAEXPAEPAVCClassPartContainer@@PAV1@@Z
; public: void __thiscall CCompressedStringList::SetData(unsigned char *)
?SetData@CCompressedStringList@@QAEXPAE@Z
; public: void __thiscall CDataTable::SetData(unsigned char *,int,int,class CDataTableContainer *)
?SetData@CDataTable@@QAEXPAEHHPAVCDataTableContainer@@@Z
; public: void __thiscall CDecorationPart::SetData(unsigned char *)
?SetData@CDecorationPart@@QAEXPAE@Z
; public: int __thiscall CFastHeap::SetData(unsigned char *,class CHeapContainer *)
?SetData@CFastHeap@@QAEHPAEPAVCHeapContainer@@@Z
; public: void __thiscall CInstancePart::SetData(unsigned char *,class CInstancePartContainer *,class CClassPart &,unsigned int)
?SetData@CInstancePart@@QAEXPAEPAVCInstancePartContainer@@AAVCClassPart@@I@Z
; public: void __thiscall CMethodPart::SetData(unsigned char *,class CMethodPartContainer *,class CMethodPart *)
?SetData@CMethodPart@@QAEXPAEPAVCMethodPartContainer@@PAV1@@Z
; public: void __thiscall CMethodQualifierSet::SetData(class CMethodPart *,class CMethodPart *,unsigned short const *)
?SetData@CMethodQualifierSet@@QAEXPAVCMethodPart@@0PBG@Z
; public: void __thiscall CMethodQualifierSetContainer::SetData(class CMethodPart *,class CMethodPart *,unsigned short const *)
?SetData@CMethodQualifierSetContainer@@QAEXPAVCMethodPart@@0PBG@Z
; public: void __thiscall CPropertyLookupTable::SetData(unsigned char *,class CPropertyTableContainer *)
?SetData@CPropertyLookupTable@@QAEXPAEPAVCPropertyTableContainer@@@Z
; public: void __thiscall CQualifierSet::SetData(unsigned char *,class CQualifierSetContainer *,class CBasicQualifierSet *)
?SetData@CQualifierSet@@QAEXPAEPAVCQualifierSetContainer@@PAVCBasicQualifierSet@@@Z
; public: void __thiscall CQualifierSetList::SetData(unsigned char *,int,class CQualifierSetListContainer *)
?SetData@CQualifierSetList@@QAEXPAEHPAVCQualifierSetListContainer@@@Z
; public: void __thiscall CSharedLock::SetData(struct SHARED_LOCK_DATA *)
?SetData@CSharedLock@@QAEXPAUSHARED_LOCK_DATA@@@Z
; public: virtual void __thiscall CWbemClass::SetData(unsigned char *,int)
?SetData@CWbemClass@@UAEXPAEH@Z
; public: void __thiscall CWbemDataPacket::SetData(unsigned char *,unsigned long,bool)
?SetData@CWbemDataPacket@@QAEXPAEK_N@Z
; public: void __thiscall CWbemInstance::SetData(unsigned char *,int,unsigned long)
?SetData@CWbemInstance@@QAEXPAEHK@Z
; public: virtual void __thiscall CWbemInstance::SetData(unsigned char *,int)
?SetData@CWbemInstance@@UAEXPAEH@Z
; public: void __thiscall CWbemMtgtDeliverEventPacket::SetData(unsigned char *,unsigned long,bool)
?SetData@CWbemMtgtDeliverEventPacket@@QAEXPAEK_N@Z
; public: void __thiscall CWbemObjectArrayPacket::SetData(unsigned char *,unsigned long,bool)
?SetData@CWbemObjectArrayPacket@@QAEXPAEK_N@Z
; public: void __thiscall CWbemSmartEnumNextPacket::SetData(unsigned char *,unsigned long,bool)
?SetData@CWbemSmartEnumNextPacket@@QAEXPAEK_N@Z
; protected: static void __stdcall CBasicQualifierSet::SetDataLength(unsigned char *,unsigned long)
?SetDataLength@CBasicQualifierSet@@KGXPAEK@Z
; public: void __thiscall CClassPart::SetDataLength(unsigned long)
?SetDataLength@CClassPart@@QAEXK@Z
; public: void __thiscall CInstancePart::SetDataLength(unsigned long)
?SetDataLength@CInstancePart@@QAEXK@Z
; public: static void __stdcall CBasicQualifierSet::SetDataToNone(unsigned char *)
?SetDataToNone@CBasicQualifierSet@@SGXPAE@Z
; public: void __thiscall CClassAndMethods::SetDataWithNumProps(unsigned char *,class CWbemClass *,unsigned long,class CClassAndMethods *)
?SetDataWithNumProps@CClassAndMethods@@QAEXPAEPAVCWbemClass@@KPAV1@@Z
; public: void __thiscall CClassPart::SetDataWithNumProps(unsigned char *,class CClassPartContainer *,unsigned long,class CClassPart *)
?SetDataWithNumProps@CClassPart@@QAEXPAEPAVCClassPartContainer@@KPAV1@@Z
; public: virtual long __stdcall CWbemObject::SetDecoration(unsigned short const *,unsigned short const *)
?SetDecoration@CWbemObject@@UAGJPBG0@Z
; protected: long __thiscall CClassPart::SetDefaultValue(class CPropertyInformation *,class CVar *)
?SetDefaultValue@CClassPart@@IAEJPAVCPropertyInformation@@PAVCVar@@@Z
; public: long __thiscall CClassPart::SetDefaultValue(unsigned short const *,class CVar *)
?SetDefaultValue@CClassPart@@QAEJPBGPAVCVar@@@Z
; public: void __thiscall CDataTable::SetDefaultness(int,int)
?SetDefaultness@CDataTable@@QAEXHH@Z
; public: void __thiscall CLimitationMapping::SetFlags(long)
?SetFlags@CLimitationMapping@@QAEXJ@Z
; public: void __thiscall CCompressedString::SetFromAscii(char const *,unsigned int)
?SetFromAscii@CCompressedString@@QAEXPBDI@Z
; public: void __thiscall CCompressedString::SetFromUnicode(int,unsigned short const *)
?SetFromUnicode@CCompressedString@@QAEXHPBG@Z
; public: void __thiscall CCompressedString::SetFromUnicode(unsigned short const *)
?SetFromUnicode@CCompressedString@@QAEXPBG@Z
; protected: void __thiscall CFastHeap::SetInLineLength(unsigned long)
?SetInLineLength@CFastHeap@@IAEXK@Z
; public: void __thiscall CLimitationMapping::SetIncludeDerivation(int)
?SetIncludeDerivation@CLimitationMapping@@QAEXH@Z
; public: void __thiscall CLimitationMapping::SetIncludeNamespace(int)
?SetIncludeNamespace@CLimitationMapping@@QAEXH@Z
; public: void __thiscall CLimitationMapping::SetIncludeServer(int)
?SetIncludeServer@CLimitationMapping@@QAEXH@Z
; public: long __thiscall CClassPart::SetInheritanceChain(long,unsigned short * *)
?SetInheritanceChain@CClassPart@@QAEJJPAPAG@Z
; public: virtual long __stdcall CWbemClass::SetInheritanceChain(long,unsigned short * *)
?SetInheritanceChain@CWbemClass@@UAGJJPAPAG@Z
; public: virtual long __stdcall CWbemInstance::SetInheritanceChain(long,unsigned short * *)
?SetInheritanceChain@CWbemInstance@@UAGJJPAPAG@Z
; public: long __thiscall CInstancePart::SetInstanceQualifier(unsigned short const *,long,class CTypedValue *)
?SetInstanceQualifier@CInstancePart@@QAEJPBGJPAVCTypedValue@@@Z
; public: long __thiscall CInstancePart::SetInstanceQualifier(unsigned short const *,class CVar *,long)
?SetInstanceQualifier@CInstancePart@@QAEJPBGPAVCVar@@J@Z
; public: void __thiscall CFixedBSTRArray::SetLength(int)
?SetLength@CFixedBSTRArray@@QAEXH@Z
; public: void __thiscall CDecorationPart::SetLimited(void)
?SetLimited@CDecorationPart@@QAEXXZ
; public: void __thiscall CClassPart::SetLocalized(int)
?SetLocalized@CClassPart@@QAEXH@Z
; public: void __thiscall CInstancePart::SetLocalized(int)
?SetLocalized@CInstancePart@@QAEXH@Z
; public: virtual void __thiscall CWbemClass::SetLocalized(int)
?SetLocalized@CWbemClass@@UAEXH@Z
; public: virtual void __thiscall CWbemInstance::SetLocalized(int)
?SetLocalized@CWbemInstance@@UAEXH@Z
; public: long __thiscall CMethodPart::SetMethodOrigin(unsigned short const *,long)
?SetMethodOrigin@CMethodPart@@QAEJPBGJ@Z
; public: virtual long __stdcall CWbemClass::SetMethodOrigin(unsigned short const *,long)
?SetMethodOrigin@CWbemClass@@UAGJPBGJ@Z
; public: virtual long __stdcall CWbemInstance::SetMethodOrigin(unsigned short const *,long)
?SetMethodOrigin@CWbemInstance@@UAGJPBGJ@Z
; public: virtual long __stdcall CWbemObject::SetMethodQual(unsigned short const *,unsigned short const *,long,unsigned long,unsigned long,long,unsigned long,void *)
?SetMethodQual@CWbemObject@@UAGJPBG0JKKJKPAX@Z
; public: virtual long __thiscall CWbemClass::SetMethodQualifier(unsigned short const *,unsigned short const *,long,class CTypedValue *)
?SetMethodQualifier@CWbemClass@@UAEJPBG0JPAVCTypedValue@@@Z
; public: virtual long __thiscall CWbemClass::SetMethodQualifier(unsigned short const *,unsigned short const *,long,class CVar *)
?SetMethodQualifier@CWbemClass@@UAEJPBG0JPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::SetMethodQualifier(unsigned short const *,unsigned short const *,long,class CTypedValue *)
?SetMethodQualifier@CWbemInstance@@UAEJPBG0JPAVCTypedValue@@@Z
; public: virtual long __thiscall CWbemInstance::SetMethodQualifier(unsigned short const *,unsigned short const *,long,class CVar *)
?SetMethodQualifier@CWbemInstance@@UAEJPBG0JPAVCVar@@@Z
; public: void __thiscall CDataTable::SetNullness(int,int)
?SetNullness@CDataTable@@QAEXHH@Z
; public: virtual long __stdcall CWbemObject::SetObjQual(unsigned short const *,long,unsigned long,unsigned long,long,unsigned long,void *)
?SetObjQual@CWbemObject@@UAGJPBGJKKJKPAX@Z
; public: virtual long __stdcall CWbemObject::SetObjectFlags(long,unsigned __int64,unsigned __int64)
?SetObjectFlags@CWbemObject@@UAGJJ_K0@Z
; public: virtual long __stdcall CWbemObject::SetObjectMemory(void *,unsigned long)
?SetObjectMemory@CWbemObject@@UAGJPAXK@Z
; public: virtual long __stdcall CWbemClass::SetObjectParts(void *,unsigned long,unsigned long)
?SetObjectParts@CWbemClass@@UAGJPAXKK@Z
; public: virtual long __stdcall CWbemInstance::SetObjectParts(void *,unsigned long,unsigned long)
?SetObjectParts@CWbemInstance@@UAGJPAXKK@Z
; public: void __thiscall CWbemThreadSecurityHandle::SetOrigin(enum tag_WMI_THREAD_SECURITY_ORIGIN)
?SetOrigin@CWbemThreadSecurityHandle@@QAEXW4tag_WMI_THREAD_SECURITY_ORIGIN@@@Z
; public: virtual long __stdcall CWbemObject::SetPropByHandle(long,long,unsigned long,void *)
?SetPropByHandle@CWbemObject@@UAGJJJKPAX@Z
; public: virtual long __stdcall CWbemObject::SetPropQual(unsigned short const *,unsigned short const *,long,unsigned long,unsigned long,long,unsigned long,void *)
?SetPropQual@CWbemObject@@UAGJPBG0JKKJKPAX@Z
; public: long __thiscall CClassPart::SetPropQualifier(unsigned short const *,unsigned short const *,long,class CTypedValue *)
?SetPropQualifier@CClassPart@@QAEJPBG0JPAVCTypedValue@@@Z
; public: long __thiscall CClassPart::SetPropQualifier(unsigned short const *,unsigned short const *,long,class CVar *)
?SetPropQualifier@CClassPart@@QAEJPBG0JPAVCVar@@@Z
; public: virtual long __thiscall CWbemClass::SetPropQualifier(unsigned short const *,unsigned short const *,long,class CTypedValue *)
?SetPropQualifier@CWbemClass@@UAEJPBG0JPAVCTypedValue@@@Z
; public: virtual long __thiscall CWbemClass::SetPropQualifier(unsigned short const *,unsigned short const *,long,class CVar *)
?SetPropQualifier@CWbemClass@@UAEJPBG0JPAVCVar@@@Z
; public: virtual long __thiscall CWbemInstance::SetPropQualifier(unsigned short const *,unsigned short const *,long,class CTypedValue *)
?SetPropQualifier@CWbemInstance@@UAEJPBG0JPAVCTypedValue@@@Z
; public: virtual long __thiscall CWbemInstance::SetPropQualifier(unsigned short const *,unsigned short const *,long,class CVar *)
?SetPropQualifier@CWbemInstance@@UAEJPBG0JPAVCVar@@@Z
; public: virtual long __thiscall CWbemClass::SetPropValue(unsigned short const *,class CVar *,long)
?SetPropValue@CWbemClass@@UAEJPBGPAVCVar@@J@Z
; public: virtual long __thiscall CWbemInstance::SetPropValue(unsigned short const *,class CVar *,long)
?SetPropValue@CWbemInstance@@UAEJPBGPAVCVar@@J@Z
; public: long __thiscall CClassPart::SetPropertyOrigin(unsigned short const *,long)
?SetPropertyOrigin@CClassPart@@QAEJPBGJ@Z
; public: virtual long __stdcall CWbemClass::SetPropertyOrigin(unsigned short const *,long)
?SetPropertyOrigin@CWbemClass@@UAGJPBGJ@Z
; public: virtual long __stdcall CWbemInstance::SetPropertyOrigin(unsigned short const *,long)
?SetPropertyOrigin@CWbemInstance@@UAGJPBGJ@Z
; public: virtual long __thiscall CWbemClass::SetQualifier(unsigned short const *,long,class CTypedValue *)
?SetQualifier@CWbemClass@@UAEJPBGJPAVCTypedValue@@@Z
; public: virtual long __thiscall CWbemClass::SetQualifier(unsigned short const *,class CVar *,long)
?SetQualifier@CWbemClass@@UAEJPBGPAVCVar@@J@Z
; public: virtual long __thiscall CWbemInstance::SetQualifier(unsigned short const *,long,class CTypedValue *)
?SetQualifier@CWbemInstance@@UAEJPBGJPAVCTypedValue@@@Z
; public: virtual long __thiscall CWbemInstance::SetQualifier(unsigned short const *,class CVar *,long)
?SetQualifier@CWbemInstance@@UAEJPBGPAVCVar@@J@Z
; public: long __thiscall CWbemObject::SetQualifierArrayRange(unsigned short const *,unsigned short const *,int,long,unsigned long,long,unsigned long,unsigned long,unsigned long,void *)
?SetQualifierArrayRange@CWbemObject@@QAEJPBG0HJKJKKKPAX@Z
; public: long __thiscall CQualifierSet::SetQualifierValue(unsigned short const *,unsigned char,class CTypedValue *,int,int)
?SetQualifierValue@CQualifierSet@@QAEJPBGEPAVCTypedValue@@HH@Z
; public: static long __stdcall CUntypedArray::SetRange(class CPtrSource *,long,unsigned long,unsigned long,class CFastHeap *,unsigned long,unsigned long,unsigned long,void *)
?SetRange@CUntypedArray@@SGJPAVCPtrSource@@JKKPAVCFastHeap@@KKKPAX@Z
; public: void __thiscall CInstancePQSContainer::SetSecondarySetData(void)
?SetSecondarySetData@CInstancePQSContainer@@QAEXXZ
; public: virtual long __stdcall CWbemObject::SetServerNamespace(unsigned short const *,unsigned short const *)
?SetServerNamespace@CWbemObject@@UAGJPBG0@Z
; protected: virtual long __thiscall CWbemRefreshingSvc::SetServiceData(unsigned short *,unsigned short *)
?SetServiceData@CWbemRefreshingSvc@@MAEJPAG0@Z
; public: virtual long __stdcall CWbemRefreshingSvc::XCfgRefrSrvc::SetServiceData(unsigned short *,unsigned short *)
?SetServiceData@XCfgRefrSrvc@CWbemRefreshingSvc@@UAGJPAG0@Z
; public: void __thiscall CMethodDescription::SetSig(int,unsigned long)
?SetSig@CMethodDescription@@QAEXHK@Z
; protected: long __thiscall CMethodPart::SetSignature(int,enum METHOD_SIGNATURE_TYPE,class CWbemObject *)
?SetSignature@CMethodPart@@IAEJHW4METHOD_SIGNATURE_TYPE@@PAVCWbemObject@@@Z
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::SetSize(int)
?SetSize@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXH@Z
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::SetSize(int)
?SetSize@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXH@Z
; public: virtual long __stdcall CWbemCallSecurity::SetThreadSecurity(struct _IWmiThreadSecHandle *)
?SetThreadSecurity@CWbemCallSecurity@@UAGJPAU_IWmiThreadSecHandle@@@Z
; public: void __thiscall CFastHeap::SetUsedLength(unsigned long)
?SetUsedLength@CFastHeap@@QAEXK@Z
; public: void __thiscall CLimitationMapping::SetVtableLength(unsigned long,int)
?SetVtableLength@CLimitationMapping@@QAEXKH@Z
; protected: long __thiscall CWbemDataPacket::SetupDataPacketHeader(unsigned long,unsigned char,unsigned long,unsigned long)
?SetupDataPacketHeader@CWbemDataPacket@@IAEJKEKK@Z
; public: int __thiscall CLimitationMapping::ShouldAddChildKeys(void)
?ShouldAddChildKeys@CLimitationMapping@@QAEHXZ
; public: int __thiscall CLimitationMapping::ShouldIncludeDerivation(void)
?ShouldIncludeDerivation@CLimitationMapping@@QAEHXZ
; public: int __thiscall CLimitationMapping::ShouldIncludeNamespace(void)
?ShouldIncludeNamespace@CLimitationMapping@@QAEHXZ
; public: int __thiscall CLimitationMapping::ShouldIncludeServer(void)
?ShouldIncludeServer@CLimitationMapping@@QAEHXZ
; public: int __thiscall CFastPropertyBag::Size(void)
?Size@CFastPropertyBag@@QAEHXZ
; public: unsigned char * __thiscall CBasicQualifierSet::Skip(void)
?Skip@CBasicQualifierSet@@QAEPAEXZ
; public: unsigned char * __thiscall CFastHeap::Skip(void)
?Skip@CFastHeap@@QAEPAEXZ
; public: unsigned char * __thiscall CPropertyLookupTable::Skip(void)
?Skip@CPropertyLookupTable@@QAEPAEXZ
; public: void __thiscall CFixedBSTRArray::SortInPlace(void)
?SortInPlace@CFixedBSTRArray@@QAEXXZ
; public: virtual long __stdcall CWbemClass::SpawnDerivedClass(long,struct IWbemClassObject * *)
?SpawnDerivedClass@CWbemClass@@UAGJJPAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemInstance::SpawnDerivedClass(long,struct IWbemClassObject * *)
?SpawnDerivedClass@CWbemInstance@@UAGJJPAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemClass::SpawnInstance(long,struct IWbemClassObject * *)
?SpawnInstance@CWbemClass@@UAGJJPAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemInstance::SpawnInstance(long,struct IWbemClassObject * *)
?SpawnInstance@CWbemInstance@@UAGJJPAPAUIWbemClassObject@@@Z
; public: virtual long __stdcall CWbemClass::SpawnKeyedInstance(long,unsigned short const *,struct _IWmiObject * *)
?SpawnKeyedInstance@CWbemClass@@UAGJJPBGPAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CWbemInstance::SpawnKeyedInstance(long,unsigned short const *,struct _IWmiObject * *)
?SpawnKeyedInstance@CWbemInstance@@UAGJJPBGPAPAU_IWmiObject@@@Z
; public: int __thiscall CCompressedString::StartsWithNoCase(unsigned short const *)const 
?StartsWithNoCase@CCompressedString@@QBEHPBG@Z
; public: virtual long __stdcall CWbemRemoteRefresher::XWbemRemoteRefr::StopRefreshing(long,long *,long)
?StopRefreshing@XWbemRemoteRefr@CWbemRemoteRefresher@@UAGJJPAJJ@Z
; public: void __thiscall CEmbeddedObject::StoreEmbedded(unsigned long,class CVar &)
?StoreEmbedded@CEmbeddedObject@@QAEXKAAVCVar@@@Z
; public: void __thiscall CEmbeddedObject::StoreEmbedded(unsigned long,class CWbemObject *)
?StoreEmbedded@CEmbeddedObject@@QAEXKPAVCWbemObject@@@Z
; protected: long __thiscall CQualifierSet::StoreQualifierConflicts(unsigned short const *,class CVar &,class CQualifierFlavor &,class CVarVector &)
?StoreQualifierConflicts@CQualifierSet@@IAEJPBGAAVCVar@@AAVCQualifierFlavor@@AAVCVarVector@@@Z
; public: int __thiscall CCompressedString::StoreToCVar(class CVar &)const 
?StoreToCVar@CCompressedString@@QBEHAAVCVar@@@Z
; public: void __thiscall CEmbeddedObject::StoreToCVar(class CVar &)
?StoreToCVar@CEmbeddedObject@@QAEXAAVCVar@@@Z
; public: virtual long __stdcall CWbemClass::StripClassPart(void)
?StripClassPart@CWbemClass@@UAGJXZ
; public: virtual long __stdcall CWbemInstance::StripClassPart(void)
?StripClassPart@CWbemInstance@@UAGJXZ
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::Swap(int,int)
?Swap@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXHH@Z
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::Swap(int,int)
?Swap@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXHH@Z
; public: long __thiscall CClassPart::TestCircularReference(unsigned short const *)
?TestCircularReference@CClassPart@@QAEJPBG@Z
; public: void __thiscall CFixedBSTRArray::ThreeWayMergeOrdered(class CFixedBSTRArray &,class CFixedBSTRArray &,class CFixedBSTRArray &)
?ThreeWayMergeOrdered@CFixedBSTRArray@@QAEXAAV1@00@Z
; public: static int __stdcall CBasicQualifierSet::TranslateToNewHeap(class CPtrSource *,class CFastHeap *,class CFastHeap *)
?TranslateToNewHeap@CBasicQualifierSet@@SGHPAVCPtrSource@@PAVCFastHeap@@1@Z
; public: int __thiscall CCompressedString::TranslateToNewHeap(class CFastHeap *,class CFastHeap *)
?TranslateToNewHeap@CCompressedString@@QAEHPAVCFastHeap@@0@Z
; public: int __thiscall CDataTable::TranslateToNewHeap(class CPropertyLookupTable *,int,class CFastHeap *,class CFastHeap *)
?TranslateToNewHeap@CDataTable@@QAEHPAVCPropertyLookupTable@@HPAVCFastHeap@@1@Z
; public: int __thiscall CInstancePart::TranslateToNewHeap(class CClassPart &,class CFastHeap *,class CFastHeap *)
?TranslateToNewHeap@CInstancePart@@QAEHAAVCClassPart@@PAVCFastHeap@@1@Z
; public: int __thiscall CQualifierSetList::TranslateToNewHeap(class CFastHeap *,class CFastHeap *)
?TranslateToNewHeap@CQualifierSetList@@QAEHPAVCFastHeap@@0@Z
; public: static int __stdcall CUntypedArray::TranslateToNewHeap(class CPtrSource *,class CType,class CFastHeap *,class CFastHeap *)
?TranslateToNewHeap@CUntypedArray@@SGHPAVCPtrSource@@VCType@@PAVCFastHeap@@2@Z
; public: void __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::Trim(void)
?Trim@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEXXZ
; public: void __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::Trim(void)
?Trim@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEXXZ
; public: void __thiscall CFastHeap::Trim(void)
?Trim@CFastHeap@@QAEXXZ
; public: void __thiscall CInternalString::Unbind(void)
?Unbind@CInternalString@@QAEXXZ
; public: class CFastPropertyBagItem * * __thiscall CPointerArray<class CFastPropertyBagItem,class CReferenceManager<class CFastPropertyBagItem>,class CFlexArray>::UnbindPtr(void)
?UnbindPtr@?$CPointerArray@VCFastPropertyBagItem@@V?$CReferenceManager@VCFastPropertyBagItem@@@@VCFlexArray@@@@QAEPAPAVCFastPropertyBagItem@@XZ
; public: class CWmiTextSource * * __thiscall CPointerArray<class CWmiTextSource,class CReferenceManager<class CWmiTextSource>,class CFlexArray>::UnbindPtr(void)
?UnbindPtr@?$CPointerArray@VCWmiTextSource@@V?$CReferenceManager@VCWmiTextSource@@@@VCFlexArray@@@@QAEPAPAVCWmiTextSource@@XZ
; public: virtual void __thiscall CWbemClass::Undecorate(void)
?Undecorate@CWbemClass@@UAEXXZ
; public: virtual void __thiscall CWbemInstance::Undecorate(void)
?Undecorate@CWbemInstance@@UAEXXZ
; public: long __thiscall CWbemFetchRefrMgr::Uninit(void)
?Uninit@CWbemFetchRefrMgr@@QAEJXZ
; public: virtual long __stdcall CWbemFetchRefrMgr::XFetchRefrMgr::Uninit(void)
?Uninit@XFetchRefrMgr@CWbemFetchRefrMgr@@UAGJXZ
; public: int __thiscall CHiPerfLock::Unlock(void)
?Unlock@CHiPerfLock@@QAEHXZ
; public: int __thiscall CSharedLock::Unlock(void)
?Unlock@CSharedLock@@QAEHXZ
; public: virtual long __stdcall CWbemObject::Unlock(long)
?Unlock@CWbemObject@@UAGJJ@Z
; public: virtual long __stdcall CWbemObject::UnmarshalInterface(struct IStream *,struct _GUID const &,void * *)
?UnmarshalInterface@CWbemObject@@UAGJPAUIStream@@ABU_GUID@@PAPAX@Z
; public: long __thiscall CWbemMtgtDeliverEventPacket::UnmarshalPacket(long &,struct IWbemClassObject * * &,class CWbemClassCache &)
?UnmarshalPacket@CWbemMtgtDeliverEventPacket@@QAEJAAJAAPAPAUIWbemClassObject@@AAVCWbemClassCache@@@Z
; public: long __thiscall CWbemObjectArrayPacket::UnmarshalPacket(long &,struct IWbemClassObject * * &,class CWbemClassCache &)
?UnmarshalPacket@CWbemObjectArrayPacket@@QAEJAAJAAPAPAUIWbemClassObject@@AAVCWbemClassCache@@@Z
; public: long __thiscall CWbemSmartEnumNextPacket::UnmarshalPacket(long &,struct IWbemClassObject * * &,class CWbemClassCache &)
?UnmarshalPacket@CWbemSmartEnumNextPacket@@QAEJAAJAAPAPAUIWbemClassObject@@AAVCWbemClassCache@@@Z
; public: static unsigned char * __stdcall CBasicQualifierSet::Unmerge(unsigned char *,class CFastHeap *,unsigned char *,class CFastHeap *)
?Unmerge@CBasicQualifierSet@@SGPAEPAEPAVCFastHeap@@01@Z
; public: unsigned char * __thiscall CClassAndMethods::Unmerge(unsigned char *,unsigned long)
?Unmerge@CClassAndMethods@@QAEPAEPAEK@Z
; public: unsigned char * __thiscall CClassPart::Unmerge(unsigned char *,int)
?Unmerge@CClassPart@@QAEPAEPAEH@Z
; public: unsigned char * __thiscall CDataTable::Unmerge(class CPropertyLookupTable *,class CFastHeap *,unsigned char *,class CFastHeap *)
?Unmerge@CDataTable@@QAEPAEPAVCPropertyLookupTable@@PAVCFastHeap@@PAE1@Z
; public: unsigned char * __thiscall CDerivationList::Unmerge(unsigned char *)
?Unmerge@CDerivationList@@QAEPAEPAE@Z
; public: unsigned char * __thiscall CMethodPart::Unmerge(unsigned char *,unsigned long)
?Unmerge@CMethodPart@@QAEPAEPAEK@Z
; public: unsigned char * __thiscall CPropertyLookupTable::Unmerge(class CDataTable *,class CFastHeap *,unsigned char *,class CFastHeap *)
?Unmerge@CPropertyLookupTable@@QAEPAEPAVCDataTable@@PAVCFastHeap@@PAE1@Z
; public: virtual long __thiscall CWbemClass::Unmerge(unsigned char *,int,unsigned long *)
?Unmerge@CWbemClass@@UAEJPAEHPAK@Z
; public: virtual long __thiscall CWbemInstance::Unmerge(unsigned char *,int,unsigned long *)
?Unmerge@CWbemInstance@@UAEJPAEHPAK@Z
; public: unsigned long __thiscall CWbemObject::Unmerge(unsigned char * *)
?Unmerge@CWbemObject@@QAEKPAPAE@Z
; public: virtual long __stdcall CWbemObject::Unmerge(long,unsigned long,unsigned long *,void *)
?Unmerge@CWbemObject@@UAGJJKPAKPAX@Z
; public: static long __stdcall CClassAndMethods::Update(class CClassAndMethods &,class CClassAndMethods &,long)
?Update@CClassAndMethods@@SGJAAV1@0J@Z
; public: static long __stdcall CClassPart::Update(class CClassPart &,class CClassPart &,long)
?Update@CClassPart@@SGJAAV1@0J@Z
; public: static long __stdcall CMethodPart::Update(class CMethodPart &,class CMethodPart &,long)
?Update@CMethodPart@@SGJAAV1@0J@Z
; public: long __thiscall CQualifierSet::Update(class CBasicQualifierSet &,long,class CFixedBSTRArray *)
?Update@CQualifierSet@@QAEJAAVCBasicQualifierSet@@JPAVCFixedBSTRArray@@@Z
; public: long __thiscall CWbemClass::Update(class CWbemClass *,long,class CWbemClass * *)
?Update@CWbemClass@@QAEJPAV1@JPAPAV1@@Z
; public: virtual long __stdcall CWbemClass::Update(struct _IWmiObject *,long,struct _IWmiObject * *)
?Update@CWbemClass@@UAGJPAU_IWmiObject@@JPAPAU2@@Z
; public: virtual long __stdcall CWbemInstance::Update(struct _IWmiObject *,long,struct _IWmiObject * *)
?Update@CWbemInstance@@UAGJPAU_IWmiObject@@JPAPAU2@@Z
; public: static long __stdcall CClassPart::UpdateProperties(class CClassPart &,class CClassPart &,long)
?UpdateProperties@CClassPart@@SGJAAV1@0J@Z
; public: virtual long __stdcall CWbemClass::Upgrade(struct _IWmiObject *,long,struct _IWmiObject * *)
?Upgrade@CWbemClass@@UAGJPAU_IWmiObject@@JPAPAU2@@Z
; public: virtual long __stdcall CWbemInstance::Upgrade(struct _IWmiObject *,long,struct _IWmiObject * *)
?Upgrade@CWbemInstance@@UAGJPAU_IWmiObject@@JPAPAU2@@Z
; protected: static char __stdcall CCompressedString::UpperByte(unsigned short)
?UpperByte@CCompressedString@@KGDG@Z
; public: static class CType  __stdcall CType::VARTYPEToType(unsigned short)
?VARTYPEToType@CType@@SG?AV1@G@Z
; public: long __thiscall CWbemInstance::Validate(void)
?Validate@CWbemInstance@@QAEJXZ
; public: static unsigned int __stdcall CBasicQualifierSet::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CBasicQualifierSet@@SGIPAEI@Z
; public: static unsigned int __stdcall CClassAndMethods::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CClassAndMethods@@SGIPAEI@Z
; public: static unsigned int __stdcall CClassPart::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CClassPart@@SGIPAEI@Z
; public: static unsigned int __stdcall CCompressedStringList::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CCompressedStringList@@SGIPAEI@Z
; public: static unsigned int __stdcall CDataTable::ValidateBuffer(unsigned char *,unsigned int,int)
?ValidateBuffer@CDataTable@@SGIPAEIH@Z
; public: static unsigned int __stdcall CDecorationPart::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CDecorationPart@@SGIPAEI@Z
; public: static void __stdcall CEmbeddedObject::ValidateBuffer(unsigned char *,unsigned int,class std::vector<struct EmbeddedObj,class wbem_allocator<struct EmbeddedObj> > &)
?ValidateBuffer@CEmbeddedObject@@SGXPAEIAAV?$vector@UEmbeddedObj@@V?$wbem_allocator@UEmbeddedObj@@@@@std@@@Z
; public: static unsigned int __stdcall CFastHeap::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CFastHeap@@SGIPAEI@Z
; public: static unsigned int __stdcall CInstancePart::ValidateBuffer(unsigned char *,unsigned int,class CClassPart &,class std::vector<struct EmbeddedObj,class wbem_allocator<struct EmbeddedObj> > &)
?ValidateBuffer@CInstancePart@@SGIPAEIAAVCClassPart@@AAV?$vector@UEmbeddedObj@@V?$wbem_allocator@UEmbeddedObj@@@@@std@@@Z
; public: static unsigned int __stdcall CMethodPart::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CMethodPart@@SGIPAEI@Z
; public: static unsigned int __stdcall CPropertyLookupTable::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CPropertyLookupTable@@SGIPAEI@Z
; public: static unsigned int __stdcall CQualifierSetList::ValidateBuffer(unsigned char *,unsigned int,int)
?ValidateBuffer@CQualifierSetList@@SGIPAEIH@Z
; public: static unsigned int __stdcall CWbemClass::ValidateBuffer(unsigned char *,unsigned int)
?ValidateBuffer@CWbemClass@@SGIPAEI@Z
; public: static unsigned int __stdcall CWbemInstance::ValidateBuffer(unsigned char *,int,unsigned long,class std::vector<struct EmbeddedObj,class wbem_allocator<struct EmbeddedObj> > &)
?ValidateBuffer@CWbemInstance@@SGIPAEHKAAV?$vector@UEmbeddedObj@@V?$wbem_allocator@UEmbeddedObj@@@@@std@@@Z
; public: static unsigned int __stdcall CWbemInstance::ValidateBuffer(unsigned char *,int,class CWbemInstance *,class std::vector<struct EmbeddedObj,class wbem_allocator<struct EmbeddedObj> > &)
?ValidateBuffer@CWbemInstance@@SGIPAEHPAV1@AAV?$vector@UEmbeddedObj@@V?$wbem_allocator@UEmbeddedObj@@@@@std@@@Z
; public: static unsigned int __stdcall CWbemInstance::ValidateBuffer(unsigned char *,unsigned int,class std::vector<struct EmbeddedObj,class wbem_allocator<struct EmbeddedObj> > &)
?ValidateBuffer@CWbemInstance@@SGIPAEIAAV?$vector@UEmbeddedObj@@V?$wbem_allocator@UEmbeddedObj@@@@@std@@@Z
; public: long __thiscall CLimitationMapping::ValidateInstance(class CWbemInstance *)
?ValidateInstance@CLimitationMapping@@QAEJPAVCWbemInstance@@@Z
; public: virtual long __stdcall CWbemObject::ValidateObject(long)
?ValidateObject@CWbemObject@@UAGJJ@Z
; protected: long __thiscall CMethodPart::ValidateOutParams(class CWbemObject *)
?ValidateOutParams@CMethodPart@@IAEJPAVCWbemObject@@@Z
; public: long __thiscall CWbemObject::ValidatePath(struct ParsedObjectPath *)
?ValidatePath@CWbemObject@@QAEJPAUParsedObjectPath@@@Z
; public: long __thiscall CPropertyLookupTable::ValidateRange(unsigned short * *,class CDataTable *,class CFastHeap *)
?ValidateRange@CPropertyLookupTable@@QAEJPAPAGPAVCDataTable@@PAVCFastHeap@@@Z
; public: int __thiscall CWbemObject::ValidateRange(unsigned short * *)
?ValidateRange@CWbemObject@@QAEHPAPAG@Z
; public: long __thiscall CQualifierSet::ValidateSet(unsigned short const *,unsigned char,class CTypedValue *,int,int)
?ValidateSet@CQualifierSet@@QAEJPBGEPAVCTypedValue@@HH@Z
; public: int __thiscall CCompressedString::ValidateSize(int)const 
?ValidateSize@CCompressedString@@QBEHH@Z
; public: static long __stdcall CWbemObject::WbemObjectFromCOMPtr(struct IUnknown *,class CWbemObject * *)
?WbemObjectFromCOMPtr@CWbemObject@@SGJPAUIUnknown@@PAPAV1@@Z
; unsigned short * __stdcall WbemStringCopy(unsigned short const *)
?WbemStringCopy@@YGPAGPBG@Z
; void __stdcall WbemStringFree(unsigned short *)
?WbemStringFree@@YGXPAG@Z
; protected: long __thiscall CWbemRefreshingSvc::WrapRemoteRefresher(struct IWbemRemoteRefresher * *)
?WrapRemoteRefresher@CWbemRefreshingSvc@@IAEJPAPAUIWbemRemoteRefresher@@@Z
; public: virtual long __stdcall CWbemObject::WriteDWORD(long,unsigned long)
?WriteDWORD@CWbemObject@@UAGJJK@Z
; public: long __thiscall CWbemClass::WriteDerivedClass(unsigned char *,int,class CDecorationPart *)
?WriteDerivedClass@CWbemClass@@QAEJPAEHPAVCDecorationPart@@@Z
; public: virtual long __stdcall CWbemObject::WriteProp(unsigned short const *,long,unsigned long,unsigned long,long,void *)
?WriteProp@CWbemObject@@UAGJPBGJKKJPAX@Z
; public: static unsigned char * __stdcall CBasicQualifierSet::WritePropagatedVersion(class CPtrSource *,unsigned char,class CPtrSource *,class CFastHeap *,class CFastHeap *)
?WritePropagatedVersion@CBasicQualifierSet@@SGPAEPAVCPtrSource@@E0PAVCFastHeap@@1@Z
; public: unsigned char * __thiscall CDataTable::WritePropagatedVersion(class CPropertyLookupTable *,class CFastHeap *,unsigned char *,class CFastHeap *)
?WritePropagatedVersion@CDataTable@@QAEPAEPAVCPropertyLookupTable@@PAVCFastHeap@@PAE1@Z
; public: unsigned char * __thiscall CPropertyLookupTable::WritePropagatedVersion(class CFastHeap *,unsigned char *,class CFastHeap *)
?WritePropagatedVersion@CPropertyLookupTable@@QAEPAEPAVCFastHeap@@PAE0@Z
; public: long __thiscall CWbemClass::WritePropertyAsMethodParam(class WString &,int,long,class CWbemClass *,int)
?WritePropertyAsMethodParam@CWbemClass@@QAEJAAVWString@@HJPAV1@H@Z
; public: virtual long __stdcall CWbemObject::WritePropertyValue(long,long,unsigned char const *)
?WritePropertyValue@CWbemObject@@UAGJJJPBE@Z
; public: virtual long __stdcall CWbemObject::WriteQWORD(long,unsigned __int64)
?WriteQWORD@CWbemObject@@UAGJJ_K@Z
; public: unsigned char * __thiscall CDataTable::WriteSmallerVersion(int,unsigned long,unsigned char *)
?WriteSmallerVersion@CDataTable@@QAEPAEHKPAE@Z
; public: unsigned char * __thiscall CQualifierSetList::WriteSmallerVersion(int,unsigned char *)
?WriteSmallerVersion@CQualifierSetList@@QAEPAEHPAE@Z
; public: virtual long __thiscall CWbemInstance::WriteToStream(struct IStream *)
?WriteToStream@CWbemInstance@@UAEJPAUIStream@@@Z
; public: virtual long __thiscall CWbemObject::WriteToStream(struct IStream *)
?WriteToStream@CWbemObject@@UAEJPAUIStream@@@Z
; public: static void __stdcall CWbemInstance::WriteTransferArrayHeader(long,unsigned char * *)
?WriteTransferArrayHeader@CWbemInstance@@SGXJPAPAE@Z
; public: virtual long __stdcall CWbemObject::_GetCoreInfo(long,void * *)
?_GetCoreInfo@CWbemObject@@UAGJJPAPAX@Z
; public: static unsigned short * __stdcall CCompressedString::fast_wcscpy(unsigned short *,unsigned short const *)
?fast_wcscpy@CCompressedString@@SGPAGPAGPBG@Z
; public: static int __stdcall CCompressedString::fast_wcslen(unsigned short const *)
?fast_wcslen@CCompressedString@@SGHPBG@Z
; public: static unsigned short * __stdcall CCompressedString::fast_wcsncpy(unsigned short *,unsigned short const *,int)
?fast_wcsncpy@CCompressedString@@SGPAGPAGPBGH@Z
; protected: static unsigned char *  CWbemDataPacket::s_abSignature
?s_abSignature@CWbemDataPacket@@1PAEA DATA
; private: static unsigned short const * *  CReservedWordTable::s_apwszReservedWords
?s_apwszReservedWords@CReservedWordTable@@0PAPBGA DATA
; protected: static class CStaticCritSec  CWbemFetchRefrMgr::s_cs
?s_cs@CWbemFetchRefrMgr@@1VCStaticCritSec@@A DATA
; protected: static struct _IWbemRefresherMgr *  CWbemFetchRefrMgr::s_pRefrMgr
?s_pRefrMgr@CWbemFetchRefrMgr@@1PAU_IWbemRefresherMgr@@A DATA
; private: static unsigned short const * const  CReservedWordTable::s_pszStartingCharsLCase
?s_pszStartingCharsLCase@CReservedWordTable@@0PBGB DATA
; private: static unsigned short const * const  CReservedWordTable::s_pszStartingCharsUCase
?s_pszStartingCharsUCase@CReservedWordTable@@0PBGB DATA
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
_GetObjectCount@0
