/***************************************************************************** * * $Workfile: TcpMib.h $ * * Copyright (C) 1997 Hewlett-Packard Company. * Copyright (C) 1997 Microsoft Corporation. * All rights reserved. * * 11311 Chinden Blvd. * Boise, Idaho 83714 * *****************************************************************************/ #ifndef INC_TCPMIB_H #define INC_TCPMIB_H #include "mibABC.h" #include "winspool.h" #define ERROR_SNMPAPI_ERROR 15000 #ifndef DllExport #define DllExport __declspec(dllexport) #endif class CTcpMibABC; #ifdef __cplusplus extern "C" { #endif // return the pointer to the interface CTcpMibABC* GetTcpMibPtr( void ); /////////////////////////////////////////////////////////////////////////////// // Ping return codes: // NO_ERROR if ping is successfull // DEVICE_NOT_FOUND if device is not found DllExport DWORD Ping( LPCSTR pHost ); #ifdef __cplusplus } #endif /////////////////////////////////////////////////////////////////////////////// // Global definitions/declerations/macros // externs extern int g_cntGlobalAlloc; extern int g_csGlobalCount; // macros to manupulate the RFC1157 variable bindings #define RFC1157_VARBINDLIST_LEN(varBindList) ( varBindList.len ) // returns the length of the varBind list #define PRFC1157_VARBINDLIST_LEN(pVarBindList) ( pVarBindList->len ) // returns the length of the varBind list #define IS_ASN_INTEGER(varBindList, i) ( ( varBindList.list[i].value.asnType == ASN_INTEGER ) ? TRUE : FALSE ) #define IS_ASN_OBJECTIDENTIFIER(varBindList, i) ( ( varBindList.list[i].value.asnType == ASN_OBJECTIDENTIFIER ) ? TRUE : FALSE ) #define IS_ASN_OCTETSTRING(varBindList, i) ( ( varBindList.list[i].value.asnType == ASN_OCTETSTRING ) ? TRUE : FALSE ) #define GET_ASN_NUMBER(varBindList, i) ( varBindList.list[i].value.asnValue.number ) #define GET_ASN_STRING_LEN(varBindList, i) ( (varBindList).list[i].value.asnValue.string.length ) #define GET_ASN_OBJECT(varBindList, i) ( varBindList.list[i].value.asnValue.object ) #define GET_ASN_OCTETSTRING(pDest, count, varBindList, i) ( GetAsnOctetString(pDest, count, &varBindList, i) ) #define GET_ASN_OCTETSTRING_CHAR( varBindList, i, x) ( varBindList.list[i].value.asnValue.string.stream[x] ) #define GET_ASN_OID_NAME(varBindList, i) ( varBindList.list[i].name ) #define PGET_ASN_OID_NAME(pVarBindList, i) ( pVarBindList->list[i].name ) #define PGET_ASN_TYPE(pVarBindList, i) ( pVarBindList->list[i].value.asnType ) // export the interface for CRawTcpInterface class class DllExport CTcpMib : public CTcpMibABC #if defined _DEBUG || defined DEBUG // , public CMemoryDebug #endif { public: CTcpMib(); ~CTcpMib(); BOOL SupportsPrinterMib(LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, PBOOL pbSupported); DWORD GetDeviceDescription(LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, LPTSTR pszPortDescription, DWORD dwDescLen); DWORD GetDeviceStatus ( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex); DWORD GetJobStatus ( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex); DWORD GetDeviceHWAddress( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, DWORD dwSize, // Size in characters of the dest HWAddress buffer LPTSTR psztHWAddress); DWORD GetDeviceName ( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, DWORD dwSize, // Size in characters of the dest Description buffer LPTSTR psztDescription); DWORD SnmpGet( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, AsnObjectIdentifier *pMibObjId, RFC1157VarBindList *pVarBindList); DWORD SnmpGet( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, RFC1157VarBindList *pVarBindList); DWORD SnmpWalk( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, AsnObjectIdentifier *pMibObjId, RFC1157VarBindList *pVarBindList); DWORD SnmpWalk( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, RFC1157VarBindList *pVarBindList); DWORD SnmpGetNext( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, AsnObjectIdentifier *pMibObjId, RFC1157VarBindList *pVarBindList); DWORD SnmpGetNext( LPCSTR pHost, LPCSTR pCommunity, DWORD dwDevIndex, RFC1157VarBindList *pVarBindList); BOOL SNMPToPortStatus( const DWORD in dwStatus, PPORT_INFO_3 pPortInfo ); DWORD SNMPToPrinterStatus( const DWORD in dwStatus); private: // methods void EnterCSection(); void ExitCSection(); private: // attributes CRITICAL_SECTION m_critSect; }; // class CTcpMib #endif // INC_DLLINTERFACE_H