2011-07-11 49 views
2

我想在C++中使用WinSnmp編寫一個簡單的程序。這方面的信息很少,我完全失去了信心。我想要做的就是查詢我的網絡上的打印機&閱讀發送給我的信息。這裏是我的代碼:C++中的SNMP幫助?

#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函數,但我有問題。繼承人我的更新代碼:

#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 ...我不知道下一步該怎麼做。

+2

這更像是C代碼。你甚至使用C++中不推薦使用的頭文件。 –

+0

您是否允許在同一窗口調用兩次'SnmpCreateSession'? – RedX

+0

我感到OP的挫敗感。 Windows SNMP有很多文檔問題。 – EhevuTov

回答

2

對於 PARAMS像的那些到SnmpStartup,通過UINT32s將REC的地址eive the values:

smiUINT32 majorVers; 
smiUINT32 minorVers; 
smiUINT32 nLevel; 
smiUINT32 translateMode; 
smiUINT32 retranslateMode; 

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

可能有更多的錯誤,但這可能會讓你過去第一個基地。

+0

謝謝!我必須將每個參數的類型設置爲(smiLPUINT32)才能編譯,但現在所有的值都成功返回了。 – Ashton

+1

@阿什頓 - 啊。使用smiUINT32應該擺脫演員陣容。更新的代碼片段... – Roddy

+0

再次:)謝謝。現在,我從哪裏出發? – Ashton

2

我不得不在幾年前做一個Windows應用程序中的SNMP模塊,並由於缺乏文檔和在線資源,我最後買了以下書籍: