Bonjour,

Je développe pour le moment une petite application C qui permet de lire des informations contenues dans la Mib via SNMP.
J'ai pour le moment un code qui est sensé le faire, mais j'ai un problème pour la récupération des résultats.

Tout d'abord voici ma fonction qui retourne les résultats à afficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
char *SnmpUtilPrintAsnAny2(AsnAny *any)
{
    char *buffer = new char[300];
    unsigned int i;
 
    sscanf(buffer, "(%p)\n", any);
 
    switch (any->asnType)
    {
 
    case ASN_OCTETSTRING:
    {
        sscanf(buffer, "String ");
        for (i = 1; i < any->asnValue.string.length; i++)
            sscanf(buffer, "%c", any->asnValue.string.stream[i]);
        sscanf(buffer, "\n");
        return buffer;
    }
 
    default:
    {
        sscanf(buffer, "Invalid type %d\n", any->asnType);
        return buffer;
    }
    }
}
Je n'ai que le " case ASN_OCTETSTRING" dans l'exemple car c'est celui que j'essaie de fairefonctionner pour le moment.

Au cas ou, voila toujours le code avant l'appel de ma fonction si ca peut aider a y voir plus clair.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
        LPSNMP_MGR_SESSION session = SnmpMgrOpen("127.0.0.1", "public", 3000, 10);
        if (session == NULL)
                Label1->Caption="Erreur";
        else
                Label1->Caption="Valides";
 
 
        AsnObjectIdentifier OID;
        LPSTR oidstring = NULL;
        oidstring=".1.3.6.1.2.1.1.1";
         //SnmpMgrStrToOid Converti le string en OID
	SnmpMgrStrToOid(oidstring, &OID) ;
 
 
	RFC1157VarBindList variableBindingList;
        variableBindingList.len = 1;
        //allocation de mémoire pour la demande sur la MIB
        variableBindingList.list =(RFC1157VarBind*)(SnmpUtilMemAlloc(sizeof(RFC1157VarBind))) ;
        variableBindingList.list[0].name = OID;
	AsnInteger errorStatus=0;
	AsnInteger errorIndex=0;
        variableBindingList.list[0].value.asnType = ASN_NULL;
 
         if (SnmpMgrRequest(session, ASN_RFC1157_GETNEXTREQUEST, &variableBindingList, &errorStatus, &errorIndex)==0)
               Label1->Caption="Erreur";
         else
               Label1->Caption="Valide";
 
        Label1->Caption = SnmpUtilPrintAsnAny2(&variableBindingList.list[0].value);
Donc, mon problème est que la fonction "SnmpUtilPrintAsnAny2" qui doit retourner le buffer avec les résultats, ben ne retourne rien. Et j'arrive pas a voir pourquoi :s
Si quelqu'un avait une idée, je suis preneur.
Merci d'avance.

Edit: désolé pour le double post, j'ai du crée en pensant prévisualiser