JwaSnmp.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:38k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Simple Network Management Protocol API interface Unit for Object Pascal      }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: snmp.h, released October 2001. The original Pascal     }
  9. { code is: SNMP.pas, released October 2001. The initial developer of the       }
  10. { Pascal code is Petr Vones (petr.v@mujmail.cz).                               }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaSnmp;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "snmp.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaWinType;
  52. type
  53.   PAsnOctetString = ^TAsnOctetString;
  54.   TAsnOctetString = record
  55.     stream: PChar;
  56.     length: UINT;
  57.     dynamic_: BOOL;
  58.   end;
  59.   {$EXTERNALSYM TAsnOctetString}
  60.   PAsnObjectIdentifier = ^TAsnObjectIdentifier;
  61.   TAsnObjectIdentifier = record
  62.     idLength: UINT;
  63.     ids: PUINT;
  64.   end;
  65.   {$EXTERNALSYM TAsnObjectIdentifier}
  66.   TAsnInteger32        = LONG;
  67.   {$EXTERNALSYM TAsnInteger32}
  68.   TAsnUnsigned32       = ULONG;
  69.   {$EXTERNALSYM TAsnUnsigned32}
  70.   TAsnCounter64        = ULARGE_INTEGER;
  71.   {$EXTERNALSYM TAsnCounter64}
  72.   TAsnCounter32        = TAsnUnsigned32;
  73.   {$EXTERNALSYM TAsnCounter32}
  74.   TAsnGauge32          = TAsnUnsigned32;
  75.   {$EXTERNALSYM TAsnGauge32}
  76.   TAsnTimeticks        = TAsnUnsigned32;
  77.   {$EXTERNALSYM TAsnTimeticks}
  78.   TAsnBits             = TAsnOctetString;
  79.   {$EXTERNALSYM TAsnBits}
  80.   TAsnSequence         = TAsnOctetString;
  81.   {$EXTERNALSYM TAsnSequence}
  82.   TAsnImplicitSequence = TAsnOctetString;
  83.   {$EXTERNALSYM TAsnImplicitSequence}
  84.   TAsnIPAddress        = TAsnOctetString;
  85.   {$EXTERNALSYM TAsnIPAddress}
  86.   TAsnNetworkAddress   = TAsnOctetString;
  87.   {$EXTERNALSYM TAsnNetworkAddress}
  88.   TAsnDisplayString    = TAsnOctetString;
  89.   {$EXTERNALSYM TAsnDisplayString}
  90.   TAsnOpaque           = TAsnOctetString;
  91.   {$EXTERNALSYM TAsnOpaque}
  92.   PAsnAny = ^TAsnAny;
  93.   TAsnAny = record
  94.     asnType: Byte;
  95.     case Integer of
  96.       0: (number: TAsnInteger32);          // ASN_INTEGER, ASN_INTEGER32
  97.       1: (unsigned32: TAsnUnsigned32);     // ASN_UNSIGNED32
  98.       2: (counter64: TAsnCounter64);       // ASN_COUNTER64
  99.       3: (string_: TAsnOctetString);       // ASN_OCTETSTRING
  100.       4: (bits: TAsnBits);                 // ASN_BITS
  101.       5: (object_: TAsnObjectIdentifier);  // ASN_OBJECTIDENTIFIER
  102.       6: (sequence: TAsnSequence);         // ASN_SEQUENCE
  103.       7: (address: TAsnIPAddress);         // ASN_IPADDRESS
  104.       8: (counter: TAsnCounter32);         // ASN_COUNTER32
  105.       9: (gauge: TAsnGauge32);             // ASN_GAUGE32
  106.      10: (ticks: TAsnTimeticks);           // ASN_TIMETICKS
  107.      11: (arbitrary: TAsnOpaque);          // ASN_OPAQUE
  108.   end;
  109.   {$EXTERNALSYM TAsnAny}
  110.   TAsnObjectName = TAsnObjectIdentifier;
  111.   {$EXTERNALSYM TAsnObjectName}
  112.   TAsnObjectSyntax = TAsnAny;
  113.   {$EXTERNALSYM TAsnObjectSyntax}
  114.   PSnmpVarBind = ^TSnmpVarBind;
  115.   TSnmpVarBind = record
  116.     name: TAsnObjectName;
  117.     value: TAsnObjectSyntax;
  118.   end;
  119.   {$EXTERNALSYM TSnmpVarBind}
  120.   PSnmpVarBindList = ^TSnmpVarBindList;
  121.   TSnmpVarBindList = record
  122.     list: PSnmpVarBind;
  123.     len: UINT;
  124.   end;
  125.   {$EXTERNALSYM TSnmpVarBindList}
  126. const
  127. {$IFNDEF _INC_WINSNMP}
  128. { ASN/BER Base Types }
  129.   ASN_UNIVERSAL                   = $00;
  130.   {$EXTERNALSYM ASN_UNIVERSAL}
  131.   ASN_APPLICATION                 = $40;
  132.   {$EXTERNALSYM ASN_APPLICATION}
  133.   ASN_CONTEXT                     = $80;
  134.   {$EXTERNALSYM ASN_CONTEXT}
  135.   ASN_PRIVATE                     = $C0;
  136.   {$EXTERNALSYM ASN_PRIVATE}
  137.   ASN_PRIMITIVE                   = $00;
  138.   {$EXTERNALSYM ASN_PRIMITIVE}
  139.   ASN_CONSTRUCTOR                 = $20;
  140.   {$EXTERNALSYM ASN_CONSTRUCTOR}
  141. { PDU Type Values }
  142.   SNMP_PDU_GET                    = (ASN_CONTEXT or ASN_CONSTRUCTOR or $0);
  143.   {$EXTERNALSYM SNMP_PDU_GET}
  144.   SNMP_PDU_GETNEXT                = (ASN_CONTEXT or ASN_CONSTRUCTOR or $1);
  145.   {$EXTERNALSYM SNMP_PDU_GETNEXT}
  146.   SNMP_PDU_RESPONSE               = (ASN_CONTEXT or ASN_CONSTRUCTOR or $2);
  147.   {$EXTERNALSYM SNMP_PDU_RESPONSE}
  148.   SNMP_PDU_SET                    = (ASN_CONTEXT or ASN_CONSTRUCTOR or $3);
  149.   {$EXTERNALSYM SNMP_PDU_SET}
  150.   SNMP_PDU_V1TRAP                 = (ASN_CONTEXT or ASN_CONSTRUCTOR or $4);
  151.   {$EXTERNALSYM SNMP_PDU_V1TRAP}
  152.   SNMP_PDU_GETBULK                = (ASN_CONTEXT or ASN_CONSTRUCTOR or $5);
  153.   {$EXTERNALSYM SNMP_PDU_GETBULK}
  154.   SNMP_PDU_INFORM                 = (ASN_CONTEXT or ASN_CONSTRUCTOR or $6);
  155.   {$EXTERNALSYM SNMP_PDU_INFORM}
  156.   SNMP_PDU_TRAP                   = (ASN_CONTEXT or ASN_CONSTRUCTOR or $7);
  157.   {$EXTERNALSYM SNMP_PDU_TRAP}
  158. {$ENDIF _INC_WINSNMP}
  159. { SNMP Simple Syntax Values }
  160.   ASN_INTEGER                     = (ASN_UNIVERSAL or ASN_PRIMITIVE or $02);
  161.   {$EXTERNALSYM ASN_INTEGER}
  162.   ASN_BITS                        = (ASN_UNIVERSAL or ASN_PRIMITIVE or $03);
  163.   {$EXTERNALSYM ASN_BITS}
  164.   ASN_OCTETSTRING                 = (ASN_UNIVERSAL or ASN_PRIMITIVE or $04);
  165.   {$EXTERNALSYM ASN_OCTETSTRING}
  166.   ASN_NULL                        = (ASN_UNIVERSAL or ASN_PRIMITIVE or $05);
  167.   {$EXTERNALSYM ASN_NULL}
  168.   ASN_OBJECTIDENTIFIER            = (ASN_UNIVERSAL or ASN_PRIMITIVE or $06);
  169.   {$EXTERNALSYM ASN_OBJECTIDENTIFIER}
  170.   ASN_INTEGER32                   = ASN_INTEGER;
  171.   {$EXTERNALSYM ASN_INTEGER32}
  172. { SNMP Constructor Syntax Values }
  173.   ASN_SEQUENCE                    = (ASN_UNIVERSAL or ASN_CONSTRUCTOR or $10);
  174.   {$EXTERNALSYM ASN_SEQUENCE}
  175.   ASN_SEQUENCEOF                  = ASN_SEQUENCE;
  176.   {$EXTERNALSYM ASN_SEQUENCEOF}
  177. { SNMP Application Syntax Values }
  178.   ASN_IPADDRESS                   = (ASN_APPLICATION or ASN_PRIMITIVE or $00);
  179.   {$EXTERNALSYM ASN_IPADDRESS}
  180.   ASN_COUNTER32                   = (ASN_APPLICATION or ASN_PRIMITIVE or $01);
  181.   {$EXTERNALSYM ASN_COUNTER32}
  182.   ASN_GAUGE32                     = (ASN_APPLICATION or ASN_PRIMITIVE or $02);
  183.   {$EXTERNALSYM ASN_GAUGE32}
  184.   ASN_TIMETICKS                   = (ASN_APPLICATION or ASN_PRIMITIVE or $03);
  185.   {$EXTERNALSYM ASN_TIMETICKS}
  186.   ASN_OPAQUE                      = (ASN_APPLICATION or ASN_PRIMITIVE or $04);
  187.   {$EXTERNALSYM ASN_OPAQUE}
  188.   ASN_COUNTER64                   = (ASN_APPLICATION or ASN_PRIMITIVE or $06);
  189.   {$EXTERNALSYM ASN_COUNTER64}
  190.   ASN_UINTEGER32                  = (ASN_APPLICATION or ASN_PRIMITIVE or $07);
  191.   {$EXTERNALSYM ASN_UINTEGER32}
  192.   ASN_RFC2578_UNSIGNED32          = ASN_GAUGE32;
  193.   {$EXTERNALSYM ASN_RFC2578_UNSIGNED32}
  194. { SNMP Exception Conditions }
  195.   SNMP_EXCEPTION_NOSUCHOBJECT     = (ASN_CONTEXT or ASN_PRIMITIVE or $00);
  196.   {$EXTERNALSYM SNMP_EXCEPTION_NOSUCHOBJECT}
  197.   SNMP_EXCEPTION_NOSUCHINSTANCE   = (ASN_CONTEXT or ASN_PRIMITIVE or $01);
  198.   {$EXTERNALSYM SNMP_EXCEPTION_NOSUCHINSTANCE}
  199.   SNMP_EXCEPTION_ENDOFMIBVIEW     = (ASN_CONTEXT or ASN_PRIMITIVE or $02);
  200.   {$EXTERNALSYM SNMP_EXCEPTION_ENDOFMIBVIEW}
  201. { SNMP Request Types (used in SnmpExtensionQueryEx) }
  202.   SNMP_EXTENSION_GET              = SNMP_PDU_GET;
  203.   {$EXTERNALSYM SNMP_EXTENSION_GET}
  204.   SNMP_EXTENSION_GET_NEXT         = SNMP_PDU_GETNEXT;
  205.   {$EXTERNALSYM SNMP_EXTENSION_GET_NEXT}
  206.   SNMP_EXTENSION_GET_BULK         = SNMP_PDU_GETBULK;
  207.   {$EXTERNALSYM SNMP_EXTENSION_GET_BULK}
  208.   SNMP_EXTENSION_SET_TEST         = (ASN_PRIVATE or ASN_CONSTRUCTOR or $0);
  209.   {$EXTERNALSYM SNMP_EXTENSION_SET_TEST}
  210.   SNMP_EXTENSION_SET_COMMIT       = SNMP_PDU_SET;
  211.   {$EXTERNALSYM SNMP_EXTENSION_SET_COMMIT}
  212.   SNMP_EXTENSION_SET_UNDO         = (ASN_PRIVATE or ASN_CONSTRUCTOR or $1);
  213.   {$EXTERNALSYM SNMP_EXTENSION_SET_UNDO}
  214.   SNMP_EXTENSION_SET_CLEANUP      = (ASN_PRIVATE or ASN_CONSTRUCTOR or $2);
  215.   {$EXTERNALSYM SNMP_EXTENSION_SET_CLEANUP}
  216. { SNMP Error Codes }
  217.   SNMP_ERRORSTATUS_NOERROR                    = 0;
  218.   {$EXTERNALSYM SNMP_ERRORSTATUS_NOERROR}
  219.   SNMP_ERRORSTATUS_TOOBIG                     = 1;
  220.   {$EXTERNALSYM SNMP_ERRORSTATUS_TOOBIG}
  221.   SNMP_ERRORSTATUS_NOSUCHNAME                 = 2;
  222.   {$EXTERNALSYM SNMP_ERRORSTATUS_NOSUCHNAME}
  223.   SNMP_ERRORSTATUS_BADVALUE                   = 3;
  224.   {$EXTERNALSYM SNMP_ERRORSTATUS_BADVALUE}
  225.   SNMP_ERRORSTATUS_READONLY                   = 4;
  226.   {$EXTERNALSYM SNMP_ERRORSTATUS_READONLY}
  227.   SNMP_ERRORSTATUS_GENERR                     = 5;
  228.   {$EXTERNALSYM SNMP_ERRORSTATUS_GENERR}
  229.   SNMP_ERRORSTATUS_NOACCESS                   = 6;
  230.   {$EXTERNALSYM SNMP_ERRORSTATUS_NOACCESS}
  231.   SNMP_ERRORSTATUS_WRONGTYPE                  = 7;
  232.   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGTYPE}
  233.   SNMP_ERRORSTATUS_WRONGLENGTH                = 8;
  234.   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGLENGTH}
  235.   SNMP_ERRORSTATUS_WRONGENCODING              = 9;
  236.   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGENCODING}
  237.   SNMP_ERRORSTATUS_WRONGVALUE                 = 10;
  238.   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGVALUE}
  239.   SNMP_ERRORSTATUS_NOCREATION                 = 11;
  240.   {$EXTERNALSYM SNMP_ERRORSTATUS_NOCREATION}
  241.   SNMP_ERRORSTATUS_INCONSISTENTVALUE          = 12;
  242.   {$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTVALUE}
  243.   SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE        = 13;
  244.   {$EXTERNALSYM SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE}
  245.   SNMP_ERRORSTATUS_COMMITFAILED               = 14;
  246.   {$EXTERNALSYM SNMP_ERRORSTATUS_COMMITFAILED}
  247.   SNMP_ERRORSTATUS_UNDOFAILED                 = 15;
  248.   {$EXTERNALSYM SNMP_ERRORSTATUS_UNDOFAILED}
  249.   SNMP_ERRORSTATUS_AUTHORIZATIONERROR         = 16;
  250.   {$EXTERNALSYM SNMP_ERRORSTATUS_AUTHORIZATIONERROR}
  251.   SNMP_ERRORSTATUS_NOTWRITABLE                = 17;
  252.   {$EXTERNALSYM SNMP_ERRORSTATUS_NOTWRITABLE}
  253.   SNMP_ERRORSTATUS_INCONSISTENTNAME           = 18;
  254.   {$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTNAME}
  255. { SNMPv1 Trap Types }
  256.   SNMP_GENERICTRAP_COLDSTART                  = 0;
  257.   {$EXTERNALSYM SNMP_GENERICTRAP_COLDSTART}
  258.   SNMP_GENERICTRAP_WARMSTART                  = 1;
  259.   {$EXTERNALSYM SNMP_GENERICTRAP_WARMSTART}
  260.   SNMP_GENERICTRAP_LINKDOWN                   = 2;
  261.   {$EXTERNALSYM SNMP_GENERICTRAP_LINKDOWN}
  262.   SNMP_GENERICTRAP_LINKUP                     = 3;
  263.   {$EXTERNALSYM SNMP_GENERICTRAP_LINKUP}
  264.   SNMP_GENERICTRAP_AUTHFAILURE                = 4;
  265.   {$EXTERNALSYM SNMP_GENERICTRAP_AUTHFAILURE}
  266.   SNMP_GENERICTRAP_EGPNEIGHLOSS               = 5;
  267.   {$EXTERNALSYM SNMP_GENERICTRAP_EGPNEIGHLOSS}
  268.   SNMP_GENERICTRAP_ENTERSPECIFIC              = 6;
  269.   {$EXTERNALSYM SNMP_GENERICTRAP_ENTERSPECIFIC}
  270. { SNMP Access Types }
  271.   SNMP_ACCESS_NONE                            = 0;
  272.   {$EXTERNALSYM SNMP_ACCESS_NONE}
  273.   SNMP_ACCESS_NOTIFY                          = 1;
  274.   {$EXTERNALSYM SNMP_ACCESS_NOTIFY}
  275.   SNMP_ACCESS_READ_ONLY                       = 2;
  276.   {$EXTERNALSYM SNMP_ACCESS_READ_ONLY}
  277.   SNMP_ACCESS_READ_WRITE                      = 3;
  278.   {$EXTERNALSYM SNMP_ACCESS_READ_WRITE}
  279.   SNMP_ACCESS_READ_CREATE                     = 4;
  280.   {$EXTERNALSYM SNMP_ACCESS_READ_CREATE}
  281. { SNMP API Return Code Definitions }
  282. type
  283.   SNMPAPI = Integer;
  284.   {$EXTERNALSYM SNMPAPI}
  285. const
  286.   SNMPAPI_NOERROR = True;
  287.   {$EXTERNALSYM SNMPAPI_NOERROR}
  288.   SNMPAPI_ERROR = False;
  289.   {$EXTERNALSYM SNMPAPI_ERROR}
  290. { SNMP Extension API Type Definitions }
  291. type
  292.   TSnmpExtensionInit = function (dwUptimeReference: DWORD; var phSubagentTrapEvent: HANDLE;
  293.     var pFirstSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;
  294.   TSnmpExtensionInitEx = function (var pNextSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;
  295.   TSnmpExtensionMonitor = function (pAgentMgmtData: LPVOID): BOOL; stdcall;
  296.   TSnmpExtensionQuery = function (bPduType: Byte; var pVarBindList: TSnmpVarBindList;
  297.     var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): BOOL; stdcall;
  298.   TSnmpExtensionQueryEx = function (nRequestType: UINT; nTransactionId: UINT; var pVarBindList: PSnmpVarBindList;
  299.     var pContextInfo: PAsnOctetString; var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): BOOL; stdcall;
  300.   TSnmpExtensionTrap = function (pEnterpriseOid: PAsnObjectIdentifier; var pGenericTrapId: TAsnInteger32;
  301.      var pSpecificTrapId: TAsnInteger32; var pTimeStamp: TAsnTimeticks; var pVarBindList: PSnmpVarBindList): BOOL; stdcall;
  302.   TSnmpExtensionClose = procedure; stdcall;
  303. { SNMP API Prototypes }
  304. function SnmpUtilOidCpy(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  305. {$EXTERNALSYM SnmpUtilOidCpy}
  306. function SnmpUtilOidAppend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  307. {$EXTERNALSYM SnmpUtilOidAppend}
  308. function SnmpUtilOidNCmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
  309. {$EXTERNALSYM SnmpUtilOidNCmp}
  310. function SnmpUtilOidCmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
  311. {$EXTERNALSYM SnmpUtilOidCmp}
  312. procedure SnmpUtilOidFree(pOid: TAsnObjectIdentifier); stdcall;
  313. {$EXTERNALSYM SnmpUtilOidFree}
  314. function SnmpUtilOctetsCmp(pOctets1, pOctets2: PAsnOctetString): SNMPAPI; stdcall;
  315. {$EXTERNALSYM SnmpUtilOctetsCmp}
  316. function SnmpUtilOctetsNCmp(pOctets1, pOctets2: PAsnOctetString; nChars: UINT): SNMPAPI; stdcall;
  317. {$EXTERNALSYM SnmpUtilOctetsNCmp}
  318. function SnmpUtilOctetsCpy(pOctetsDst, pOctetsSrc: PAsnOctetString): SNMPAPI; stdcall;
  319. {$EXTERNALSYM SnmpUtilOctetsCpy}
  320. procedure SnmpUtilOctetsFree(pOctets: PAsnOctetString); stdcall;
  321. {$EXTERNALSYM SnmpUtilOctetsFree}
  322. function SnmpUtilAsnAnyCpy(pAnyDst, pAnySrc: PAsnAny): SNMPAPI; stdcall;
  323. {$EXTERNALSYM SnmpUtilAsnAnyCpy}
  324. procedure SnmpUtilAsnAnyFree(pAny: PAsnAny); stdcall;
  325. {$EXTERNALSYM SnmpUtilAsnAnyFree}
  326. function SnmpUtilVarBindCpy(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
  327. {$EXTERNALSYM SnmpUtilVarBindCpy}
  328. procedure SnmpUtilVarBindFree(pVb: PSnmpVarBind); stdcall;
  329. {$EXTERNALSYM SnmpUtilVarBindFree}
  330. function SnmpUtilVarBindListCpy(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
  331. {$EXTERNALSYM SnmpUtilVarBindListCpy}
  332. procedure SnmpUtilVarBindListFree(pVbl: PSnmpVarBindList); stdcall;
  333. {$EXTERNALSYM SnmpUtilVarBindListFree}
  334. procedure SnmpUtilMemFree(pMem: LPVOID); stdcall;
  335. {$EXTERNALSYM SnmpUtilMemFree}
  336. function SnmpUtilMemAlloc(nBytes: UINT): LPVOID; stdcall;
  337. {$EXTERNALSYM SnmpUtilMemAlloc}
  338. function SnmpUtilMemReAlloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
  339. {$EXTERNALSYM SnmpUtilMemReAlloc}
  340. function SnmpUtilOidToA(Oid: PAsnObjectIdentifier): LPSTR; stdcall;
  341. {$EXTERNALSYM SnmpUtilOidToA}
  342. function SnmpUtilIdsToA(Ids: PUINT; IdLength: UINT): LPSTR; stdcall;
  343. {$EXTERNALSYM SnmpUtilIdsToA}
  344. procedure SnmpUtilPrintOid(Oid: PAsnObjectIdentifier); stdcall;
  345. {$EXTERNALSYM SnmpUtilPrintOid}
  346. procedure SnmpUtilPrintAsnAny(pAny: PAsnAny); stdcall;
  347. {$EXTERNALSYM SnmpUtilPrintAsnAny}
  348. function SnmpSvcGetUptime: DWORD; stdcall;
  349. {$EXTERNALSYM SnmpSvcGetUptime}
  350. procedure SnmpSvcSetLogLevel(nLogLevel: INT); stdcall;
  351. {$EXTERNALSYM SnmpSvcSetLogLevel}
  352. procedure SnmpSvcSetLogType(nLogType: INT); stdcall;
  353. {$EXTERNALSYM SnmpSvcSetLogType}
  354. { SNMP Debugging Definitions }
  355. const
  356.   SNMP_LOG_SILENT                 = $0;
  357.   {$EXTERNALSYM SNMP_LOG_SILENT}
  358.   SNMP_LOG_FATAL                  = $1;
  359.   {$EXTERNALSYM SNMP_LOG_FATAL}
  360.   SNMP_LOG_ERROR                  = $2;
  361.   {$EXTERNALSYM SNMP_LOG_ERROR}
  362.   SNMP_LOG_WARNING                = $3;
  363.   {$EXTERNALSYM SNMP_LOG_WARNING}
  364.   SNMP_LOG_TRACE                  = $4;
  365.   {$EXTERNALSYM SNMP_LOG_TRACE}
  366.   SNMP_LOG_VERBOSE                = $5;
  367.   {$EXTERNALSYM SNMP_LOG_VERBOSE}
  368.   SNMP_OUTPUT_TO_CONSOLE          = $1;
  369.   {$EXTERNALSYM SNMP_OUTPUT_TO_CONSOLE}
  370.   SNMP_OUTPUT_TO_LOGFILE          = $2;
  371.   {$EXTERNALSYM SNMP_OUTPUT_TO_LOGFILE}
  372.   SNMP_OUTPUT_TO_EVENTLOG         = $4;  // no longer supported
  373.   {$EXTERNALSYM SNMP_OUTPUT_TO_EVENTLOG}
  374.   SNMP_OUTPUT_TO_DEBUGGER         = $8;
  375.   {$EXTERNALSYM SNMP_OUTPUT_TO_DEBUGGER}
  376. { SNMP Debugging Prototypes }
  377. procedure SnmpUtilDbgPrint(nLogLevel: INT; szFormat: LPSTR); stdcall;
  378. {$EXTERNALSYM SnmpUtilDbgPrint}
  379. { Miscellaneous definitions }
  380. const
  381.   DEFINE_NULLOID: TAsnObjectIdentifier = (idLength: 0; ids: nil);
  382.   {$EXTERNALSYM DEFINE_NULLOID}
  383.   DEFINE_NULLOCTETS: TAsnOctetString = (stream: nil; length: 0; dynamic_: False);
  384.   {$EXTERNALSYM DEFINE_NULLOCTETS}
  385.   DEFAULT_SNMP_PORT_UDP       = 161;
  386.   {$EXTERNALSYM DEFAULT_SNMP_PORT_UDP}
  387.   DEFAULT_SNMP_PORT_IPX       = 36879;
  388.   {$EXTERNALSYM DEFAULT_SNMP_PORT_IPX}
  389.   DEFAULT_SNMPTRAP_PORT_UDP   = 162;
  390.   {$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_UDP}
  391.   DEFAULT_SNMPTRAP_PORT_IPX   = 36880;
  392.   {$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_IPX}
  393.   SNMP_MAX_OID_LEN            = 128;
  394.   {$EXTERNALSYM SNMP_MAX_OID_LEN}
  395. { API Error Code Definitions }
  396.   SNMP_MEM_ALLOC_ERROR            = 1;
  397.   {$EXTERNALSYM SNMP_MEM_ALLOC_ERROR}
  398.   SNMP_BERAPI_INVALID_LENGTH      = 10;
  399.   {$EXTERNALSYM SNMP_BERAPI_INVALID_LENGTH}
  400.   SNMP_BERAPI_INVALID_TAG         = 11;
  401.   {$EXTERNALSYM SNMP_BERAPI_INVALID_TAG}
  402.   SNMP_BERAPI_OVERFLOW            = 12;
  403.   {$EXTERNALSYM SNMP_BERAPI_OVERFLOW}
  404.   SNMP_BERAPI_SHORT_BUFFER        = 13;
  405.   {$EXTERNALSYM SNMP_BERAPI_SHORT_BUFFER}
  406.   SNMP_BERAPI_INVALID_OBJELEM     = 14;
  407.   {$EXTERNALSYM SNMP_BERAPI_INVALID_OBJELEM}
  408.   SNMP_PDUAPI_UNRECOGNIZED_PDU    = 20;
  409.   {$EXTERNALSYM SNMP_PDUAPI_UNRECOGNIZED_PDU}
  410.   SNMP_PDUAPI_INVALID_ES          = 21;
  411.   {$EXTERNALSYM SNMP_PDUAPI_INVALID_ES}
  412.   SNMP_PDUAPI_INVALID_GT          = 22;
  413.   {$EXTERNALSYM SNMP_PDUAPI_INVALID_GT}
  414.   SNMP_AUTHAPI_INVALID_VERSION    = 30;
  415.   {$EXTERNALSYM SNMP_AUTHAPI_INVALID_VERSION}
  416.   SNMP_AUTHAPI_INVALID_MSG_TYPE   = 31;
  417.   {$EXTERNALSYM SNMP_AUTHAPI_INVALID_MSG_TYPE}
  418.   SNMP_AUTHAPI_TRIV_AUTH_FAILED   = 32;
  419.   {$EXTERNALSYM SNMP_AUTHAPI_TRIV_AUTH_FAILED}
  420. { Support for old definitions (support disabled via SNMPSTRICT) }
  421. {$IFNDEF SNMPSTRICT}
  422. function SNMP_oidcpy(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  423. {$EXTERNALSYM SNMP_oidcpy}
  424. function SNMP_oidappend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  425. {$EXTERNALSYM SNMP_oidappend}
  426. function SNMP_oidncmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
  427. {$EXTERNALSYM SNMP_oidncmp}
  428. function SNMP_oidcmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
  429. {$EXTERNALSYM SNMP_oidcmp}
  430. procedure SNMP_oidfree(pOid: TAsnObjectIdentifier); stdcall;
  431. {$EXTERNALSYM SNMP_oidfree}
  432. function SNMP_CopyVarBind(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
  433. {$EXTERNALSYM SNMP_CopyVarBind}
  434. procedure SNMP_FreeVarBind(pVb: PSnmpVarBind); stdcall;
  435. {$EXTERNALSYM SNMP_FreeVarBind}
  436. function SNMP_CopyVarBindList(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
  437. {$EXTERNALSYM SNMP_CopyVarBindList}
  438. procedure SNMP_FreeVarBindList(pVbl: PSnmpVarBindList); stdcall;
  439. {$EXTERNALSYM SNMP_FreeVarBindList}
  440. procedure SNMP_printany(pAny: PAsnAny); stdcall;
  441. {$EXTERNALSYM SNMP_printany}
  442. procedure SNMP_free(pMem: LPVOID); stdcall;
  443. {$EXTERNALSYM SNMP_free}
  444. function SNMP_malloc(nBytes: UINT): LPVOID; stdcall;
  445. {$EXTERNALSYM SNMP_malloc}
  446. function SNMP_realloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
  447. {$EXTERNALSYM SNMP_realloc}
  448. procedure SNMP_DBG_free(pMem: LPVOID); stdcall;
  449. {$EXTERNALSYM SNMP_DBG_free}
  450. function SNMP_DBG_malloc(nBytes: UINT): LPVOID; stdcall;
  451. {$EXTERNALSYM SNMP_DBG_malloc}
  452. function SNMP_DBG_realloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
  453. {$EXTERNALSYM SNMP_DBG_realloc}
  454. const
  455.   ASN_RFC1155_IPADDRESS           = ASN_IPADDRESS;
  456.   {$EXTERNALSYM ASN_RFC1155_IPADDRESS}
  457.   ASN_RFC1155_COUNTER             = ASN_COUNTER32;
  458.   {$EXTERNALSYM ASN_RFC1155_COUNTER}
  459.   ASN_RFC1155_GAUGE               = ASN_GAUGE32;
  460.   {$EXTERNALSYM ASN_RFC1155_GAUGE}
  461.   ASN_RFC1155_TIMETICKS           = ASN_TIMETICKS;
  462.   {$EXTERNALSYM ASN_RFC1155_TIMETICKS}
  463.   ASN_RFC1155_OPAQUE              = ASN_OPAQUE;
  464.   {$EXTERNALSYM ASN_RFC1155_OPAQUE}
  465.   ASN_RFC1213_DISPSTRING          = ASN_OCTETSTRING;
  466.   {$EXTERNALSYM ASN_RFC1213_DISPSTRING}
  467.   ASN_RFC1157_GETREQUEST          = SNMP_PDU_GET;
  468.   {$EXTERNALSYM ASN_RFC1157_GETREQUEST}
  469.   ASN_RFC1157_GETNEXTREQUEST      = SNMP_PDU_GETNEXT;
  470.   {$EXTERNALSYM ASN_RFC1157_GETNEXTREQUEST}
  471.   ASN_RFC1157_GETRESPONSE         = SNMP_PDU_RESPONSE;
  472.   {$EXTERNALSYM ASN_RFC1157_GETRESPONSE}
  473.   ASN_RFC1157_SETREQUEST          = SNMP_PDU_SET;
  474.   {$EXTERNALSYM ASN_RFC1157_SETREQUEST}
  475.   ASN_RFC1157_TRAP                = SNMP_PDU_V1TRAP;
  476.   {$EXTERNALSYM ASN_RFC1157_TRAP}
  477.   ASN_CONTEXTSPECIFIC             = ASN_CONTEXT;
  478.   {$EXTERNALSYM ASN_CONTEXTSPECIFIC}
  479.   ASN_PRIMATIVE                   = ASN_PRIMITIVE;
  480.   {$EXTERNALSYM ASN_PRIMATIVE}
  481. type
  482.   RFC1157VarBindList              = TSnmpVarBindList;
  483.   {$EXTERNALSYM RFC1157VarBindList}
  484.   RFC1157VarBind                  = TSnmpVarBind;
  485.   {$EXTERNALSYM RFC1157VarBind}
  486.   TAsnInteger                     = TAsnInteger32;
  487.   {$EXTERNALSYM TAsnInteger}
  488.   TAsnCounter                     = TAsnCounter32;
  489.   {$EXTERNALSYM TAsnCounter}
  490.   TAsnGauge                       = TAsnGauge32;
  491.   {$EXTERNALSYM TAsnGauge}
  492. const
  493.   ASN_UNSIGNED32                  = ASN_UINTEGER32;
  494.   {$EXTERNALSYM ASN_UNSIGNED32}
  495. {$ENDIF SNMPSTRICT}
  496. implementation
  497. uses
  498.   JwaWinBase;
  499. const
  500.   snmpapilib = 'snmpapi.dll';
  501. {$IFDEF DYNAMIC_LINK}
  502. var
  503.   _SnmpUtilOidCpy: Pointer;
  504. function SnmpUtilOidCpy;
  505. begin
  506.   GetProcedureAddress(_SnmpUtilOidCpy, snmpapilib, 'SnmpUtilOidCpy');
  507.   asm
  508.     mov esp, ebp
  509.     pop ebp
  510.     jmp [_SnmpUtilOidCpy]
  511.   end;
  512. end;
  513. {$ELSE}
  514. function SnmpUtilOidCpy; external snmpapilib name 'SnmpUtilOidCpy';
  515. {$ENDIF DYNAMIC_LINK}
  516. {$IFDEF DYNAMIC_LINK}
  517. var
  518.   _SnmpUtilOidAppend: Pointer;
  519. function SnmpUtilOidAppend;
  520. begin
  521.   GetProcedureAddress(_SnmpUtilOidAppend, snmpapilib, 'SnmpUtilOidAppend');
  522.   asm
  523.     mov esp, ebp
  524.     pop ebp
  525.     jmp [_SnmpUtilOidAppend]
  526.   end;
  527. end;
  528. {$ELSE}
  529. function SnmpUtilOidAppend; external snmpapilib name 'SnmpUtilOidAppend';
  530. {$ENDIF DYNAMIC_LINK}
  531. {$IFDEF DYNAMIC_LINK}
  532. var
  533.   _SnmpUtilOidNCmp: Pointer;
  534. function SnmpUtilOidNCmp;
  535. begin
  536.   GetProcedureAddress(_SnmpUtilOidNCmp, snmpapilib, 'SnmpUtilOidNCmp');
  537.   asm
  538.     mov esp, ebp
  539.     pop ebp
  540.     jmp [_SnmpUtilOidNCmp]
  541.   end;
  542. end;
  543. {$ELSE}
  544. function SnmpUtilOidNCmp; external snmpapilib name 'SnmpUtilOidNCmp';
  545. {$ENDIF DYNAMIC_LINK}
  546. {$IFDEF DYNAMIC_LINK}
  547. var
  548.   _SnmpUtilOidCmp: Pointer;
  549. function SnmpUtilOidCmp;
  550. begin
  551.   GetProcedureAddress(_SnmpUtilOidCmp, snmpapilib, 'SnmpUtilOidCmp');
  552.   asm
  553.     mov esp, ebp
  554.     pop ebp
  555.     jmp [_SnmpUtilOidCmp]
  556.   end;
  557. end;
  558. {$ELSE}
  559. function SnmpUtilOidCmp; external snmpapilib name 'SnmpUtilOidCmp';
  560. {$ENDIF DYNAMIC_LINK}
  561. {$IFDEF DYNAMIC_LINK}
  562. var
  563.   _SnmpUtilOidFree: Pointer;
  564. procedure SnmpUtilOidFree;
  565. begin
  566.   GetProcedureAddress(_SnmpUtilOidFree, snmpapilib, 'SnmpUtilOidFree');
  567.   asm
  568.     mov esp, ebp
  569.     pop ebp
  570.     jmp [_SnmpUtilOidFree]
  571.   end;
  572. end;
  573. {$ELSE}
  574. procedure SnmpUtilOidFree; external snmpapilib name 'SnmpUtilOidFree';
  575. {$ENDIF DYNAMIC_LINK}
  576. {$IFDEF DYNAMIC_LINK}
  577. var
  578.   _SnmpUtilOctetsCmp: Pointer;
  579. function SnmpUtilOctetsCmp;
  580. begin
  581.   GetProcedureAddress(_SnmpUtilOctetsCmp, snmpapilib, 'SnmpUtilOctetsCmp');
  582.   asm
  583.     mov esp, ebp
  584.     pop ebp
  585.     jmp [_SnmpUtilOctetsCmp]
  586.   end;
  587. end;
  588. {$ELSE}
  589. function SnmpUtilOctetsCmp; external snmpapilib name 'SnmpUtilOctetsCmp';
  590. {$ENDIF DYNAMIC_LINK}
  591. {$IFDEF DYNAMIC_LINK}
  592. var
  593.   _SnmpUtilOctetsNCmp: Pointer;
  594. function SnmpUtilOctetsNCmp;
  595. begin
  596.   GetProcedureAddress(_SnmpUtilOctetsNCmp, snmpapilib, 'SnmpUtilOctetsNCmp');
  597.   asm
  598.     mov esp, ebp
  599.     pop ebp
  600.     jmp [_SnmpUtilOctetsNCmp]
  601.   end;
  602. end;
  603. {$ELSE}
  604. function SnmpUtilOctetsNCmp; external snmpapilib name 'SnmpUtilOctetsNCmp';
  605. {$ENDIF DYNAMIC_LINK}
  606. {$IFDEF DYNAMIC_LINK}
  607. var
  608.   _SnmpUtilOctetsCpy: Pointer;
  609. function SnmpUtilOctetsCpy;
  610. begin
  611.   GetProcedureAddress(_SnmpUtilOctetsCpy, snmpapilib, 'SnmpUtilOctetsCpy');
  612.   asm
  613.     mov esp, ebp
  614.     pop ebp
  615.     jmp [_SnmpUtilOctetsCpy]
  616.   end;
  617. end;
  618. {$ELSE}
  619. function SnmpUtilOctetsCpy; external snmpapilib name 'SnmpUtilOctetsCpy';
  620. {$ENDIF DYNAMIC_LINK}
  621. {$IFDEF DYNAMIC_LINK}
  622. var
  623.   _SnmpUtilOctetsFree: Pointer;
  624. procedure SnmpUtilOctetsFree;
  625. begin
  626.   GetProcedureAddress(_SnmpUtilOctetsFree, snmpapilib, 'SnmpUtilOctetsFree');
  627.   asm
  628.     mov esp, ebp
  629.     pop ebp
  630.     jmp [_SnmpUtilOctetsFree]
  631.   end;
  632. end;
  633. {$ELSE}
  634. procedure SnmpUtilOctetsFree; external snmpapilib name 'SnmpUtilOctetsFree';
  635. {$ENDIF DYNAMIC_LINK}
  636. {$IFDEF DYNAMIC_LINK}
  637. var
  638.   _SnmpUtilAsnAnyCpy: Pointer;
  639. function SnmpUtilAsnAnyCpy;
  640. begin
  641.   GetProcedureAddress(_SnmpUtilAsnAnyCpy, snmpapilib, 'SnmpUtilAsnAnyCpy');
  642.   asm
  643.     mov esp, ebp
  644.     pop ebp
  645.     jmp [_SnmpUtilAsnAnyCpy]
  646.   end;
  647. end;
  648. {$ELSE}
  649. function SnmpUtilAsnAnyCpy; external snmpapilib name 'SnmpUtilAsnAnyCpy';
  650. {$ENDIF DYNAMIC_LINK}
  651. {$IFDEF DYNAMIC_LINK}
  652. var
  653.   _SnmpUtilAsnAnyFree: Pointer;
  654. procedure SnmpUtilAsnAnyFree;
  655. begin
  656.   GetProcedureAddress(_SnmpUtilAsnAnyFree, snmpapilib, 'SnmpUtilAsnAnyFree');
  657.   asm
  658.     mov esp, ebp
  659.     pop ebp
  660.     jmp [_SnmpUtilAsnAnyFree]
  661.   end;
  662. end;
  663. {$ELSE}
  664. procedure SnmpUtilAsnAnyFree; external snmpapilib name 'SnmpUtilAsnAnyFree';
  665. {$ENDIF DYNAMIC_LINK}
  666. {$IFDEF DYNAMIC_LINK}
  667. var
  668.   _SnmpUtilVarBindCpy: Pointer;
  669. function SnmpUtilVarBindCpy;
  670. begin
  671.   GetProcedureAddress(_SnmpUtilVarBindCpy, snmpapilib, 'SnmpUtilVarBindCpy');
  672.   asm
  673.     mov esp, ebp
  674.     pop ebp
  675.     jmp [_SnmpUtilVarBindCpy]
  676.   end;
  677. end;
  678. {$ELSE}
  679. function SnmpUtilVarBindCpy; external snmpapilib name 'SnmpUtilVarBindCpy';
  680. {$ENDIF DYNAMIC_LINK}
  681. {$IFDEF DYNAMIC_LINK}
  682. var
  683.   _SnmpUtilVarBindFree: Pointer;
  684. procedure SnmpUtilVarBindFree;
  685. begin
  686.   GetProcedureAddress(_SnmpUtilVarBindFree, snmpapilib, 'SnmpUtilVarBindFree');
  687.   asm
  688.     mov esp, ebp
  689.     pop ebp
  690.     jmp [_SnmpUtilVarBindFree]
  691.   end;
  692. end;
  693. {$ELSE}
  694. procedure SnmpUtilVarBindFree; external snmpapilib name 'SnmpUtilVarBindFree';
  695. {$ENDIF DYNAMIC_LINK}
  696. {$IFDEF DYNAMIC_LINK}
  697. var
  698.   _SnmpUtilVarBindListCpy: Pointer;
  699. function SnmpUtilVarBindListCpy;
  700. begin
  701.   GetProcedureAddress(_SnmpUtilVarBindListCpy, snmpapilib, 'SnmpUtilVarBindListCpy');
  702.   asm
  703.     mov esp, ebp
  704.     pop ebp
  705.     jmp [_SnmpUtilVarBindListCpy]
  706.   end;
  707. end;
  708. {$ELSE}
  709. function SnmpUtilVarBindListCpy; external snmpapilib name 'SnmpUtilVarBindListCpy';
  710. {$ENDIF DYNAMIC_LINK}
  711. {$IFDEF DYNAMIC_LINK}
  712. var
  713.   _SnmpUtilVarBindListFree: Pointer;
  714. procedure SnmpUtilVarBindListFree;
  715. begin
  716.   GetProcedureAddress(_SnmpUtilVarBindListFree, snmpapilib, 'SnmpUtilVarBindListFree');
  717.   asm
  718.     mov esp, ebp
  719.     pop ebp
  720.     jmp [_SnmpUtilVarBindListFree]
  721.   end;
  722. end;
  723. {$ELSE}
  724. procedure SnmpUtilVarBindListFree; external snmpapilib name 'SnmpUtilVarBindListFree';
  725. {$ENDIF DYNAMIC_LINK}
  726. {$IFDEF DYNAMIC_LINK}
  727. var
  728.   _SnmpUtilMemFree: Pointer;
  729. procedure SnmpUtilMemFree;
  730. begin
  731.   GetProcedureAddress(_SnmpUtilMemFree, snmpapilib, 'SnmpUtilMemFree');
  732.   asm
  733.     mov esp, ebp
  734.     pop ebp
  735.     jmp [_SnmpUtilMemFree]
  736.   end;
  737. end;
  738. {$ELSE}
  739. procedure SnmpUtilMemFree; external snmpapilib name 'SnmpUtilMemFree';
  740. {$ENDIF DYNAMIC_LINK}
  741. {$IFDEF DYNAMIC_LINK}
  742. var
  743.   _SnmpUtilMemAlloc: Pointer;
  744. function SnmpUtilMemAlloc;
  745. begin
  746.   GetProcedureAddress(_SnmpUtilMemAlloc, snmpapilib, 'SnmpUtilMemAlloc');
  747.   asm
  748.     mov esp, ebp
  749.     pop ebp
  750.     jmp [_SnmpUtilMemAlloc]
  751.   end;
  752. end;
  753. {$ELSE}
  754. function SnmpUtilMemAlloc; external snmpapilib name 'SnmpUtilMemAlloc';
  755. {$ENDIF DYNAMIC_LINK}
  756. {$IFDEF DYNAMIC_LINK}
  757. var
  758.   _SnmpUtilMemReAlloc: Pointer;
  759. function SnmpUtilMemReAlloc;
  760. begin
  761.   GetProcedureAddress(_SnmpUtilMemReAlloc, snmpapilib, 'SnmpUtilMemReAlloc');
  762.   asm
  763.     mov esp, ebp
  764.     pop ebp
  765.     jmp [_SnmpUtilMemReAlloc]
  766.   end;
  767. end;
  768. {$ELSE}
  769. function SnmpUtilMemReAlloc; external snmpapilib name 'SnmpUtilMemReAlloc';
  770. {$ENDIF DYNAMIC_LINK}
  771. {$IFDEF DYNAMIC_LINK}
  772. var
  773.   _SnmpUtilOidToA: Pointer;
  774. function SnmpUtilOidToA;
  775. begin
  776.   GetProcedureAddress(_SnmpUtilOidToA, snmpapilib, 'SnmpUtilOidToA');
  777.   asm
  778.     mov esp, ebp
  779.     pop ebp
  780.     jmp [_SnmpUtilOidToA]
  781.   end;
  782. end;
  783. {$ELSE}
  784. function SnmpUtilOidToA; external snmpapilib name 'SnmpUtilOidToA';
  785. {$ENDIF DYNAMIC_LINK}
  786. {$IFDEF DYNAMIC_LINK}
  787. var
  788.   _SnmpUtilIdsToA: Pointer;
  789. function SnmpUtilIdsToA;
  790. begin
  791.   GetProcedureAddress(_SnmpUtilIdsToA, snmpapilib, 'SnmpUtilIdsToA');
  792.   asm
  793.     mov esp, ebp
  794.     pop ebp
  795.     jmp [_SnmpUtilIdsToA]
  796.   end;
  797. end;
  798. {$ELSE}
  799. function SnmpUtilIdsToA; external snmpapilib name 'SnmpUtilIdsToA';
  800. {$ENDIF DYNAMIC_LINK}
  801. {$IFDEF DYNAMIC_LINK}
  802. var
  803.   _SnmpUtilPrintOid: Pointer;
  804. procedure SnmpUtilPrintOid;
  805. begin
  806.   GetProcedureAddress(_SnmpUtilPrintOid, snmpapilib, 'SnmpUtilPrintOid');
  807.   asm
  808.     mov esp, ebp
  809.     pop ebp
  810.     jmp [_SnmpUtilPrintOid]
  811.   end;
  812. end;
  813. {$ELSE}
  814. procedure SnmpUtilPrintOid; external snmpapilib name 'SnmpUtilPrintOid';
  815. {$ENDIF DYNAMIC_LINK}
  816. {$IFDEF DYNAMIC_LINK}
  817. var
  818.   _SnmpUtilPrintAsnAny: Pointer;
  819. procedure SnmpUtilPrintAsnAny;
  820. begin
  821.   GetProcedureAddress(_SnmpUtilPrintAsnAny, snmpapilib, 'SnmpUtilPrintAsnAny');
  822.   asm
  823.     mov esp, ebp
  824.     pop ebp
  825.     jmp [_SnmpUtilPrintAsnAny]
  826.   end;
  827. end;
  828. {$ELSE}
  829. procedure SnmpUtilPrintAsnAny; external snmpapilib name 'SnmpUtilPrintAsnAny';
  830. {$ENDIF DYNAMIC_LINK}
  831. {$IFDEF DYNAMIC_LINK}
  832. var
  833.   _SnmpSvcGetUptime: Pointer;
  834. function SnmpSvcGetUptime;
  835. begin
  836.   GetProcedureAddress(_SnmpSvcGetUptime, snmpapilib, 'SnmpSvcGetUptime');
  837.   asm
  838.     mov esp, ebp
  839.     pop ebp
  840.     jmp [_SnmpSvcGetUptime]
  841.   end;
  842. end;
  843. {$ELSE}
  844. function SnmpSvcGetUptime; external snmpapilib name 'SnmpSvcGetUptime';
  845. {$ENDIF DYNAMIC_LINK}
  846. {$IFDEF DYNAMIC_LINK}
  847. var
  848.   _SnmpSvcSetLogLevel: Pointer;
  849. procedure SnmpSvcSetLogLevel;
  850. begin
  851.   GetProcedureAddress(_SnmpSvcSetLogLevel, snmpapilib, 'SnmpSvcSetLogLevel');
  852.   asm
  853.     mov esp, ebp
  854.     pop ebp
  855.     jmp [_SnmpSvcSetLogLevel]
  856.   end;
  857. end;
  858. {$ELSE}
  859. procedure SnmpSvcSetLogLevel; external snmpapilib name 'SnmpSvcSetLogLevel';
  860. {$ENDIF DYNAMIC_LINK}
  861. {$IFDEF DYNAMIC_LINK}
  862. var
  863.   _SnmpSvcSetLogType: Pointer;
  864. procedure SnmpSvcSetLogType;
  865. begin
  866.   GetProcedureAddress(_SnmpSvcSetLogType, snmpapilib, 'SnmpSvcSetLogType');
  867.   asm
  868.     mov esp, ebp
  869.     pop ebp
  870.     jmp [_SnmpSvcSetLogType]
  871.   end;
  872. end;
  873. {$ELSE}
  874. procedure SnmpSvcSetLogType; external snmpapilib name 'SnmpSvcSetLogType';
  875. {$ENDIF DYNAMIC_LINK}
  876. {$IFDEF DYNAMIC_LINK}
  877. var
  878.   _SnmpUtilDbgPrint: Pointer;
  879. procedure SnmpUtilDbgPrint;
  880. begin
  881.   GetProcedureAddress(_SnmpUtilDbgPrint, snmpapilib, 'SnmpUtilDbgPrint');
  882.   asm
  883.     mov esp, ebp
  884.     pop ebp
  885.     jmp [_SnmpUtilDbgPrint]
  886.   end;
  887. end;
  888. {$ELSE}
  889. procedure SnmpUtilDbgPrint; external snmpapilib name 'SnmpUtilDbgPrint';
  890. {$ENDIF DYNAMIC_LINK}
  891. {$IFNDEF SNMPSTRICT}
  892. {$IFDEF DYNAMIC_LINK}
  893. var
  894.   _SNMP_oidcpy: Pointer;
  895. function SNMP_oidcpy;
  896. begin
  897.   GetProcedureAddress(_SNMP_oidcpy, snmpapilib, 'SnmpUtilOidCpy');
  898.   asm
  899.     mov esp, ebp
  900.     pop ebp
  901.     jmp [_SNMP_oidcpy]
  902.   end;
  903. end;
  904. {$ELSE}
  905. function SNMP_oidcpy; external snmpapilib name 'SnmpUtilOidCpy';
  906. {$ENDIF DYNAMIC_LINK}
  907. {$IFDEF DYNAMIC_LINK}
  908. var
  909.   _SNMP_oidappend: Pointer;
  910. function SNMP_oidappend;
  911. begin
  912.   GetProcedureAddress(_SNMP_oidappend, snmpapilib, 'SnmpUtilOidAppend');
  913.   asm
  914.     mov esp, ebp
  915.     pop ebp
  916.     jmp [_SNMP_oidappend]
  917.   end;
  918. end;
  919. {$ELSE}
  920. function SNMP_oidappend; external snmpapilib name 'SnmpUtilOidAppend';
  921. {$ENDIF DYNAMIC_LINK}
  922. {$IFDEF DYNAMIC_LINK}
  923. var
  924.   _SNMP_oidncmp: Pointer;
  925. function SNMP_oidncmp;
  926. begin
  927.   GetProcedureAddress(_SNMP_oidncmp, snmpapilib, 'SnmpUtilOidNCmp');
  928.   asm
  929.     mov esp, ebp
  930.     pop ebp
  931.     jmp [_SNMP_oidncmp]
  932.   end;
  933. end;
  934. {$ELSE}
  935. function SNMP_oidncmp; external snmpapilib name 'SnmpUtilOidNCmp';
  936. {$ENDIF DYNAMIC_LINK}
  937. {$IFDEF DYNAMIC_LINK}
  938. var
  939.   _SNMP_oidcmp: Pointer;
  940. function SNMP_oidcmp;
  941. begin
  942.   GetProcedureAddress(_SNMP_oidcmp, snmpapilib, 'SnmpUtilOidCmp');
  943.   asm
  944.     mov esp, ebp
  945.     pop ebp
  946.     jmp [_SNMP_oidcmp]
  947.   end;
  948. end;
  949. {$ELSE}
  950. function SNMP_oidcmp; external snmpapilib name 'SnmpUtilOidCmp';
  951. {$ENDIF DYNAMIC_LINK}
  952. {$IFDEF DYNAMIC_LINK}
  953. var
  954.   _SNMP_oidfree: Pointer;
  955. procedure SNMP_oidfree;
  956. begin
  957.   GetProcedureAddress(_SNMP_oidfree, snmpapilib, 'SnmpUtilOidFree');
  958.   asm
  959.     mov esp, ebp
  960.     pop ebp
  961.     jmp [_SNMP_oidfree]
  962.   end;
  963. end;
  964. {$ELSE}
  965. procedure SNMP_oidfree; external snmpapilib name 'SnmpUtilOidFree';
  966. {$ENDIF DYNAMIC_LINK}
  967. {$IFDEF DYNAMIC_LINK}
  968. var
  969.   _SNMP_CopyVarBind: Pointer;
  970. function SNMP_CopyVarBind;
  971. begin
  972.   GetProcedureAddress(_SNMP_CopyVarBind, snmpapilib, 'SnmpUtilVarBindCpy');
  973.   asm
  974.     mov esp, ebp
  975.     pop ebp
  976.     jmp [_SNMP_CopyVarBind]
  977.   end;
  978. end;
  979. {$ELSE}
  980. function SNMP_CopyVarBind; external snmpapilib name 'SnmpUtilVarBindCpy';
  981. {$ENDIF DYNAMIC_LINK}
  982. {$IFDEF DYNAMIC_LINK}
  983. var
  984.   _SNMP_FreeVarBind: Pointer;
  985. procedure SNMP_FreeVarBind;
  986. begin
  987.   GetProcedureAddress(_SNMP_FreeVarBind, snmpapilib, 'SnmpUtilVarBindFree');
  988.   asm
  989.     mov esp, ebp
  990.     pop ebp
  991.     jmp [_SNMP_FreeVarBind]
  992.   end;
  993. end;
  994. {$ELSE}
  995. procedure SNMP_FreeVarBind; external snmpapilib name 'SnmpUtilVarBindFree';
  996. {$ENDIF DYNAMIC_LINK}
  997. {$IFDEF DYNAMIC_LINK}
  998. var
  999.   _SNMP_CopyVarBindList: Pointer;
  1000. function SNMP_CopyVarBindList;
  1001. begin
  1002.   GetProcedureAddress(_SNMP_CopyVarBindList, snmpapilib, 'SnmpUtilVarBindListCpy');
  1003.   asm
  1004.     mov esp, ebp
  1005.     pop ebp
  1006.     jmp [_SNMP_CopyVarBindList]
  1007.   end;
  1008. end;
  1009. {$ELSE}
  1010. function SNMP_CopyVarBindList; external snmpapilib name 'SnmpUtilVarBindListCpy';
  1011. {$ENDIF DYNAMIC_LINK}
  1012. {$IFDEF DYNAMIC_LINK}
  1013. var
  1014.   _SNMP_FreeVarBindList: Pointer;
  1015. procedure SNMP_FreeVarBindList;
  1016. begin
  1017.   GetProcedureAddress(_SNMP_FreeVarBindList, snmpapilib, 'SnmpUtilVarBindListFree');
  1018.   asm
  1019.     mov esp, ebp
  1020.     pop ebp
  1021.     jmp [_SNMP_FreeVarBindList]
  1022.   end;
  1023. end;
  1024. {$ELSE}
  1025. procedure SNMP_FreeVarBindList; external snmpapilib name 'SnmpUtilVarBindListFree';
  1026. {$ENDIF DYNAMIC_LINK}
  1027. {$IFDEF DYNAMIC_LINK}
  1028. var
  1029.   _SNMP_printany: Pointer;
  1030. procedure SNMP_printany;
  1031. begin
  1032.   GetProcedureAddress(_SNMP_printany, snmpapilib, 'SnmpUtilPrintAsnAny');
  1033.   asm
  1034.     mov esp, ebp
  1035.     pop ebp
  1036.     jmp [_SNMP_printany]
  1037.   end;
  1038. end;
  1039. {$ELSE}
  1040. procedure SNMP_printany; external snmpapilib name 'SnmpUtilPrintAsnAny';
  1041. {$ENDIF DYNAMIC_LINK}
  1042. {$IFDEF DYNAMIC_LINK}
  1043. var
  1044.   _SNMP_free: Pointer;
  1045. procedure SNMP_free;
  1046. begin
  1047.   GetProcedureAddress(_SNMP_free, snmpapilib, 'SnmpUtilMemFree');
  1048.   asm
  1049.     mov esp, ebp
  1050.     pop ebp
  1051.     jmp [_SNMP_free]
  1052.   end;
  1053. end;
  1054. {$ELSE}
  1055. procedure SNMP_free; external snmpapilib name 'SnmpUtilMemFree';
  1056. {$ENDIF DYNAMIC_LINK}
  1057. {$IFDEF DYNAMIC_LINK}
  1058. var
  1059.   _SNMP_malloc: Pointer;
  1060. function SNMP_malloc;
  1061. begin
  1062.   GetProcedureAddress(_SNMP_malloc, snmpapilib, 'SnmpUtilMemAlloc');
  1063.   asm
  1064.     mov esp, ebp
  1065.     pop ebp
  1066.     jmp [_SNMP_malloc]
  1067.   end;
  1068. end;
  1069. {$ELSE}
  1070. function SNMP_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
  1071. {$ENDIF DYNAMIC_LINK}
  1072. {$IFDEF DYNAMIC_LINK}
  1073. var
  1074.   _SNMP_realloc: Pointer;
  1075. function SNMP_realloc;
  1076. begin
  1077.   GetProcedureAddress(_SNMP_realloc, snmpapilib, 'SnmpUtilMemReAlloc');
  1078.   asm
  1079.     mov esp, ebp
  1080.     pop ebp
  1081.     jmp [_SNMP_realloc]
  1082.   end;
  1083. end;
  1084. {$ELSE}
  1085. function SNMP_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
  1086. {$ENDIF DYNAMIC_LINK}
  1087. {$IFDEF DYNAMIC_LINK}
  1088. var
  1089.   _SNMP_DBG_free: Pointer;
  1090. procedure SNMP_DBG_free;
  1091. begin
  1092.   GetProcedureAddress(_SNMP_DBG_free, snmpapilib, 'SnmpUtilMemFree');
  1093.   asm
  1094.     mov esp, ebp
  1095.     pop ebp
  1096.     jmp [_SNMP_DBG_free]
  1097.   end;
  1098. end;
  1099. {$ELSE}
  1100. procedure SNMP_DBG_free; external snmpapilib name 'SnmpUtilMemFree';
  1101. {$ENDIF DYNAMIC_LINK}
  1102. {$IFDEF DYNAMIC_LINK}
  1103. var
  1104.   _SNMP_DBG_malloc: Pointer;
  1105. function SNMP_DBG_malloc;
  1106. begin
  1107.   GetProcedureAddress(_SNMP_DBG_malloc, snmpapilib, 'SnmpUtilMemAlloc');
  1108.   asm
  1109.     mov esp, ebp
  1110.     pop ebp
  1111.     jmp [_SNMP_DBG_malloc]
  1112.   end;
  1113. end;
  1114. {$ELSE}
  1115. function SNMP_DBG_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
  1116. {$ENDIF DYNAMIC_LINK}
  1117. {$IFDEF DYNAMIC_LINK}
  1118. var
  1119.   _SNMP_DBG_realloc: Pointer;
  1120. function SNMP_DBG_realloc;
  1121. begin
  1122.   GetProcedureAddress(_SNMP_DBG_realloc, snmpapilib, 'SnmpUtilMemReAlloc');
  1123.   asm
  1124.     mov esp, ebp
  1125.     pop ebp
  1126.     jmp [_SNMP_DBG_realloc]
  1127.   end;
  1128. end;
  1129. {$ELSE}
  1130. function SNMP_DBG_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
  1131. {$ENDIF DYNAMIC_LINK}
  1132. {$ENDIF SNMPSTRICT}
  1133. end.