SNMP API windows valeur en char*
Bonjour à tous,
Je travail sous VisualC++ 2008.
Je developpe une application qui interroge les mibs des routeurs et utilise les résultats par la suite, voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
SnmpVarBindList snmpVarList;
AsnInteger errorStatus,errorIndex;
snmpVarList.list = NULL;
snmpVarList.len = 1;
snmpVarList.list = (SnmpVarBind *)realloc(snmpVarList.list, sizeof(SnmpVarBind) *snmpVarList.len);
LPSNMP_MGR_SESSION session;
char resultat[MAX_PATH];
//ouverture de session (ip + type: private/public)
session = SnmpMgrOpen("192.168.12.3","com_tmp",1000,3);
if (session!=0)
{ SnmpMgrStrToOid(".1.3.6.1.3.59.1.1.1.1.5.10102",&snmpVarList.list->name);
if (SnmpMgrRequest(session,SNMP_PDU_GET,&snmpVarList,&errorStatus,&errorIndex)!=0)
{ if (errorStatus==SNMP_ERRORSTATUS_NOERROR)
{ SnmpUtilPrintAsnAny(&snmpVarList.list->value);
}
}
char test[200];
initialise_tableau_char(test,sizeof(test),'\0');
strcpy(test,(char*)snmpVarList.list->value.asnValue.address.stream);
//fermeture
SnmpMgrClose(session);
} |
Je voudrais recuperer la valeur de la variable ayant cet OID ".1.3.6.1.3.59.1.1.1.1.5.10102". J'essaye de travailler sur "snmpVarList.list->value.asnValue.address.stream" qui est un BYTE*, du moins c'est l'info que me donne visual lorsque je passe mon curseur de souris dessus!
Car lorsque je lance en mode pas à pas, je me rend compte que cette variable est en fait un "unsigned char":
http://nsa28.casimages.com/img/2011/...3352890329.jpg
Le resultat que je doit trouver est une adresse ip commencant par 172.x.x.x
J'ai donc essayé de faire tout simplement un casting, le problème: je ne recupère pas le "172" mais le '¬', comment faire?
Merci d'avance