Partager via


fonction ber_scanf (winber.h)

La fonction ber_scanf décode un élément BER de la même manière que sscanf_s. Une différence importante est que certains états status données sont conservés avec l’argument BerElement, de sorte que plusieurs appels peuvent être effectués pour ber_scanf à lire séquentiellement à partir de l’élément BER. L’argument BerElement doit être un pointeur vers un élément BerElement retourné par ber_init.

Syntaxe

WINBERAPI ULONG BERAPI ber_scanf(
  [in, out] BerElement *pBerElement,
  [in]      PSTR       fmt,
            ...        
);

Paramètres

[in, out] pBerElement

Pointeur vers la structure BerElement décodée.

[in] fmt

Chaîne de format d’encodage. Pour plus d’informations, consultez la section Remarques.

...

Pointeurs vers les variables utilisées pour contenir les valeurs décodées telles que spécifiées par l’argument fmt .

Valeur retournée

En cas d’erreur, la fonction retourne LBER_ERROR.

Remarques

La fonction interprète les octets en fonction de la chaîne de format fmt et stocke les résultats dans ses arguments supplémentaires. La chaîne de format contient les spécifications de conversion utilisées pour diriger l’interprétation de l’élément BER. La chaîne de format peut contenir des caractères répertoriés dans le tableau suivant.

Caractère Description
a Chaîne d’octets. Un argument char** doit être fourni. La mémoire est allouée, remplie avec le contenu de la chaîne d’octets, terminée sans fin, et le pointeur vers la chaîne est stocké dans l’argument. La valeur retournée doit être libérée à l’aide de ldap_memfree. La balise de l’élément doit indiquer la forme primitive (les chaînes construites ne sont pas prises en charge), mais elle est sinon ignorée et ignorée pendant le décodage. Ce format ne peut pas être utilisé avec des chaînes d’octets qui peuvent contenir des octets null.
O Chaîne d’octets. Un argument berval** doit être fourni, qui, lors du retour, pointe vers un berval alloué qui contient la chaîne d’octets et sa longueur. ber_bvfree doit être appelé pour libérer la mémoire allouée. La balise de l’élément doit indiquer la forme primitive (les chaînes construites ne sont pas prises en charge), mais elle est ignorée pendant le décodage.
b Boolean. Un pointeur vers un ber_int_t doit être fourni. La valeur ber_int_t stockée est 0 pour FALSE ou différente de zéro pour TRUE. La balise de l’élément doit indiquer la forme primitive, mais elle est ignorée pendant le décodage.
e Énuméré. Un pointeur vers un ber_int_t doit être fourni. La balise de l’élément doit indiquer la forme primitive, mais elle est ignorée pendant le décodage. ber_scanf retourne une erreur si la valeur de la valeur énumérée ne peut pas être stockée dans un ber_int_t.
i Integer. Un pointeur vers un ber_int_t doit être fourni. La balise de l’élément doit indiquer la forme primitive, mais est sinon ignorée lors du décodage. ber_scanf retourne une erreur si l’entier ne peut pas être stocké dans un ber_int_t.
B Chaîne de bits. Un argument char** doit être fourni qui pointe vers les bits alloués, suivi d’un argument ber_len_t *, qui pointe vers la longueur (en bits) de la chaîne de bits retournée. ldap_memfree doit être appelé pour libérer la chaîne de bits. La balise de l’élément doit indiquer la forme primitive (les chaînes de bits construites ne sont pas prises en charge), mais elle est sinon ignorée pendant le décodage.
n Null. Aucun argument n’est requis. L’élément est vérifié comme ayant une valeur de longueur nulle et est ignoré. La balise est ignorée.
t Balise. Un pointeur vers un ber_tag_t doit être fourni. La valeur ber_tag_t stockée sera la balise de l’élément suivant dans le pBerElement, représenté afin qu’il puisse être écrit au format t de ber_printf. La position de décodage dans l’argument pBerElement est donc inchangée.
C Plusieurs chaînes d’octets. Un argument char*** doit être fourni, qui, lors du retour, pointe vers un tableau null alloué de char *'s qui contient les chaînes d’octets. La valeur NULL est stockée si la séquence est vide. ldap_memfree doit être appelé pour libérer chaque élément du tableau et le tableau lui-même. La balise de la séquence et des chaînes d’octets sont ignorées.
V Plusieurs chaînes d’octets (qui peuvent contenir des octets null). Un berval*** doit être fourni, qui, lors du retour, pointe vers un tableau null alloué de berval* contenant les chaînes d’octets et leurs longueurs. La valeur NULL est stockée si la séquence est vide. ber_bvecfree peut être appelé pour libérer la mémoire allouée. La balise de la séquence et des chaînes d’octets sont ignorées.
x Élément Skip. L’élément suivant est ignoré. Aucun argument n’est requis.
{ Séquence de début. Aucun argument n’est requis. L’étiquette de séquence et la longueur initiales sont ignorées.
} Séquence de fin. Aucun argument n’est requis.
[ Commencer l’ensemble. Aucun argument n’est requis. La balise et la longueur initiales de l’ensemble sont ignorées.
] Jeu de fin. Aucun argument n’est requis.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête winber.h
Bibliothèque Wldap32.lib
DLL Wldap32.dll

Voir aussi

BerElement

Fonctions

ber_printf

berval