SNMP Programm mithilfe von WinSNMP

Hallo zusammen.
Als erstes muss ich hier sagen, das google in meinem Fall die reinste Unwissenheit war. Ausser der MSDN Doku (welche ich schon kannte) habe ich rein nichts herausgefunden.

Ich bitte nun Inständig um eure Hilfe, denn ich weiss das hier super Leute sitzen, von denen ein/zwei vielleicht schon einmal damit gearbeitet haben.

Ich muss ein kleinen SNMP Get und Setter Schreiben, für windows, mithilfe von der Winint.h unf winsnmp.h. Ich stecke aber schon bei der Öffnung der Schnittstelle fest, denn SnmpStartup() funktioniert bei mir einfach nicht. Folgender Code habe ich schon ausprobiert:

Die Includes sind immer die selben:

#include
#include
#include
#include
#include
#include
using namespace std;
#pragma comment(lib, „Wininet.lib“)

und dann habe ich folgendes schon ausprobiert, um SNMP zu initialisieren:

_________>
SNMPAPI_STATUS SnmpStartup ( OUT smiLPUINT32 nMajorVersion, OUT smiLPUINT32 nMinorVersion, OUT smiLPUINT32 nLevel, OUT smiLPUINT32 nTranslateMode, OUT smiLPUINT32 nRetransmitMode);
if(SNMPAPI_SUCCESS)

gibt den Fehler: „error C2373: ‚SnmpStartup‘ : redefinition; different type modifiers“
Zurück.

_________>
unsigned long imajor = 2;
unsigned long *major;
major = &imajor;
unsigned long iminor = 2;
unsigned long *minor;
minor = &iminor;
SNMPAPI_STATUS SnmpStartup(major,minor,SNMPAPI_V2_SUPPORT,SNMPAPI_UNTRANSLATED_V2,SNMPAPI_ON)

gibt Fehler: „error C2078: too many initializers“

_________>
unsigned long imajor = 2;
unsigned long *major;
major = &imajor;
unsigned long iminor = 2;
unsigned long *minor;
minor = &iminor;
if(SnmpStartup(major,minor,SNMPAPI_V2_SUPPORT,SNMPAPI_UNTRANSLATED_V2,SNMPAPI_ON) == SNMPAPI_SUCCESS)
cout

Ich vermute mal, das ist C+±Code. Ich kann kein C++. Aber dein erster Funktionsaufruf scheint mir der Versuch einer Überlagerung zu sein. Die Funktion SnmpStartup() ist doch bereits in der Bibliothek deklariert und definiert. Du brauchst sie nur noch zu benutzen.

Beim zweiten Versuch hast du Integer und Pointer verwechselt. Laut http://msdn.microsoft.com/en-us/library/aa378273%28v… sind alle Parameter Pointer! Du hättest also die Vorgehensweise von major und minor einfach fortführen müssen.

Die Fehlermeldung enthält schon des Rätsels Lösung.
Die Funktion erwartet für jeden Parameter einen Pointer. SNMPAPI_V2_SUPPORT ist aber „const int“. Das heißt du musst für die Konstanten auch Variablen definieren, den Wert zuweisen und dann der Funktion übergeben.
Du brauchst auch keine extra Pointer definieren. Du kannst einfach &imajor übergeben.
Für SNMPAPI_V2_SUPPORT würde es so aussehen:

unsigned long nLevel = SNMPAPI_V2_SUPPORT;
dann übergeben als &nLevel

Hallo,

habe mit SNMP noch nichts zu tun gehabt. Aber schau doch z.B. mal beio www.codeproject.com:

Da gibt es einen C+±Wrapper

http://www.codeproject.com/KB/library/WinSNMPWrapper…

Vielleicht hilft das weiter.

Hallo,
leider habe ich damit nie gearbeitet und kann dir nicht weiterhelfen.

Danke für den Tipp!
Hat mir geholfe, es funktioniert wenn man alle Parameter einfach als Pointer übergibt. Danke sehr!

Das wars. danke sehr!!!