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

📄 wsnmp_db.c

📁 windows的snmp api源码
💻 C
字号:
// wsnmp_db.c
//
// WinSNMP Local Database Functions and helpers
// Copyright 1995-1997 ACE*COMM Corp
// Rleased to Microsoft under Contract
// Beta 1 version, 970228
// Bob Natale (bnatale@acecomm.com)
//
#include "winsnmp.inc"

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpGetVendorInfo (OUT smiLPVENDORINFO vendorInfo)
{
SNMPAPI_STATUS lError;
if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
if (vendorInfo == NULL)
   {
   lError = SNMPAPI_NOOP;
   goto ERROR_OUT;
   }
if (IsBadWritePtr(vendorInfo, sizeof(smiVENDORINFO)))
   {
   lError = SNMPAPI_ALLOC_ERROR;
   goto ERROR_OUT;
   }
// Max len = 64
lstrcpy (&vendorInfo->vendorName[0], "Microsoft Corporation");
lstrcpy (&vendorInfo->vendorContact[0], "snmpinfo@microsoft.com");
// Max len = 32
lstrcpy (&vendorInfo->vendorVersionId[0], "v2.32.19980808");
lstrcpy (&vendorInfo->vendorVersionDate[0], "August 8, 1998");
vendorInfo->vendorEnterprise = 311;
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpGetVendorInfo()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpGetTranslateMode (OUT smiLPUINT32 nTranslateMode)
{
SNMPAPI_STATUS lError;
if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
// Must have some place to write answer to...
if (IsBadWritePtr (nTranslateMode, sizeof(smiUINT32)))
   {
   lError = SNMPAPI_ALLOC_ERROR;
   goto ERROR_OUT;
   }
// Ok to write value
*nTranslateMode = TaskData.nTranslateMode;
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpGetTranslateMode()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpSetTranslateMode (IN smiUINT32 nTranslateMode)
{
SNMPAPI_STATUS lError;
if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
switch (nTranslateMode)
   {
   case SNMPAPI_TRANSLATED:
   case SNMPAPI_UNTRANSLATED_V1:
   case SNMPAPI_UNTRANSLATED_V2:
   EnterCriticalSection (&cs_TASK);
   TaskData.nTranslateMode = nTranslateMode;
   LeaveCriticalSection (&cs_TASK);
   break;

   default:
   lError = SNMPAPI_MODE_INVALID;
   goto ERROR_OUT;
   }
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpSetTranslateMode()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpGetRetransmitMode (OUT smiLPUINT32 nRetransmitMode)
{
SNMPAPI_STATUS lError;
if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
// Must have some place to write answer to...
if (IsBadWritePtr (nRetransmitMode, sizeof(smiUINT32)))
   {
   lError = SNMPAPI_ALLOC_ERROR;
   goto ERROR_OUT;
   }
// Ok to write value
*nRetransmitMode = TaskData.nRetransmitMode;
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpGetRetransmitMode()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpSetRetransmitMode (IN smiUINT32 nRetransmitMode)
{
SNMPAPI_STATUS lError;
if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
if (nRetransmitMode != SNMPAPI_OFF && nRetransmitMode != SNMPAPI_ON)
   {
   lError = SNMPAPI_MODE_INVALID;
   goto ERROR_OUT;
   }
EnterCriticalSection (&cs_TASK);
TaskData.nRetransmitMode = nRetransmitMode;
LeaveCriticalSection (&cs_TASK);
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpSetRetransmitMode()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpGetTimeout (IN  HSNMP_ENTITY hEntity,
                   OUT smiLPTIMETICKS nPolicyTimeout,
                   OUT smiLPTIMETICKS nActualTimeout)
{
DWORD nEntity;
SNMPAPI_STATUS lError;
LPENTITY pEntity;

if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
nEntity = HandleToUlong(hEntity) - 1;
if (!snmpValidTableEntry(&EntsDescr, nEntity))
   {
   lError = SNMPAPI_ENTITY_INVALID;
   goto ERROR_OUT;
   }
pEntity = snmpGetTableEntry(&EntsDescr, nEntity);

if (!nPolicyTimeout && !nActualTimeout)
   {
   lError = SNMPAPI_NOOP;
   goto ERROR_OUT;
   }
// Intervals are specified and stored as centiseconds
if (nPolicyTimeout)
   {
   if (IsBadWritePtr (nPolicyTimeout, sizeof(smiTIMETICKS)))
      {
      lError  = SNMPAPI_ALLOC_ERROR;
      goto ERROR_OUT;
      }
   *nPolicyTimeout = pEntity->nPolicyTimeout;
   }
if (nActualTimeout)
   {
   if (IsBadWritePtr (nActualTimeout, sizeof(smiTIMETICKS)))
      {
      lError  = SNMPAPI_ALLOC_ERROR;
      goto ERROR_OUT;
      }
   *nActualTimeout = pEntity->nActualTimeout;
   }
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpGetTimeout()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpSetTimeout (IN HSNMP_ENTITY hEntity,
                   IN smiTIMETICKS nPolicyTimeout)
{
DWORD nEntity;
SNMPAPI_STATUS lError;
LPENTITY pEntity;

if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
nEntity = HandleToUlong(hEntity) - 1;
if (!snmpValidTableEntry(&EntsDescr, nEntity))
   {
   lError = SNMPAPI_ENTITY_INVALID;
   goto ERROR_OUT;
   }
pEntity = snmpGetTableEntry(&EntsDescr, nEntity);
EnterCriticalSection (&cs_ENTITY);
// Timeout interval is specified and stored in centiseconds
pEntity->nPolicyTimeout = nPolicyTimeout;
LeaveCriticalSection (&cs_ENTITY);
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpSetTimeout()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpGetRetry (IN HSNMP_ENTITY hEntity,
                 OUT smiLPUINT32 nPolicyRetry,
                 OUT smiLPUINT32 nActualRetry)
{
DWORD nEntity;
SNMPAPI_STATUS lError;
LPENTITY pEntity;

if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
nEntity = HandleToUlong(hEntity) - 1;
if (!snmpValidTableEntry(&EntsDescr, nEntity))
   {
   lError = SNMPAPI_ENTITY_INVALID;
   goto ERROR_OUT;
   }
pEntity = snmpGetTableEntry(&EntsDescr, nEntity);
if (!nPolicyRetry && !nActualRetry)
   {
   lError = SNMPAPI_NOOP;
   goto ERROR_OUT;
   }
if (nPolicyRetry)
   {
   if (IsBadWritePtr (nPolicyRetry, sizeof(smiUINT32)))
      {
      lError = SNMPAPI_ALLOC_ERROR;
      goto ERROR_OUT;
      }
   *nPolicyRetry = pEntity->nPolicyRetry;
   }
if (nActualRetry)
   {
   if (IsBadWritePtr (nActualRetry, sizeof(smiUINT32)))
      {
      lError = SNMPAPI_ALLOC_ERROR;
      goto ERROR_OUT;
      }
   *nActualRetry = pEntity->nActualRetry;
   }
return (SNMPAPI_SUCCESS);
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpGetRetry()

SNMPAPI_STATUS SNMPAPI_CALL
   SnmpSetRetry (IN HSNMP_ENTITY hEntity,
                 IN smiUINT32 nPolicyRetry)
{
DWORD nEntity;
SNMPAPI_STATUS lError;
LPENTITY pEntity;

if (TaskData.hTask == 0)
   {
   lError = SNMPAPI_NOT_INITIALIZED;
   goto ERROR_OUT;
   }
nEntity = HandleToUlong(hEntity) - 1;
if (!snmpValidTableEntry(&EntsDescr, nEntity))
   {
   lError = SNMPAPI_ENTITY_INVALID;
   goto ERROR_OUT;
   }
pEntity = snmpGetTableEntry(&EntsDescr, nEntity);

EnterCriticalSection (&cs_ENTITY);
pEntity->nPolicyRetry = nPolicyRetry;
LeaveCriticalSection (&cs_ENTITY);
return (SNMPAPI_SUCCESS);
//
ERROR_OUT:
return (SaveError (0, lError));
} // end_SnmpSetRetry()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -