; 
; Exports of file TCPMIB.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY TCPMIB.dll
EXPORTS
; public: __cdecl CTcpMib::CTcpMib(class CTcpMib const & __ptr64) __ptr64
??0CTcpMib@@QEAA@AEBV0@@Z
; public: __cdecl CTcpMib::CTcpMib(void) __ptr64
??0CTcpMib@@QEAA@XZ
; public: __cdecl CTcpMibABC::CTcpMibABC(class CTcpMibABC const & __ptr64) __ptr64
??0CTcpMibABC@@QEAA@AEBV0@@Z
; public: __cdecl CTcpMibABC::CTcpMibABC(void) __ptr64
??0CTcpMibABC@@QEAA@XZ
; public: virtual __cdecl CTcpMib::~CTcpMib(void) __ptr64
??1CTcpMib@@UEAA@XZ
; public: virtual __cdecl CTcpMibABC::~CTcpMibABC(void) __ptr64
??1CTcpMibABC@@UEAA@XZ
; public: class CTcpMib & __ptr64 __cdecl CTcpMib::operator=(class CTcpMib const & __ptr64) __ptr64
??4CTcpMib@@QEAAAEAV0@AEBV0@@Z
; public: class CTcpMibABC & __ptr64 __cdecl CTcpMibABC::operator=(class CTcpMibABC const & __ptr64) __ptr64
??4CTcpMibABC@@QEAAAEAV0@AEBV0@@Z
; const  CTcpMib::`vftable'
??_7CTcpMib@@6B@
; const  CTcpMibABC::`vftable'
??_7CTcpMibABC@@6B@
; private: void __cdecl CTcpMib::EnterCSection(void) __ptr64
?EnterCSection@CTcpMib@@AEAAXXZ
; private: void __cdecl CTcpMib::ExitCSection(void) __ptr64
?ExitCSection@CTcpMib@@AEAAXXZ
; public: virtual unsigned long __cdecl CTcpMib::GetDeviceDescription(char const * __ptr64,char const * __ptr64,unsigned long,unsigned short * __ptr64,unsigned long) __ptr64
?GetDeviceDescription@CTcpMib@@UEAAKPEBD0KPEAGK@Z
; public: virtual unsigned long __cdecl CTcpMib::GetDeviceHWAddress(char const * __ptr64,char const * __ptr64,unsigned long,unsigned long,unsigned short * __ptr64) __ptr64
?GetDeviceHWAddress@CTcpMib@@UEAAKPEBD0KKPEAG@Z
; public: virtual unsigned long __cdecl CTcpMib::GetDeviceName(char const * __ptr64,char const * __ptr64,unsigned long,unsigned long,unsigned short * __ptr64) __ptr64
?GetDeviceName@CTcpMib@@UEAAKPEBD0KKPEAG@Z
; public: virtual unsigned long __cdecl CTcpMib::GetNextRequestId(unsigned long * __ptr64) __ptr64
?GetNextRequestId@CTcpMib@@UEAAKPEAK@Z
; private: static unsigned long __cdecl CTcpMib::GetStatusFromVBL(void * __ptr64,struct smiVALUE * __ptr64,struct smiVALUE * __ptr64,struct smiVALUE * __ptr64)
?GetStatusFromVBL@CTcpMib@@CAKPEAXPEAUsmiVALUE@@11@Z
; public: virtual unsigned long __cdecl CTcpMib::InitSnmp(void) __ptr64
?InitSnmp@CTcpMib@@UEAAKXZ
; public: int __cdecl CTcpMib::IsValid(void)const  __ptr64
?IsValid@CTcpMib@@QEBAHXZ
; private: static int __cdecl CTcpMib::MapAsynchToPortStatus(unsigned long,struct _PORT_INFO_3W * __ptr64)
?MapAsynchToPortStatus@CTcpMib@@CAHKPEAU_PORT_INFO_3W@@@Z
; public: virtual unsigned long __cdecl CTcpMib::RegisterDeviceStatusCallback(unsigned long (__cdecl*)(int,char const * __ptr64,char const * __ptr64,unsigned long,unsigned long,unsigned long),void * __ptr64 * __ptr64) __ptr64
?RegisterDeviceStatusCallback@CTcpMib@@UEAAKP6AKHPEBD0KKK@ZPEAPEAX@Z
; public: virtual unsigned long __cdecl CTcpMib::RequestDeviceStatus(void * __ptr64,unsigned long,unsigned short const * __ptr64,unsigned short const * __ptr64,unsigned long) __ptr64
?RequestDeviceStatus@CTcpMib@@UEAAKPEAXKPEBG1K@Z
; private: static unsigned long __cdecl CTcpMib::SnmpCallback(void * __ptr64,void * __ptr64,unsigned int,unsigned __int64,__int64,void * __ptr64)
?SnmpCallback@CTcpMib@@CAKPEAX0I_K_J0@Z
; public: unsigned long __cdecl CTcpMib::SnmpGet(char const * __ptr64,char const * __ptr64,unsigned long,struct SnmpVarBindList * __ptr64) __ptr64
?SnmpGet@CTcpMib@@QEAAKPEBD0KPEAUSnmpVarBindList@@@Z
; public: virtual unsigned long __cdecl CTcpMib::SnmpGet(char const * __ptr64,char const * __ptr64,unsigned long,struct AsnObjectIdentifier * __ptr64,struct SnmpVarBindList * __ptr64) __ptr64
?SnmpGet@CTcpMib@@UEAAKPEBD0KPEAUAsnObjectIdentifier@@PEAUSnmpVarBindList@@@Z
; public: unsigned long __cdecl CTcpMib::SnmpGetNext(char const * __ptr64,char const * __ptr64,unsigned long,struct SnmpVarBindList * __ptr64) __ptr64
?SnmpGetNext@CTcpMib@@QEAAKPEBD0KPEAUSnmpVarBindList@@@Z
; public: virtual unsigned long __cdecl CTcpMib::SnmpGetNext(char const * __ptr64,char const * __ptr64,unsigned long,struct AsnObjectIdentifier * __ptr64,struct SnmpVarBindList * __ptr64) __ptr64
?SnmpGetNext@CTcpMib@@UEAAKPEBD0KPEAUAsnObjectIdentifier@@PEAUSnmpVarBindList@@@Z
; public: unsigned long __cdecl CTcpMib::SnmpWalk(char const * __ptr64,char const * __ptr64,unsigned long,struct SnmpVarBindList * __ptr64) __ptr64
?SnmpWalk@CTcpMib@@QEAAKPEBD0KPEAUSnmpVarBindList@@@Z
; public: virtual unsigned long __cdecl CTcpMib::SnmpWalk(char const * __ptr64,char const * __ptr64,unsigned long,struct AsnObjectIdentifier * __ptr64,struct SnmpVarBindList * __ptr64) __ptr64
?SnmpWalk@CTcpMib@@UEAAKPEBD0KPEAUAsnObjectIdentifier@@PEAUSnmpVarBindList@@@Z
; public: virtual int __cdecl CTcpMib::SupportsPrinterMib(char const * __ptr64,char const * __ptr64,unsigned long,int * __ptr64) __ptr64
?SupportsPrinterMib@CTcpMib@@UEAAHPEBD0KPEAH@Z
; public: virtual void __cdecl CTcpMib::UnInitSnmp(void) __ptr64
?UnInitSnmp@CTcpMib@@UEAAXXZ
GetTcpMibPtr
Ping
