; 
; 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
