; 
; Exports of file SNMPINCL.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY SNMPINCL.dll
EXPORTS
; public: __cdecl WbemSnmpClassObject::WbemSnmpClassObject(class WbemSnmpClassObject const & __ptr64) __ptr64
??0WbemSnmpClassObject@@QEAA@AEBV0@@Z
; public: __cdecl WbemSnmpClassObject::WbemSnmpClassObject(unsigned short const * __ptr64,int) __ptr64
??0WbemSnmpClassObject@@QEAA@PEBGH@Z
; public: __cdecl WbemSnmpClassObject::WbemSnmpClassObject(void) __ptr64
??0WbemSnmpClassObject@@QEAA@XZ
; public: __cdecl WbemSnmpErrorObject::WbemSnmpErrorObject(class WbemSnmpErrorObject const & __ptr64) __ptr64
??0WbemSnmpErrorObject@@QEAA@AEBV0@@Z
; public: __cdecl WbemSnmpErrorObject::WbemSnmpErrorObject(void) __ptr64
??0WbemSnmpErrorObject@@QEAA@XZ
; public: __cdecl WbemSnmpProperty::WbemSnmpProperty(class WbemSnmpProperty const & __ptr64) __ptr64
??0WbemSnmpProperty@@QEAA@AEBV0@@Z
; public: __cdecl WbemSnmpProperty::WbemSnmpProperty(unsigned short const * __ptr64) __ptr64
??0WbemSnmpProperty@@QEAA@PEBG@Z
; public: __cdecl WbemSnmpQualifier::WbemSnmpQualifier(class WbemSnmpQualifier const & __ptr64) __ptr64
??0WbemSnmpQualifier@@QEAA@AEBV0@@Z
; public: __cdecl WbemSnmpQualifier::WbemSnmpQualifier(unsigned short const * __ptr64,class SnmpInstanceType const * __ptr64) __ptr64
??0WbemSnmpQualifier@@QEAA@PEBGPEBVSnmpInstanceType@@@Z
; public: virtual __cdecl WbemSnmpClassObject::~WbemSnmpClassObject(void) __ptr64
??1WbemSnmpClassObject@@UEAA@XZ
; public: virtual __cdecl WbemSnmpErrorObject::~WbemSnmpErrorObject(void) __ptr64
??1WbemSnmpErrorObject@@UEAA@XZ
; public: virtual __cdecl WbemSnmpProperty::~WbemSnmpProperty(void) __ptr64
??1WbemSnmpProperty@@UEAA@XZ
; public: virtual __cdecl WbemSnmpQualifier::~WbemSnmpQualifier(void) __ptr64
??1WbemSnmpQualifier@@UEAA@XZ
; public: class WbemSnmpClassObject & __ptr64 __cdecl WbemSnmpClassObject::operator=(class WbemSnmpClassObject const & __ptr64) __ptr64
??4WbemSnmpClassObject@@QEAAAEAV0@AEBV0@@Z
; public: class WbemSnmpErrorObject & __ptr64 __cdecl WbemSnmpErrorObject::operator=(class WbemSnmpErrorObject const & __ptr64) __ptr64
??4WbemSnmpErrorObject@@QEAAAEAV0@AEBV0@@Z
; public: class WbemSnmpProperty & __ptr64 __cdecl WbemSnmpProperty::operator=(class WbemSnmpProperty const & __ptr64) __ptr64
??4WbemSnmpProperty@@QEAAAEAV0@AEBV0@@Z
; public: class WbemSnmpQualifier & __ptr64 __cdecl WbemSnmpQualifier::operator=(class WbemSnmpQualifier const & __ptr64) __ptr64
??4WbemSnmpQualifier@@QEAAAEAV0@AEBV0@@Z
; const  WbemSnmpClassObject::`vftable'
??_7WbemSnmpClassObject@@6B@
; const  WbemSnmpErrorObject::`vftable'
??_7WbemSnmpErrorObject@@6B@
; const  WbemSnmpProperty::`vftable'
??_7WbemSnmpProperty@@6B@
; const  WbemSnmpQualifier::`vftable'
??_7WbemSnmpQualifier@@6B@
; private: void __cdecl WbemSnmpClassObject::AddKeyedProperty(class WbemSnmpProperty * __ptr64) __ptr64
?AddKeyedProperty@WbemSnmpClassObject@@AEAAXPEAVWbemSnmpProperty@@@Z
; public: int __cdecl WbemSnmpClassObject::AddKeyedProperty(unsigned short * __ptr64) __ptr64
?AddKeyedProperty@WbemSnmpClassObject@@QEAAHPEAG@Z
; public: int __cdecl WbemSnmpClassObject::AddProperty(unsigned short * __ptr64) __ptr64
?AddProperty@WbemSnmpClassObject@@QEAAHPEAG@Z
; public: int __cdecl WbemSnmpClassObject::AddProperty(class WbemSnmpProperty * __ptr64) __ptr64
?AddProperty@WbemSnmpClassObject@@QEAAHPEAVWbemSnmpProperty@@@Z
; public: int __cdecl WbemSnmpClassObject::AddQualifier(unsigned short * __ptr64) __ptr64
?AddQualifier@WbemSnmpClassObject@@QEAAHPEAG@Z
; public: int __cdecl WbemSnmpClassObject::AddQualifier(class WbemSnmpQualifier * __ptr64) __ptr64
?AddQualifier@WbemSnmpClassObject@@QEAAHPEAVWbemSnmpQualifier@@@Z
; public: int __cdecl WbemSnmpProperty::AddQualifier(unsigned short * __ptr64) __ptr64
?AddQualifier@WbemSnmpProperty@@QEAAHPEAG@Z
; public: int __cdecl WbemSnmpProperty::AddQualifier(class WbemSnmpQualifier * __ptr64) __ptr64
?AddQualifier@WbemSnmpProperty@@QEAAHPEAVWbemSnmpQualifier@@@Z
; public: virtual int __cdecl WbemSnmpClassObject::Check(class WbemSnmpErrorObject & __ptr64) __ptr64
?Check@WbemSnmpClassObject@@UEAAHAEAVWbemSnmpErrorObject@@@Z
; public: virtual int __cdecl WbemSnmpProperty::Check(class WbemSnmpErrorObject & __ptr64) __ptr64
?Check@WbemSnmpProperty@@UEAAHAEAVWbemSnmpErrorObject@@@Z
; public: void __cdecl WbemSnmpClassObject::DeleteProperty(unsigned short * __ptr64) __ptr64
?DeleteProperty@WbemSnmpClassObject@@QEAAXPEAG@Z
; public: int __cdecl WbemSnmpProperty::Encode(struct tagVARIANT const & __ptr64,class SnmpObjectIdentifier & __ptr64) __ptr64
?Encode@WbemSnmpProperty@@QEAAHAEBUtagVARIANT@@AEAVSnmpObjectIdentifier@@@Z
; public: class WbemSnmpProperty * __ptr64 __cdecl WbemSnmpClassObject::FindKeyProperty(unsigned short * __ptr64)const  __ptr64
?FindKeyProperty@WbemSnmpClassObject@@QEBAPEAVWbemSnmpProperty@@PEAG@Z
; public: class WbemSnmpProperty * __ptr64 __cdecl WbemSnmpClassObject::FindProperty(unsigned short * __ptr64)const  __ptr64
?FindProperty@WbemSnmpClassObject@@QEBAPEAVWbemSnmpProperty@@PEAG@Z
; public: class WbemSnmpQualifier * __ptr64 __cdecl WbemSnmpClassObject::FindQualifier(unsigned short * __ptr64)const  __ptr64
?FindQualifier@WbemSnmpClassObject@@QEBAPEAVWbemSnmpQualifier@@PEAG@Z
; public: class WbemSnmpQualifier * __ptr64 __cdecl WbemSnmpProperty::FindQualifier(unsigned short * __ptr64)const  __ptr64
?FindQualifier@WbemSnmpProperty@@QEBAPEAVWbemSnmpQualifier@@PEAG@Z
; public: int __cdecl WbemSnmpClassObject::Get(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64) __ptr64
?Get@WbemSnmpClassObject@@QEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@@Z
; public: long __cdecl WbemSnmpProperty::GetCimType(void) __ptr64
?GetCimType@WbemSnmpProperty@@QEAAJXZ
; public: unsigned short * __ptr64 __cdecl WbemSnmpClassObject::GetClassNameW(void)const  __ptr64
?GetClassNameW@WbemSnmpClassObject@@QEBAPEAGXZ
; public: class WbemSnmpProperty * __ptr64 __cdecl WbemSnmpClassObject::GetCurrentProperty(void) __ptr64
?GetCurrentProperty@WbemSnmpClassObject@@QEAAPEAVWbemSnmpProperty@@XZ
; public: long __cdecl WbemSnmpProperty::GetHandle(void) __ptr64
?GetHandle@WbemSnmpProperty@@QEAAJXZ
; public: unsigned long __cdecl WbemSnmpProperty::GetKeyOrder(void) __ptr64
?GetKeyOrder@WbemSnmpProperty@@QEAAKXZ
; public: unsigned long __cdecl WbemSnmpClassObject::GetKeyPropertyCount(void) __ptr64
?GetKeyPropertyCount@WbemSnmpClassObject@@QEAAKXZ
; public: unsigned short * __ptr64 __cdecl WbemSnmpErrorObject::GetMessageW(void) __ptr64
?GetMessageW@WbemSnmpErrorObject@@QEAAPEAGXZ
; private: int __cdecl WbemSnmpClassObject::GetMosClassObject(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64) __ptr64
?GetMosClassObject@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@@Z
; private: int __cdecl WbemSnmpClassObject::GetMosClassObjectProperties(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64) __ptr64
?GetMosClassObjectProperties@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@@Z
; private: int __cdecl WbemSnmpClassObject::GetMosClassObjectPropertyQualifiers(class WbemSnmpErrorObject & __ptr64,class WbemSnmpProperty * __ptr64,struct IWbemQualifierSet * __ptr64) __ptr64
?GetMosClassObjectPropertyQualifiers@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAVWbemSnmpProperty@@PEAUIWbemQualifierSet@@@Z
; private: int __cdecl WbemSnmpClassObject::GetMosClassObjectQualifiers(class WbemSnmpErrorObject & __ptr64,struct IWbemQualifierSet * __ptr64) __ptr64
?GetMosClassObjectQualifiers@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemQualifierSet@@@Z
; public: unsigned short * __ptr64 __cdecl WbemSnmpProperty::GetName(void)const  __ptr64
?GetName@WbemSnmpProperty@@QEBAPEAGXZ
; public: unsigned short * __ptr64 __cdecl WbemSnmpQualifier::GetName(void)const  __ptr64
?GetName@WbemSnmpQualifier@@QEBAPEAGXZ
; public: unsigned long __cdecl WbemSnmpClassObject::GetNumberOfAccessible(void) __ptr64
?GetNumberOfAccessible@WbemSnmpClassObject@@QEAAKXZ
; public: unsigned long __cdecl WbemSnmpClassObject::GetPropertyCount(void) __ptr64
?GetPropertyCount@WbemSnmpClassObject@@QEAAKXZ
; public: unsigned long __cdecl WbemSnmpClassObject::GetQualifierCount(void) __ptr64
?GetQualifierCount@WbemSnmpClassObject@@QEAAKXZ
; public: unsigned long __cdecl WbemSnmpProperty::GetQualifierCount(void) __ptr64
?GetQualifierCount@WbemSnmpProperty@@QEAAKXZ
; public: enum tag_WBEMSNMPSTATUS  __cdecl WbemSnmpErrorObject::GetStatus(void) __ptr64
?GetStatus@WbemSnmpErrorObject@@QEAA?AW4tag_WBEMSNMPSTATUS@@XZ
; public: int __cdecl WbemSnmpProperty::GetTag(void) __ptr64
?GetTag@WbemSnmpProperty@@QEAAHXZ
; public: unsigned long __cdecl WbemSnmpProperty::GetTextualConvention(void) __ptr64
?GetTextualConvention@WbemSnmpProperty@@QEAAKXZ
; public: int __cdecl WbemSnmpProperty::GetValue(struct tagVARIANT & __ptr64,long & __ptr64)const  __ptr64
?GetValue@WbemSnmpProperty@@QEBAHAEAUtagVARIANT@@AEAJ@Z
; public: class SnmpInstanceType * __ptr64 __cdecl WbemSnmpProperty::GetValue(void)const  __ptr64
?GetValue@WbemSnmpProperty@@QEBAPEAVSnmpInstanceType@@XZ
; public: int __cdecl WbemSnmpQualifier::GetValue(struct tagVARIANT & __ptr64)const  __ptr64
?GetValue@WbemSnmpQualifier@@QEBAHAEAUtagVARIANT@@@Z
; public: class SnmpInstanceType * __ptr64 __cdecl WbemSnmpQualifier::GetValue(void)const  __ptr64
?GetValue@WbemSnmpQualifier@@QEBAPEAVSnmpInstanceType@@XZ
; public: unsigned short __cdecl WbemSnmpProperty::GetValueVariantEncodedType(void)const  __ptr64
?GetValueVariantEncodedType@WbemSnmpProperty@@QEBAGXZ
; public: unsigned short __cdecl WbemSnmpProperty::GetValueVariantType(void)const  __ptr64
?GetValueVariantType@WbemSnmpProperty@@QEBAGXZ
; public: unsigned short __cdecl WbemSnmpQualifier::GetValueVariantType(void)const  __ptr64
?GetValueVariantType@WbemSnmpQualifier@@QEBAGXZ
; public: enum tag_WBEMSTATUS  __cdecl WbemSnmpErrorObject::GetWbemStatus(void) __ptr64
?GetWbemStatus@WbemSnmpErrorObject@@QEAA?AW4tag_WBEMSTATUS@@XZ
; public: int __cdecl WbemSnmpClassObject::GotoProperty(class WbemSnmpProperty * __ptr64) __ptr64
?GotoProperty@WbemSnmpClassObject@@QEAAHPEAVWbemSnmpProperty@@@Z
; public: int __cdecl WbemSnmpClassObject::IsClass(void) __ptr64
?IsClass@WbemSnmpClassObject@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsKey(void) __ptr64
?IsKey@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpClassObject::IsKeyed(void) __ptr64
?IsKeyed@WbemSnmpClassObject@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsNull(void) __ptr64
?IsNull@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpQualifier::IsPropagatable(void)const  __ptr64
?IsPropagatable@WbemSnmpQualifier@@QEBAHXZ
; public: int __cdecl WbemSnmpClassObject::IsReadable(void) __ptr64
?IsReadable@WbemSnmpClassObject@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsReadable(void) __ptr64
?IsReadable@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsSNMPV1Type(void) __ptr64
?IsSNMPV1Type@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsSNMPV2CType(void) __ptr64
?IsSNMPV2CType@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpClassObject::IsSingleton(void) __ptr64
?IsSingleton@WbemSnmpClassObject@@QEAAHXZ
; public: int __cdecl WbemSnmpClassObject::IsVirtual(void) __ptr64
?IsVirtual@WbemSnmpClassObject@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsVirtualKey(void) __ptr64
?IsVirtualKey@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpClassObject::IsWritable(void) __ptr64
?IsWritable@WbemSnmpClassObject@@QEAAHXZ
; public: int __cdecl WbemSnmpProperty::IsWritable(void) __ptr64
?IsWritable@WbemSnmpProperty@@QEAAHXZ
; public: int __cdecl WbemSnmpClassObject::Merge(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64,int) __ptr64
?Merge@WbemSnmpClassObject@@QEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@H@Z
; private: int __cdecl WbemSnmpClassObject::MergeMosClassObject(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64,int) __ptr64
?MergeMosClassObject@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@H@Z
; private: int __cdecl WbemSnmpClassObject::MergeMosClassObjectProperties(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64,int) __ptr64
?MergeMosClassObjectProperties@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@H@Z
; private: int __cdecl WbemSnmpClassObject::MergeMosClassObjectPropertyQualifiers(class WbemSnmpErrorObject & __ptr64,class WbemSnmpProperty * __ptr64,struct IWbemQualifierSet * __ptr64) __ptr64
?MergeMosClassObjectPropertyQualifiers@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAVWbemSnmpProperty@@PEAUIWbemQualifierSet@@@Z
; private: int __cdecl WbemSnmpClassObject::MergeMosClassObjectQualifiers(class WbemSnmpErrorObject & __ptr64,struct IWbemQualifierSet * __ptr64) __ptr64
?MergeMosClassObjectQualifiers@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemQualifierSet@@@Z
; public: class WbemSnmpProperty * __ptr64 __cdecl WbemSnmpClassObject::NextKeyProperty(void) __ptr64
?NextKeyProperty@WbemSnmpClassObject@@QEAAPEAVWbemSnmpProperty@@XZ
; public: class WbemSnmpProperty * __ptr64 __cdecl WbemSnmpClassObject::NextProperty(void) __ptr64
?NextProperty@WbemSnmpClassObject@@QEAAPEAVWbemSnmpProperty@@XZ
; public: class WbemSnmpQualifier * __ptr64 __cdecl WbemSnmpClassObject::NextQualifier(void) __ptr64
?NextQualifier@WbemSnmpClassObject@@QEAAPEAVWbemSnmpQualifier@@XZ
; public: class WbemSnmpQualifier * __ptr64 __cdecl WbemSnmpProperty::NextQualifier(void) __ptr64
?NextQualifier@WbemSnmpProperty@@QEAAPEAVWbemSnmpQualifier@@XZ
; public: void __cdecl WbemSnmpClassObject::ResetKeyProperty(void) __ptr64
?ResetKeyProperty@WbemSnmpClassObject@@QEAAXXZ
; public: void __cdecl WbemSnmpClassObject::ResetProperty(void) __ptr64
?ResetProperty@WbemSnmpClassObject@@QEAAXXZ
; public: void __cdecl WbemSnmpClassObject::ResetQualifier(void) __ptr64
?ResetQualifier@WbemSnmpClassObject@@QEAAXXZ
; public: void __cdecl WbemSnmpProperty::ResetQualifier(void) __ptr64
?ResetQualifier@WbemSnmpProperty@@QEAAXXZ
; public: int __cdecl WbemSnmpClassObject::Set(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64,int) __ptr64
?Set@WbemSnmpClassObject@@QEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@H@Z
; public: void __cdecl WbemSnmpProperty::SetHandle(long) __ptr64
?SetHandle@WbemSnmpProperty@@QEAAXJ@Z
; public: void __cdecl WbemSnmpClassObject::SetIsClass(int) __ptr64
?SetIsClass@WbemSnmpClassObject@@QEAAXH@Z
; public: void __cdecl WbemSnmpProperty::SetKey(int) __ptr64
?SetKey@WbemSnmpProperty@@QEAAXH@Z
; public: void __cdecl WbemSnmpProperty::SetKeyOrder(unsigned long) __ptr64
?SetKeyOrder@WbemSnmpProperty@@QEAAXK@Z
; public: void __cdecl WbemSnmpClassObject::SetKeyed(int) __ptr64
?SetKeyed@WbemSnmpClassObject@@QEAAXH@Z
; public: void __cdecl WbemSnmpErrorObject::SetMessage(unsigned short * __ptr64) __ptr64
?SetMessage@WbemSnmpErrorObject@@QEAAXPEAG@Z
; private: int __cdecl WbemSnmpClassObject::SetMosClassObject(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64,int) __ptr64
?SetMosClassObject@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@H@Z
; private: int __cdecl WbemSnmpClassObject::SetMosClassObjectProperties(class WbemSnmpErrorObject & __ptr64,struct IWbemClassObject * __ptr64,int) __ptr64
?SetMosClassObjectProperties@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemClassObject@@H@Z
; private: int __cdecl WbemSnmpClassObject::SetMosClassObjectPropertyQualifiers(class WbemSnmpErrorObject & __ptr64,class WbemSnmpProperty * __ptr64,struct IWbemQualifierSet * __ptr64) __ptr64
?SetMosClassObjectPropertyQualifiers@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAVWbemSnmpProperty@@PEAUIWbemQualifierSet@@@Z
; private: int __cdecl WbemSnmpClassObject::SetMosClassObjectQualifiers(class WbemSnmpErrorObject & __ptr64,struct IWbemQualifierSet * __ptr64) __ptr64
?SetMosClassObjectQualifiers@WbemSnmpClassObject@@AEAAHAEAVWbemSnmpErrorObject@@PEAUIWbemQualifierSet@@@Z
; public: void __cdecl WbemSnmpClassObject::SetNumberOfAccessible(unsigned long) __ptr64
?SetNumberOfAccessible@WbemSnmpClassObject@@QEAAXK@Z
; public: void __cdecl WbemSnmpClassObject::SetReadable(int) __ptr64
?SetReadable@WbemSnmpClassObject@@QEAAXH@Z
; public: void __cdecl WbemSnmpProperty::SetReadable(int) __ptr64
?SetReadable@WbemSnmpProperty@@QEAAXH@Z
; public: void __cdecl WbemSnmpClassObject::SetSingleton(int) __ptr64
?SetSingleton@WbemSnmpClassObject@@QEAAXH@Z
; public: void __cdecl WbemSnmpErrorObject::SetStatus(enum tag_WBEMSNMPSTATUS) __ptr64
?SetStatus@WbemSnmpErrorObject@@QEAAXW4tag_WBEMSNMPSTATUS@@@Z
; public: void __cdecl WbemSnmpProperty::SetTag(int) __ptr64
?SetTag@WbemSnmpProperty@@QEAAXH@Z
; public: void __cdecl WbemSnmpProperty::SetTextualConvention(unsigned long) __ptr64
?SetTextualConvention@WbemSnmpProperty@@QEAAXK@Z
; public: int __cdecl WbemSnmpProperty::SetValue(struct tagVARIANT const & __ptr64,long const & __ptr64,enum WbemPropertyValueCheck) __ptr64
?SetValue@WbemSnmpProperty@@QEAAHAEBUtagVARIANT@@AEBJW4WbemPropertyValueCheck@@@Z
; public: int __cdecl WbemSnmpProperty::SetValue(struct IWbemClassObject * __ptr64,class SnmpValue const * __ptr64,enum WbemPropertyValueCheck) __ptr64
?SetValue@WbemSnmpProperty@@QEAAHPEAUIWbemClassObject@@PEBVSnmpValue@@W4WbemPropertyValueCheck@@@Z
; public: int __cdecl WbemSnmpProperty::SetValue(unsigned short const * __ptr64,enum WbemPropertyValueCheck) __ptr64
?SetValue@WbemSnmpProperty@@QEAAHPEBGW4WbemPropertyValueCheck@@@Z
; public: int __cdecl WbemSnmpProperty::SetValue(class SnmpInstanceType const * __ptr64,enum WbemPropertyValueCheck) __ptr64
?SetValue@WbemSnmpProperty@@QEAAHPEBVSnmpInstanceType@@W4WbemPropertyValueCheck@@@Z
; public: int __cdecl WbemSnmpProperty::SetValue(class SnmpValue const * __ptr64,enum WbemPropertyValueCheck) __ptr64
?SetValue@WbemSnmpProperty@@QEAAHPEBVSnmpValue@@W4WbemPropertyValueCheck@@@Z
; public: int __cdecl WbemSnmpQualifier::SetValue(struct tagVARIANT const & __ptr64) __ptr64
?SetValue@WbemSnmpQualifier@@QEAAHAEBUtagVARIANT@@@Z
; public: int __cdecl WbemSnmpQualifier::SetValue(struct IWbemQualifierSet * __ptr64,class SnmpInstanceType const & __ptr64) __ptr64
?SetValue@WbemSnmpQualifier@@QEAAHPEAUIWbemQualifierSet@@AEBVSnmpInstanceType@@@Z
; public: int __cdecl WbemSnmpQualifier::SetValue(class SnmpInstanceType const * __ptr64) __ptr64
?SetValue@WbemSnmpQualifier@@QEAAHPEBVSnmpInstanceType@@@Z
; public: void __cdecl WbemSnmpClassObject::SetVirtual(int) __ptr64
?SetVirtual@WbemSnmpClassObject@@QEAAXH@Z
; public: void __cdecl WbemSnmpProperty::SetVirtualKey(int) __ptr64
?SetVirtualKey@WbemSnmpProperty@@QEAAXH@Z
; public: void __cdecl WbemSnmpErrorObject::SetWbemStatus(enum tag_WBEMSTATUS) __ptr64
?SetWbemStatus@WbemSnmpErrorObject@@QEAAXW4tag_WBEMSTATUS@@@Z
; public: void __cdecl WbemSnmpClassObject::SetWritable(int) __ptr64
?SetWritable@WbemSnmpClassObject@@QEAAXH@Z
; public: void __cdecl WbemSnmpProperty::SetWritable(int) __ptr64
?SetWritable@WbemSnmpProperty@@QEAAXH@Z
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
