Compartir a través de


función ber_scanf (winber.h)

La función ber_scanf descodifica un elemento BER de forma similar a sscanf_s. Una diferencia importante es que algunos datos de estado se mantienen con el argumento BerElement para que se puedan realizar varias llamadas a ber_scanf para leer secuencialmente desde el elemento BER. El argumento BerElement debe ser un puntero a un BerElement devuelto por ber_init.

Sintaxis

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

Parámetros

[in, out] pBerElement

Puntero a la estructura BerElement descodificada.

[in] fmt

Cadena de formato de codificación. Para obtener más información, vea la sección Comentarios.

...

Punteros a variables usadas para contener los valores descodificados según lo especificado por el argumento fmt .

Valor devuelto

En caso de error, la función devuelve LBER_ERROR.

Comentarios

La función interpreta los bytes según la cadena de formato fmt y almacena los resultados en sus argumentos adicionales. La cadena de formato contiene especificaciones de conversión utilizadas para dirigir la interpretación del elemento BER. La cadena de formato puede contener caracteres enumerados en la tabla siguiente.

Carácter Descripción
a Cadena de octeto. Se debe proporcionar un argumento char** . Se asigna memoria, rellena con el contenido de la cadena de octetos, terminada en cero y el puntero a la cadena se almacena en el argumento . El valor devuelto debe liberarse mediante ldap_memfree. La etiqueta del elemento debe indicar la forma primitiva (no se admiten cadenas construidas), pero se omite y descarta durante la descodificación. Este formato no se puede usar con cadenas de octetos que podrían contener bytes NULL.
O Cadena de octeto. Se debe proporcionar un argumento berval** , que al devolver apunta a un berval asignado que contiene la cadena del octeto y su longitud. ber_bvfree debe llamarse para liberar la memoria asignada. La etiqueta del elemento debe indicar la forma primitiva (no se admiten cadenas construidas), pero se omite durante la descodificación.
b Booleano. Se debe proporcionar un puntero a un ber_int_t . El valor de ber_int_t almacenado será 0 para FALSE o distinto de cero para TRUE. La etiqueta del elemento debe indicar el formulario primitivo, pero de lo contrario se omite durante la descodificación.
e Enumerado. Se debe proporcionar un puntero a un ber_int_t . La etiqueta del elemento debe indicar la forma primitiva, pero de lo contrario se omite durante la descodificación. ber_scanf devolverá un error si el valor del valor enumerado no se puede almacenar en un ber_int_t.
i Entero. Se debe proporcionar un puntero a un ber_int_t . La etiqueta del elemento debe indicar la forma primitiva, pero se omite durante la descodificación. ber_scanf devolverá un error si el entero no se puede almacenar en un ber_int_t.
B Bitstring. Se debe proporcionar un argumento char** que apunte a los bits asignados, seguido de un argumento ber_len_t * , que apuntará a la longitud (en bits) de la cadena de bits devuelta. ldap_memfree debe llamarse para liberar la cadena de bits. La etiqueta del elemento debe indicar la forma primitiva (no se admiten las cadena de bits construidas), pero se omite durante la descodificación.
n Null. No se requiere ningún argumento. Se comprueba que el elemento tiene un valor de longitud cero y se omite. La etiqueta se omite.
t Etiqueta. Se debe proporcionar un puntero a un ber_tag_t . El valor de ber_tag_t almacenado será la etiqueta del siguiente elemento de pBerElement, representado para que se pueda escribir con el formato t de ber_printf. La posición de descodificación dentro del argumento pBerElement no cambia.
v Varias cadenas de octetos. Se debe proporcionar un argumento char*** que, tras devolver, apunta a una matriz terminada en null asignada de char *'s que contienen las cadenas del octeto. NULL se almacena si la secuencia está vacía. ldap_memfree debe llamarse para liberar cada elemento de la matriz y la propia matriz. Se omite la etiqueta de la secuencia y de las cadenas de octetos.
V Varias cadenas de octetos (que podrían contener bytes NULL). Se debe proporcionar un berval*** que, tras devolver, apunta a una matriz terminada en NULL asignada de berval*que contiene las cadenas de octetos y sus longitudes. NULL se almacena si la secuencia está vacía. ber_bvecfree se puede llamar para liberar la memoria asignada. Se omite la etiqueta de la secuencia y de las cadenas de octetos.
x Omitir elemento. Se omite el elemento siguiente. No se requiere ningún argumento.
{ Secuencia inicial. No se requiere ningún argumento. Se omiten la etiqueta de secuencia inicial y la longitud.
} Secuencia final. No se requiere ningún argumento.
[ Comenzar conjunto. No se requiere ningún argumento. Se omiten la etiqueta y la longitud iniciales del conjunto.
] Conjunto final. No se requiere ningún argumento.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado winber.h
Library Wldap32.lib
Archivo DLL Wldap32.dll

Consulte también

BerElement

Funciones

ber_printf

berval