首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中对SNMP的帮助?

在C++中对SNMP的帮助?
EN

Stack Overflow用户
提问于 2011-07-12 01:36:45
回答 2查看 2.8K关注 0票数 2

我正在尝试用C++中的WinSnmp编写一个简单的程序。关于这方面的信息很少,我完全不知所措。我所要做的就是查询我网络上的打印机,并读取发送给我的信息。下面是我的代码:

代码语言:javascript
复制
#include <WinSnmp.h>
#include <stdio.h>

smiLPUINT32 majorVers;
smiLPUINT32 minorVers;
smiLPUINT32 nLevel;
smiLPUINT32 translateMode;
smiLPUINT32 retranslateMode;

BYTE pdu;


int main()
{
    //Starting the snmp session
    SnmpStartup(majorVers, minorVers, nLevel, translateMode, retranslateMode);

    printf("%i majorVers \n %i minorVers \n "
           "%i nLevel \n "
           "%i translateMode \n "
           "%i retranslateMode \n\n", 
           majorVers, minorVers, nLevel, translateMode, retranslateMode);


    SnmpCleanup();
}

到目前为止,我一直在关注API,试图弄清楚程序应该是如何构造的,但是完全基于API编写程序是很困难的。

我在网上找不到任何好的教程、代码示例或有用的文档。我想知道是否有人知道任何可以引导我走向正确方向的东西,例如工作代码片段或有用的教程,那就太好了。提前感谢:)

编辑:我已经取得了一些进展,但我仍然卡住了。我正在尝试计算控制台窗口的值,以便可以将其传递给SnmpCreateSession函数,但我遇到了问题。下面是我更新的代码:

代码语言:javascript
复制
#include <WinSnmp.h>
#include <stdio.h>
#define MY_BUFSIZE 1024 // Buffer size for console window titles.

smiLPUINT32 majorVers;
smiLPUINT32 minorVers;
smiLPUINT32 nLevel;
smiLPUINT32 translateMode;
smiLPUINT32 retranslateMode;

HWND window;
HWND hwndFound;

char* returnInfo;
char newWindowTitle[MY_BUFSIZE];
char oldWindowTitle[MY_BUFSIZE];

LPWSTR consoleTitle;
BYTE pdu = 1;

void Startup(){

    //Starting the snmp session
    SnmpStartup(majorVers, minorVers, nLevel, translateMode, retranslateMode);

    printf("%i majorVers \n"
           "%i minorVers \n"
           "%i nLevel \n"
           "%i translateMode \n"
           "%i retranslateMode \n\n", 
            majorVers, minorVers, nLevel, translateMode, retranslateMode);

    GetConsoleTitle(oldWindowTitle, MY_BUFSIZE);
    hwndFound = FindWindow(NULL, oldWindowTitle);

}

void CreateSession(){

    SnmpCreateSession(window,5,0,0);
    printf("create session returns: %s", SnmpCreateSession(window,5,0,0));

}

int main(){

    Startup();
    CreateSession();
    SnmpCleanup();
}

在这一点上,我最终得到的所有值都是NULL ...我不知道下一步该怎么办。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-13 00:01:14

对于out参数(如发送给SnmpStartup的参数),传递将接收值的UINT32s的地址:

代码语言:javascript
复制
smiUINT32 majorVers;
smiUINT32 minorVers;
smiUINT32 nLevel;
smiUINT32 translateMode;
smiUINT32 retranslateMode;

SnmpStartup(&majorVers, &minorVers, &nLevel, &translateMode, &retranslateMode);

可能会有更多的错误,但这可能会让你超过一垒。

票数 2
EN

Stack Overflow用户

发布于 2011-07-12 04:37:32

几年前,我不得不为一个Windows应用程序做一个SNMP模块,由于缺乏文档和在线资源,我最终购买了以下书籍:

  • Windows NT SNMP (非常古老但非常有用,它提供了示例code)
  • Essential SNMP
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6654076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档