📄 snmp.pas
字号:
ASN_PRIMATIVE = ASN_PRIMITIVE;
{$EXTERNALSYM ASN_PRIMATIVE}
type
RFC1157VarBindList = TSnmpVarBindList;
{$EXTERNALSYM RFC1157VarBindList}
RFC1157VarBind = TSnmpVarBind;
{$EXTERNALSYM RFC1157VarBind}
TAsnInteger = TAsnInteger32;
{$EXTERNALSYM TAsnInteger}
TAsnCounter = TAsnCounter32;
{$EXTERNALSYM TAsnCounter}
TAsnGauge = TAsnGauge32;
{$EXTERNALSYM TAsnGauge}
{$ENDIF ~SNMPSTRICT}
{ SNMP Extension API Prototypes }
var
SnmpExtensionInit: TSnmpExtensionInit;
{$EXTERNALSYM SnmpExtensionInit}
SnmpExtensionInitEx: TSnmpExtensionInitEx;
{$EXTERNALSYM SnmpExtensionInitEx}
SnmpExtensionMonitor: TSnmpExtensionMonitor;
{$EXTERNALSYM SnmpExtensionMonitor}
SnmpExtensionQuery: TSnmpExtensionQuery;
{$EXTERNALSYM SnmpExtensionQuery}
SnmpExtensionQueryEx: TSnmpExtensionQueryEx;
{$EXTERNALSYM SnmpExtensionQueryEx}
SnmpExtensionTrap: TSnmpExtensionTrap;
{$EXTERNALSYM SnmpExtensionTrap}
SnmpExtensionClose: TSnmpExtensionClose;
{$EXTERNALSYM SnmpExtensionClose}
function SnmpExtensionLoaded: Boolean;
function LoadSnmpExtension(const LibName: string): Boolean;
function UnloadSnmpExtension: Boolean;
{$IFDEF SNMP_DYNAMIC_LINK}
function SnmpLoaded: Boolean;
{$IFDEF SNMP_DYNAMIC_LINK_EXPLICIT}
function LoadSnmp: Boolean;
function UnloadSnmp: Boolean;
{$ENDIF SNMP_DYNAMIC_LINK_EXPLICIT}
{$ENDIF SNMP_DYNAMIC_LINK}
implementation
const
snmpapilib = 'snmpapi.dll';
var
ExtensionLibHandle: THandle;
function SnmpExtensionLoaded: Boolean;
begin
Result := ExtensionLibHandle <> 0;
end;
function LoadSnmpExtension(const LibName: string): Boolean;
begin
Result := UnloadSnmpExtension;
if Result then
begin
ExtensionLibHandle := LoadLibrary(PChar(LibName));
Result := SnmpExtensionLoaded;
if Result then
begin
@SnmpExtensionInit := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionInit');
@SnmpExtensionInitEx := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionInitEx');
@SnmpExtensionMonitor := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionMonitor');
@SnmpExtensionQuery := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionQuery');
@SnmpExtensionQueryEx := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionQueryEx');
@SnmpExtensionTrap := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionTrap');
@SnmpExtensionClose := GetProcAddress(ExtensionLibHandle, 'SnmpExtensionClose');
Result := Assigned(SnmpExtensionInit);
if not Result then
UnloadSnmpExtension;
end;
end;
end;
function UnloadSnmpExtension: Boolean;
begin
if SnmpExtensionLoaded then
begin
Result := FreeLibrary(ExtensionLibHandle);
ExtensionLibHandle := 0;
@SnmpExtensionInit := nil;
@SnmpExtensionInitEx := nil;
@SnmpExtensionMonitor := nil;
@SnmpExtensionQuery := nil;
@SnmpExtensionQueryEx := nil;
@SnmpExtensionTrap := nil;
@SnmpExtensionClose := nil;
end
else
Result := True;
end;
{$IFDEF SNMP_DYNAMIC_LINK}
var
SnmpLibHandle: THandle;
function SnmpLoaded: Boolean;
begin
Result := SnmpLibHandle <> 0;
end;
function UnloadSnmp: Boolean;
begin
Result := True;
if SnmpLoaded then
begin
Result := FreeLibrary(SnmpLibHandle);
SnmpLibHandle := 0;
@SnmpUtilOidCpy := nil;
@SnmpUtilOidAppend := nil;
@SnmpUtilOidNCmp := nil;
@SnmpUtilOidCmp := nil;
@SnmpUtilOidFree := nil;
@SnmpUtilOctetsCmp := nil;
@SnmpUtilOctetsNCmp := nil;
@SnmpUtilOctetsCpy := nil;
@SnmpUtilOctetsFree := nil;
@SnmpUtilAsnAnyCpy := nil;
@SnmpUtilAsnAnyFree := nil;
@SnmpUtilVarBindCpy := nil;
@SnmpUtilVarBindFree := nil;
@SnmpUtilVarBindListCpy := nil;
@SnmpUtilVarBindListFree := nil;
@SnmpUtilMemFree := nil;
@SnmpUtilMemAlloc := nil;
@SnmpUtilMemReAlloc := nil;
@SnmpUtilOidToA := nil;
@SnmpUtilIdsToA := nil;
@SnmpUtilPrintOid := nil;
@SnmpUtilPrintAsnAny := nil;
@SnmpSvcGetUptime := nil;
@SnmpSvcSetLogLevel := nil;
@SnmpSvcSetLogType := nil;
@SnmpUtilDbgPrint := nil;
{$IFNDEF SNMPSTRICT}
@SNMP_oidcpy := nil;
@SNMP_oidappend := nil;
@SNMP_oidncmp := nil;
@SNMP_oidcmp := nil;
@SNMP_oidfree := nil;
@SNMP_CopyVarBind := nil;
@SNMP_FreeVarBind := nil;
@SNMP_CopyVarBindList := nil;
@SNMP_FreeVarBindList := nil;
@SNMP_printany := nil;
@SNMP_free := nil;
@SNMP_malloc := nil;
@SNMP_realloc := nil;
@SNMP_DBG_free := nil;
@SNMP_DBG_malloc := nil;
@SNMP_DBG_realloc := nil;
{$ENDIF ~SNMPSTRICT}
end;
end;
function LoadSnmp: Boolean;
begin
Result := SnmpLoaded;
if not Result then
begin
SnmpLibHandle := LoadLibrary(snmpapilib);
if SnmpLoaded then
begin
@SnmpUtilOidCpy := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidCpy');
@SnmpUtilOidAppend := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidAppend');
@SnmpUtilOidNCmp := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidNCmp');
@SnmpUtilOidCmp := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidCmp');
@SnmpUtilOidFree := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidFree');
@SnmpUtilOctetsCmp := GetProcAddress(SnmpLibHandle, 'SnmpUtilOctetsCmp');
@SnmpUtilOctetsNCmp := GetProcAddress(SnmpLibHandle, 'SnmpUtilOctetsNCmp');
@SnmpUtilOctetsCpy := GetProcAddress(SnmpLibHandle, 'SnmpUtilOctetsCpy');
@SnmpUtilOctetsFree := GetProcAddress(SnmpLibHandle, 'SnmpUtilOctetsFree');
@SnmpUtilAsnAnyCpy := GetProcAddress(SnmpLibHandle, 'SnmpUtilAsnAnyCpy');
@SnmpUtilAsnAnyFree := GetProcAddress(SnmpLibHandle, 'SnmpUtilAsnAnyFree');
@SnmpUtilVarBindCpy := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindCpy');
@SnmpUtilVarBindFree := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindFree');
@SnmpUtilVarBindListCpy := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindListCpy');
@SnmpUtilVarBindListFree := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindListFree');
@SnmpUtilMemFree := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemFree');
@SnmpUtilMemAlloc := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemAlloc');
@SnmpUtilMemReAlloc := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemReAlloc');
@SnmpUtilOidToA := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidToA');
@SnmpUtilIdsToA := GetProcAddress(SnmpLibHandle, 'SnmpUtilIdsToA');
@SnmpUtilPrintOid := GetProcAddress(SnmpLibHandle, 'SnmpUtilPrintOid');
@SnmpUtilPrintAsnAny := GetProcAddress(SnmpLibHandle, 'SnmpUtilPrintAsnAny');
@SnmpSvcGetUptime := GetProcAddress(SnmpLibHandle, 'SnmpSvcGetUptime');
@SnmpSvcSetLogLevel := GetProcAddress(SnmpLibHandle, 'SnmpSvcSetLogLevel');
@SnmpSvcSetLogType := GetProcAddress(SnmpLibHandle, 'SnmpSvcSetLogType');
@SnmpUtilDbgPrint := GetProcAddress(SnmpLibHandle, 'SnmpUtilDbgPrint');
{$IFNDEF SNMPSTRICT}
@SNMP_oidcpy := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidCpy');
@SNMP_oidappend := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidAppend');
@SNMP_oidncmp := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidNCmp');
@SNMP_oidcmp := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidCmp');
@SNMP_oidfree := GetProcAddress(SnmpLibHandle, 'SnmpUtilOidFree');
@SNMP_CopyVarBind := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindCpy');
@SNMP_FreeVarBind := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindFree');
@SNMP_CopyVarBindList := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindListCpy');
@SNMP_FreeVarBindList := GetProcAddress(SnmpLibHandle, 'SnmpUtilVarBindListFree');
@SNMP_printany := GetProcAddress(SnmpLibHandle, 'SnmpUtilPrintAsnAny');
@SNMP_free := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemFree');
@SNMP_malloc := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemAlloc');
@SNMP_realloc := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemReAlloc');
@SNMP_DBG_free := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemFree');
@SNMP_DBG_malloc := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemAlloc');
@SNMP_DBG_realloc := GetProcAddress(SnmpLibHandle, 'SnmpUtilMemReAlloc');
{$ENDIF ~SNMPSTRICT}
Result := True;
end;
end;
end;
{$ELSE}
function SnmpUtilOidCpy; external snmpapilib name 'SnmpUtilOidCpy';
function SnmpUtilOidAppend; external snmpapilib name 'SnmpUtilOidAppend';
function SnmpUtilOidNCmp; external snmpapilib name 'SnmpUtilOidNCmp';
function SnmpUtilOidCmp; external snmpapilib name 'SnmpUtilOidCmp';
procedure SnmpUtilOidFree; external snmpapilib name 'SnmpUtilOidFree';
function SnmpUtilOctetsCmp; external snmpapilib name 'SnmpUtilOctetsCmp';
function SnmpUtilOctetsNCmp; external snmpapilib name 'SnmpUtilOctetsNCmp';
function SnmpUtilOctetsCpy; external snmpapilib name 'SnmpUtilOctetsCpy';
procedure SnmpUtilOctetsFree; external snmpapilib name 'SnmpUtilOctetsFree';
function SnmpUtilAsnAnyCpy; external snmpapilib name 'SnmpUtilAsnAnyCpy';
procedure SnmpUtilAsnAnyFree; external snmpapilib name 'SnmpUtilAsnAnyFree';
function SnmpUtilVarBindCpy; external snmpapilib name 'SnmpUtilVarBindCpy';
procedure SnmpUtilVarBindFree; external snmpapilib name 'SnmpUtilVarBindFree';
function SnmpUtilVarBindListCpy; external snmpapilib name 'SnmpUtilVarBindListCpy';
procedure SnmpUtilVarBindListFree; external snmpapilib name 'SnmpUtilVarBindListFree';
procedure SnmpUtilMemFree; external snmpapilib name 'SnmpUtilMemFree';
function SnmpUtilMemAlloc; external snmpapilib name 'SnmpUtilMemAlloc';
function SnmpUtilMemReAlloc; external snmpapilib name 'SnmpUtilMemReAlloc';
function SnmpUtilOidToA; external snmpapilib name 'SnmpUtilOidToA';
function SnmpUtilIdsToA; external snmpapilib name 'SnmpUtilIdsToA';
procedure SnmpUtilPrintOid; external snmpapilib name 'SnmpUtilPrintOid';
procedure SnmpUtilPrintAsnAny; external snmpapilib name 'SnmpUtilPrintAsnAny';
function SnmpSvcGetUptime; external snmpapilib name 'SnmpSvcGetUptime';
procedure SnmpSvcSetLogLevel; external snmpapilib name 'SnmpSvcSetLogLevel';
procedure SnmpSvcSetLogType; external snmpapilib name 'SnmpSvcSetLogType';
procedure SnmpUtilDbgPrint; external snmpapilib name 'SnmpUtilDbgPrint';
{$IFNDEF SNMPSTRICT}
function SNMP_oidcpy; external snmpapilib name 'SnmpUtilOidCpy';
function SNMP_oidappend; external snmpapilib name 'SnmpUtilOidAppend';
function SNMP_oidncmp; external snmpapilib name 'SnmpUtilOidNCmp';
function SNMP_oidcmp; external snmpapilib name 'SnmpUtilOidCmp';
procedure SNMP_oidfree; external snmpapilib name 'SnmpUtilOidFree';
function SNMP_CopyVarBind; external snmpapilib name 'SnmpUtilVarBindCpy';
procedure SNMP_FreeVarBind; external snmpapilib name 'SnmpUtilVarBindFree';
function SNMP_CopyVarBindList; external snmpapilib name 'SnmpUtilVarBindListCpy';
procedure SNMP_FreeVarBindList; external snmpapilib name 'SnmpUtilVarBindListFree';
procedure SNMP_printany; external snmpapilib name 'SnmpUtilPrintAsnAny';
procedure SNMP_free; external snmpapilib name 'SnmpUtilMemFree';
function SNMP_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
function SNMP_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
procedure SNMP_DBG_free; external snmpapilib name 'SnmpUtilMemFree';
function SNMP_DBG_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
function SNMP_DBG_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
{$ENDIF ~SNMPSTRICT}
{$ENDIF SNMP_DYNAMIC_LINK}
{$IFDEF SNMP_DYNAMIC_LINK}
{$IFNDEF SNMP_DYNAMIC_LINK_EXPLICIT}
initialization
LoadSnmp;
finalization
UnloadSnmp;
{$ENDIF ~SNMP_DYNAMIC_LINK_EXPLICIT}
{$ENDIF SNMP_DYNAMIC_LINK}
// History:
// $Log: Snmp.pas,v $
// Revision 1.8 2004/10/17 21:00:16 mthoma
// cleaning
//
// Revision 1.7 2004/06/16 07:30:31 marquardt
// added tilde to all IFNDEF ENDIFs, inherited qualified
//
// Revision 1.6 2004/06/14 13:05:22 marquardt
// style cleaning ENDIF, Tabs
//
// Revision 1.5 2004/05/05 05:32:38 rrossmair
// CVS key word typo corrected: $Data$ -> $Date: 2004/10/17 21:00:16 $
//
// Revision 1.4 2004/04/06 04:59:07
// adapt compiler conditions, add log entry
//
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -