📄 snmp.pas
字号:
{******************************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ SNMP functions interface unit }
{ }
{ The contents of this file are subject to the Mozilla Public License }
{ Version 1.1 (the "License"); you may not use this file except in }
{ compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/ }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License }
{ for the specific language governing rights and limitations under the }
{ License. }
{ }
{ The Original Code is: snmp.h. }
{ The Initial Developer of the Original Code is Microsoft. Portions created }
{ by Microsoft are Copyright (C) 1992-1999 Microsoft Corporation. All Rights }
{ Reserved. }
{ }
{ The Original Pascal code is: Snmp.pas, released 2001-10-05. }
{ The Initial Developer of the Original Pascal code is Petr Vones }
{ (petrdott v att mujmail dott cz). Portions created by Petr Vones are }
{ Copyright (C) 2001 Petr Vones. All Rights Reserved. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project JEDI home }
{ page, located at http://delphi-jedi.org }
{ }
{ Contributor(s): }
{ }
{******************************************************************************}
// Last modified: $Date: 2004/10/17 21:00:16 $
// For history see end of file
unit Snmp;
interface
{$I jcl.inc}
{$DEFINE SNMP_DYNAMIC_LINK}
{$DEFINE SNMP_DYNAMIC_LINK_EXPLICIT}
{$DEFINE SNMPSTRICT}
{$ALIGN ON}
{$MINENUMSIZE 4}
{$IFNDEF SNMP_DYNAMIC_LINK}
{$IFDEF SUPPORTS_WEAKPACKAGEUNIT}
{$WEAKPACKAGEUNIT ON}
{$ENDIF SUPPORTS_WEAKPACKAGEUNIT}
{$ENDIF ~SNMP_DYNAMIC_LINK}
uses
Windows;
(*$HPPEMIT '#include <snmp.h>'*)
type
PAsnOctetString = ^TAsnOctetString;
TAsnOctetString = record
stream: PChar;
length: UINT;
dynamic_: Boolean;
end;
PAsnObjectIdentifier = ^TAsnObjectIdentifier;
TAsnObjectIdentifier = record
idLength: UINT;
ids: PUINT;
end;
TAsnInteger32 = LongInt;
{$EXTERNALSYM TAsnInteger32}
TAsnUnsigned32 = ULONG;
{$EXTERNALSYM TAsnUnsigned32}
TAsnCounter64 = ULARGE_INTEGER;
{$EXTERNALSYM TAsnCounter64}
TAsnCounter32 = TAsnUnsigned32;
{$EXTERNALSYM TAsnCounter32}
TAsnGauge32 = TAsnUnsigned32;
{$EXTERNALSYM TAsnGauge32}
TAsnTimeticks = TAsnUnsigned32;
{$EXTERNALSYM TAsnTimeticks}
TAsnBits = TAsnOctetString;
{$EXTERNALSYM TAsnBits}
TAsnSequence = TAsnOctetString;
{$EXTERNALSYM TAsnSequence}
TAsnImplicitSequence = TAsnOctetString;
{$EXTERNALSYM TAsnImplicitSequence}
TAsnIPAddress = TAsnOctetString;
{$EXTERNALSYM TAsnIPAddress}
TAsnNetworkAddress = TAsnOctetString;
{$EXTERNALSYM TAsnNetworkAddress}
TAsnDisplayString = TAsnOctetString;
{$EXTERNALSYM TAsnDisplayString}
TAsnOpaque = TAsnOctetString;
{$EXTERNALSYM TAsnOpaque}
PAsnAny = ^TAsnAny;
TAsnAny = record
asnType: Byte;
case Integer of
0: (number: TAsnInteger32); // ASN_INTEGER, ASN_INTEGER32
1: (unsigned32: TAsnUnsigned32); // ASN_UNSIGNED32
2: (counter64: TAsnCounter64); // ASN_COUNTER64
3: (string_: TAsnOctetString); // ASN_OCTETSTRING
4: (bits: TAsnBits); // ASN_BITS
5: (object_: TAsnObjectIdentifier); // ASN_OBJECTIDENTIFIER
6: (sequence: TAsnSequence); // ASN_SEQUENCE
7: (address: TAsnIPAddress); // ASN_IPADDRESS
8: (counter: TAsnCounter32); // ASN_COUNTER32
9: (gauge: TAsnGauge32); // ASN_GAUGE32
10: (ticks: TAsnTimeticks); // ASN_TIMETICKS
11: (arbitrary: TAsnOpaque); // ASN_OPAQUE
end;
TAsnObjectName = TAsnObjectIdentifier;
TAsnObjectSyntax = TAsnAny;
PSnmpVarBind = ^TSnmpVarBind;
TSnmpVarBind = record
name: TAsnObjectName;
value: TAsnObjectSyntax;
end;
PSnmpVarBindList = ^TSnmpVarBindList;
TSnmpVarBindList = record
list: PSnmpVarBind;
len: UINT;
end;
const
{ ASN/BER Base Types }
ASN_UNIVERSAL = $00;
{$EXTERNALSYM ASN_UNIVERSAL}
ASN_APPLICATION = $40;
{$EXTERNALSYM ASN_APPLICATION}
ASN_CONTEXT = $80;
{$EXTERNALSYM ASN_CONTEXT}
ASN_PRIVATE = $C0;
{$EXTERNALSYM ASN_PRIVATE}
ASN_PRIMITIVE = $00;
{$EXTERNALSYM ASN_PRIMITIVE}
ASN_CONSTRUCTOR = $20;
{$EXTERNALSYM ASN_CONSTRUCTOR}
{ PDU Type Values }
SNMP_PDU_GET = (ASN_CONTEXT or ASN_CONSTRUCTOR or $0);
{$EXTERNALSYM SNMP_PDU_GET}
SNMP_PDU_GETNEXT = (ASN_CONTEXT or ASN_CONSTRUCTOR or $1);
{$EXTERNALSYM SNMP_PDU_GETNEXT}
SNMP_PDU_RESPONSE = (ASN_CONTEXT or ASN_CONSTRUCTOR or $2);
{$EXTERNALSYM SNMP_PDU_RESPONSE}
SNMP_PDU_SET = (ASN_CONTEXT or ASN_CONSTRUCTOR or $3);
{$EXTERNALSYM SNMP_PDU_SET}
SNMP_PDU_V1TRAP = (ASN_CONTEXT or ASN_CONSTRUCTOR or $4);
{$EXTERNALSYM SNMP_PDU_V1TRAP}
SNMP_PDU_GETBULK = (ASN_CONTEXT or ASN_CONSTRUCTOR or $5);
{$EXTERNALSYM SNMP_PDU_GETBULK}
SNMP_PDU_INFORM = (ASN_CONTEXT or ASN_CONSTRUCTOR or $6);
{$EXTERNALSYM SNMP_PDU_INFORM}
SNMP_PDU_TRAP = (ASN_CONTEXT or ASN_CONSTRUCTOR or $7);
{$EXTERNALSYM SNMP_PDU_TRAP}
{ SNMP Simple Syntax Values }
ASN_INTEGER = (ASN_UNIVERSAL or ASN_PRIMITIVE or $02);
{$EXTERNALSYM ASN_INTEGER}
ASN_BITS = (ASN_UNIVERSAL or ASN_PRIMITIVE or $03);
{$EXTERNALSYM ASN_BITS}
ASN_OCTETSTRING = (ASN_UNIVERSAL or ASN_PRIMITIVE or $04);
{$EXTERNALSYM ASN_OCTETSTRING}
ASN_NULL = (ASN_UNIVERSAL or ASN_PRIMITIVE or $05);
{$EXTERNALSYM ASN_NULL}
ASN_OBJECTIDENTIFIER = (ASN_UNIVERSAL or ASN_PRIMITIVE or $06);
{$EXTERNALSYM ASN_OBJECTIDENTIFIER}
ASN_INTEGER32 = ASN_INTEGER;
{$EXTERNALSYM ASN_INTEGER32}
{ SNMP Constructor Syntax Values }
ASN_SEQUENCE = (ASN_UNIVERSAL or ASN_CONSTRUCTOR or $10);
{$EXTERNALSYM ASN_SEQUENCE}
ASN_SEQUENCEOF = ASN_SEQUENCE;
{$EXTERNALSYM ASN_SEQUENCEOF}
{ SNMP Application Syntax Values }
ASN_IPADDRESS = (ASN_APPLICATION or ASN_PRIMITIVE or $00);
{$EXTERNALSYM ASN_IPADDRESS}
ASN_COUNTER32 = (ASN_APPLICATION or ASN_PRIMITIVE or $01);
{$EXTERNALSYM ASN_COUNTER32}
ASN_GAUGE32 = (ASN_APPLICATION or ASN_PRIMITIVE or $02);
{$EXTERNALSYM ASN_GAUGE32}
ASN_TIMETICKS = (ASN_APPLICATION or ASN_PRIMITIVE or $03);
{$EXTERNALSYM ASN_TIMETICKS}
ASN_OPAQUE = (ASN_APPLICATION or ASN_PRIMITIVE or $04);
{$EXTERNALSYM ASN_OPAQUE}
ASN_COUNTER64 = (ASN_APPLICATION or ASN_PRIMITIVE or $06);
{$EXTERNALSYM ASN_COUNTER64}
ASN_UNSIGNED32 = (ASN_APPLICATION or ASN_PRIMITIVE or $07);
{$EXTERNALSYM ASN_UNSIGNED32}
{ SNMP Exception Conditions }
SNMP_EXCEPTION_NOSUCHOBJECT = (ASN_CONTEXT or ASN_PRIMITIVE or $00);
{$EXTERNALSYM SNMP_EXCEPTION_NOSUCHOBJECT}
SNMP_EXCEPTION_NOSUCHINSTANCE = (ASN_CONTEXT or ASN_PRIMITIVE or $01);
{$EXTERNALSYM SNMP_EXCEPTION_NOSUCHINSTANCE}
SNMP_EXCEPTION_ENDOFMIBVIEW = (ASN_CONTEXT or ASN_PRIMITIVE or $02);
{$EXTERNALSYM SNMP_EXCEPTION_ENDOFMIBVIEW}
{ SNMP Request Types (used in SnmpExtensionQueryEx) }
SNMP_EXTENSION_GET = SNMP_PDU_GET;
{$EXTERNALSYM SNMP_EXTENSION_GET}
SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT;
{$EXTERNALSYM SNMP_EXTENSION_GET_NEXT}
SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK;
{$EXTERNALSYM SNMP_EXTENSION_GET_BULK}
SNMP_EXTENSION_SET_TEST = (ASN_PRIVATE or ASN_CONSTRUCTOR or $0);
{$EXTERNALSYM SNMP_EXTENSION_SET_TEST}
SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET;
{$EXTERNALSYM SNMP_EXTENSION_SET_COMMIT}
SNMP_EXTENSION_SET_UNDO = (ASN_PRIVATE or ASN_CONSTRUCTOR or $1);
{$EXTERNALSYM SNMP_EXTENSION_SET_UNDO}
SNMP_EXTENSION_SET_CLEANUP = (ASN_PRIVATE or ASN_CONSTRUCTOR or $2);
{$EXTERNALSYM SNMP_EXTENSION_SET_CLEANUP}
{ SNMP Error Codes }
SNMP_ERRORSTATUS_NOERROR = 0;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOERROR}
SNMP_ERRORSTATUS_TOOBIG = 1;
{$EXTERNALSYM SNMP_ERRORSTATUS_TOOBIG}
SNMP_ERRORSTATUS_NOSUCHNAME = 2;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOSUCHNAME}
SNMP_ERRORSTATUS_BADVALUE = 3;
{$EXTERNALSYM SNMP_ERRORSTATUS_BADVALUE}
SNMP_ERRORSTATUS_READONLY = 4;
{$EXTERNALSYM SNMP_ERRORSTATUS_READONLY}
SNMP_ERRORSTATUS_GENERR = 5;
{$EXTERNALSYM SNMP_ERRORSTATUS_GENERR}
SNMP_ERRORSTATUS_NOACCESS = 6;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOACCESS}
SNMP_ERRORSTATUS_WRONGTYPE = 7;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGTYPE}
SNMP_ERRORSTATUS_WRONGLENGTH = 8;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGLENGTH}
SNMP_ERRORSTATUS_WRONGENCODING = 9;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGENCODING}
SNMP_ERRORSTATUS_WRONGVALUE = 10;
{$EXTERNALSYM SNMP_ERRORSTATUS_WRONGVALUE}
SNMP_ERRORSTATUS_NOCREATION = 11;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOCREATION}
SNMP_ERRORSTATUS_INCONSISTENTVALUE = 12;
{$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTVALUE}
SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE = 13;
{$EXTERNALSYM SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE}
SNMP_ERRORSTATUS_COMMITFAILED = 14;
{$EXTERNALSYM SNMP_ERRORSTATUS_COMMITFAILED}
SNMP_ERRORSTATUS_UNDOFAILED = 15;
{$EXTERNALSYM SNMP_ERRORSTATUS_UNDOFAILED}
SNMP_ERRORSTATUS_AUTHORIZATIONERROR = 16;
{$EXTERNALSYM SNMP_ERRORSTATUS_AUTHORIZATIONERROR}
SNMP_ERRORSTATUS_NOTWRITABLE = 17;
{$EXTERNALSYM SNMP_ERRORSTATUS_NOTWRITABLE}
SNMP_ERRORSTATUS_INCONSISTENTNAME = 18;
{$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTNAME}
{ SNMPv1 Trap Types }
SNMP_GENERICTRAP_COLDSTART = 0;
{$EXTERNALSYM SNMP_GENERICTRAP_COLDSTART}
SNMP_GENERICTRAP_WARMSTART = 1;
{$EXTERNALSYM SNMP_GENERICTRAP_WARMSTART}
SNMP_GENERICTRAP_LINKDOWN = 2;
{$EXTERNALSYM SNMP_GENERICTRAP_LINKDOWN}
SNMP_GENERICTRAP_LINKUP = 3;
{$EXTERNALSYM SNMP_GENERICTRAP_LINKUP}
SNMP_GENERICTRAP_AUTHFAILURE = 4;
{$EXTERNALSYM SNMP_GENERICTRAP_AUTHFAILURE}
SNMP_GENERICTRAP_EGPNEIGHLOSS = 5;
{$EXTERNALSYM SNMP_GENERICTRAP_EGPNEIGHLOSS}
SNMP_GENERICTRAP_ENTERSPECIFIC = 6;
{$EXTERNALSYM SNMP_GENERICTRAP_ENTERSPECIFIC}
{ SNMP Access Types }
SNMP_ACCESS_NONE = 0;
{$EXTERNALSYM SNMP_ACCESS_NONE}
SNMP_ACCESS_NOTIFY = 1;
{$EXTERNALSYM SNMP_ACCESS_NOTIFY}
SNMP_ACCESS_READ_ONLY = 2;
{$EXTERNALSYM SNMP_ACCESS_READ_ONLY}
SNMP_ACCESS_READ_WRITE = 3;
{$EXTERNALSYM SNMP_ACCESS_READ_WRITE}
SNMP_ACCESS_READ_CREATE = 4;
{$EXTERNALSYM SNMP_ACCESS_READ_CREATE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -