📄 smmapp.h
字号:
#ifndef _SMMAPP_H
#define _SMMAPP_H
/*SNMP操作错误信息 */
#define SNMP_NOERROR 1
#define SNMP_NOSUCHNAME 2
#define SNMP_READONLY 3
#define SNMP_GENERR 4
/*操作类型*/
#define SNMP_GET 1
#define SNMP_REPLY 2
#define SNMP_SET 3
#define SNMP_TRAP 4
/*函数返回错误信息*/
#define SUCCESS 0 /*成功*/
#define ERROR_DECODEMSG_MEM 1 /*解释帧内存分配错误*/
#define ERROR_DECODEMSG_FRAME 2 /*帧格式错误*/
#define ERROR_SOCKET_CREATE 3 /*创建socket错误*/
#define ERROR_SOCKET_CONNECT 4 /*socket连接错误*/
#define ERROR_SOCKET_SEND 5 /*socket发送错误*/
#define ERROR_TRAPHANDLE_NOTINIT 6 /*trap句柄未初始化*/
#define ERROR_TRAPHANDLE_MEM 7 /*trap句柄内存分配错误*/
#define ERROR_TRAPHANDLE_NOMATCH 8
#define ERROR_WINSOCK_STARTUP 9/*Winsock启动错误*/
#define ERROR_THREAD_CREATE 10
#define ERROR_DECODEMSG_TYPE 11
#define ERROR_SNMPPDU_TYPE 12
#define ERROR_PROFILE_KEY 13
/*数据类型*/
#define SNMP_TYPE_INTEGER32 1
#define SNMP_TYPE_STRING 2
/*Get数据结构 */
typedef struct
{
char* pParamname;
unsigned short nInstance;
unsigned char bType;
}GETSTRUCT;
/*Set数据结构*/
typedef struct
{
char* pParamName;
unsigned short nInstance;
unsigned char bType;
unsigned short nLen;
unsigned char* szValue;
}SETSTRUCT;
/*Response数据结构*/
typedef struct{
unsigned char bRetCode; //返回错误代码
SETSTRUCT info;
}REPLYSTRUCT;
/*Trap数据结构*/
typedef struct
{
char* szEnterpriseOid; //产生Trap消息的企业OID
unsigned char generic; //RFC MIB-II规定的Trap的ID
unsigned char specific; //自定义的Trap的ID
SETSTRUCT* pInfo;
unsigned short nNum; /*pInfo的个数,小于256*/
} TRAPSTRUCT;
/*SNMP数据帧结构 */
typedef struct
{
unsigned char bPacketType;
union{
GETSTRUCT get_packet;
SETSTRUCT set_packet;
REPLYSTRUCT reply_packet;
TRAPSTRUCT trap_packet;
} packet_info;
}SNMPPACKET;
//读监控参数回调函数原型
//输入: char* pParamName - 监控参数名
// unsigned short nInstance - 监控参数的事例号
// unsigned char bType - 数据类型
//输出: unsigned char* szValue - 值
// unsigned short* pLen - 值长度
//返回值: SNMP操作错误信息
typedef unsigned short (*READPARAM) (char* pParamName, unsigned short nInstance,unsigned char bType,unsigned char* szValue,unsigned short* pLen);
//写字符串型监控参数回调函数原型
//输入: char* pParamName - 监控参数名
// unsigned short nInstance - 监控参数的事例号
// unsigned char bType - 数据类型
// unsigned char* szValue - 值
// unsigned short* pLen - 值长度
//返回值: SNMP操作错误信息
typedef unsigned short (*WRITEPARAM) (char* pParamName/*监控参数名*/, unsigned short nInstance/*监控参数的事例号*/,unsigned char bType/*数据类型*/,unsigned char* szValue/*值*/,unsigned short nLen/*值长度*/);
/*--------------------------------------------------------------------*
*
* 函数声明
*
*----------------------------------------------------------------------*/
//DLL初始化,返回初始化成功或错误结果
//输入: READPARAM pReadParamFunc: 读监控参数的回调函数指针
// WRITEPARAM pWriteParamFunc: 写监控参数的回调函数指针
//输出:
//返回:SUCCESS - 调用成功
// ERROR_THREAD_CREATE - 线程创建错误
unsigned short Init(READPARAM pReadParamFunc, WRITEPARAM pWriteParamFunc,char* szSection);
//DLL关闭
//返回:SUCCESS - 成功
//
//功能: 关闭子线程
unsigned short Close();
/*子线程函数,从SNMP扩展代理接收消息并处理*/
DWORD WINAPI ReceiveMsg(LPVOID lpvParam);
/* 释放一个Trap句柄
输入:void* pTrapHandle: 要释放的内存地址
输出:
返回: SUCCESS - 成功
功能: 将InitTrap分配的内存释放*/
unsigned short FreeTrapHandle(void* pTrapHandle);
/* 初始化一个Trap句柄
输入: char* szEnterpriseOid: Trap所属的企业Oid
unsigned char generic: 若产生的Trap消息为RFC MIB-II规定的,则在此变量设置相应数值,否则为0
unsigend char specific: 若产生的Trap消息为企业自定义的Trap消息,则在此变量设置相应数值,否则为0
输出: void* pTrapHandle: 是一个TRAPSTRUCT类型的指针.
返回: Trap句柄,当NULL时表示函数执行错误
功能:
根据输入参数分配内存并将指针返回*/
void* InitTrapHandle( char* szEnterpriseOid,unsigned char generic,unsigned char specific);
/*写Trap消息
输入:
void* pTrapHandle : Trap的句柄
char* pParamName: 监控参数名,当Trap消息不与任何监控参数相关时,此参数设为NULL
unsigned short nInstance: 监控参数事例
unsigned char bType: 监控参数数据类型
unsigned char* szValue: 监控参数的值,当Trap消息不与任何监控参数相关时,此参数设为NULL
unsigned short nLen : 值长度,当szValue为NULL时,此值为0
返回:ERROR_TRAPHANDLE_NOTINIT - 输入的Trap句柄未初始化
ERROR_TRAPHANDLE_MEM - 内存分配错误*/
unsigned short WriteTrap(void* pTrapHandle, char* pParamName, unsigned short nInstance/*监控参数的事例号*/,unsigned char bType/*数据类型*/,unsigned char* szValue/*值*/,unsigned short nLen/*值长度*/);
/* 发送Trap消息
返回: ERROR_TRAPHANDLE_SEND - 向SNMP扩展代理发送消息错误
ERROR_TRAPHANDLE_NOTINIT - 输入的Trap句柄未初始化
SUCCESS */
unsigned short SendTrap(void* pTrapHandle);
//将32位无符号整型转换成字符串
//输入: unsigned long nVal: 整型数据
//输出: unsigned char* szStr: 转换后的字符串
//返回: 字符串长度
unsigned short UInt32ToStr(unsigned char* szStr, unsigned long nVal);
//将字符串转换为32位无符号整型
//输入: unsigned char* szStr: 要转换的字符串
//返回: unsigned long& nVal: 转换后的整数值
//
unsigned long StrToUInt32(unsigned char* szStr);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -