⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snmp.pas

📁 East make Tray Icon in delphi
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  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 + -