我刚刚开始使用WinSNMP (在Visual Studio2005中),并且已经编写了以下代码。(这是一段代码片段。)
m_Status = SnmpStartup(&m_MajorVersion, &m_MinorVersion, &m_Level, &m_TranslateMode, &m_RetransmissionMode);
ASSERT(m_Status != SNMPAPI_FAILURE);
m_SnmpSession = SnmpCreateSession(GetSafeHwnd(), WM_SNMP_TEST, &CallBackFunction, NULL);
ASSERT(m_SnmpSession != SNMPAPI_FAILURE);
SnmpStrToOid("1.3.6.1.2.1.1.3.0", m_pIOD);
m_Status = SnmpRegister(&m_SnmpSession, m_pSrcEntity, m_pDstEntity, m_pContext, m_pIOD, SNMPAPI_ON);
SNMPAPI_STATUS temp = SnmpGetLastError(m_SnmpSession);
ASSERT(m_Status != SNMPAPI_FAILURE);CallBackFunction定义为:
SNMPAPI_STATUS CALLBACK CallBackFunction
(HSNMP_SESSION hSession=0, HWND hWnd=0, UINT wMsg=0,
WPARAM wParam=0, LPARAM lParam=0, LPVOID lpClientData=0)
{
return (SNMPAPI_SUCCESS);
}在本例中,m_pSrcEntity、m_pDstEntity、m_pContext为空。我已经将WM_SNMP_TEST注册为一条Windows消息。
第一个断言成功。m_SnmpSession在调用SnmpCreateSession()时获得值0x00000001,因此second ASSERT也会成功。这正常吗?我的意思是,会话可以有提到的价值吗?然后SnmpRegister()失败,SnmpGetLastError()返回1。我的Windows SNMP和SNMP Trap服务正在运行。我做错了什么?
发布于 2011-12-05 21:56:51
问题是我将LPHSNMP_ENTITY, LPHSNMP_CONTECXT, LPHSNMP_SESSION, etc传递给需要HSNMP_ENTITY, HSNMP_CONTECXT, HSNMP_SESSION, etc的函数。Visual Studio即使在运行时也无法检测到这些错误,因为这些错误基本上都是处理过的。
但是我仍然想知道m_SnmpSession的值是否可以是0x1。实际上,我创建的任何Source/Destination实体总是等同于0x1。I am confused because they are all HANDLEs, and can 2 handles be the same? Any ideas?
编辑:它成功了。
https://stackoverflow.com/questions/8385381
复制相似问题