Compartilhar via


função ber_scanf (winber.h)

A função ber_scanf decodifica um elemento BER de maneira semelhante à sscanf_s. Uma diferença importante é que alguns dados de status de estado são mantidos com o argumento BerElement para que várias chamadas possam ser feitas para ber_scanf ler sequencialmente do elemento BER. O argumento BerElement deve ser um ponteiro para um BerElement retornado por ber_init.

Sintaxe

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

Parâmetros

[in, out] pBerElement

Ponteiro para a estrutura BerElement decodificada.

[in] fmt

Cadeia de caracteres de formato de codificação. Para obter mais informações, consulte a seção Comentários.

...

Ponteiros para variáveis usadas para manter os valores decodificados conforme especificado pelo argumento fmt .

Retornar valor

Em caso de erro, a função retorna LBER_ERROR.

Comentários

A função interpreta os bytes de acordo com a cadeia de caracteres de formato fmt e armazena os resultados em seus argumentos adicionais. A cadeia de caracteres de formato contém especificações de conversão usadas para direcionar a interpretação do elemento BER. A cadeia de caracteres de formato pode conter caracteres listados na tabela a seguir.

Caractere Descrição
a Cadeia de caracteres de octeto. Um argumento char** deve ser fornecido. A memória é alocada, preenchida com o conteúdo da cadeia de caracteres de octeto, terminada em zero e o ponteiro para a cadeia de caracteres é armazenado no argumento . O valor retornado deve ser liberado usando ldap_memfree. A marca do elemento deve indicar a forma primitiva (cadeias de caracteres construídas não têm suporte), mas é ignorada e descartada durante a decodificação. Esse formato não pode ser usado com cadeias de caracteres de octeto que podem conter bytes nulos.
O Cadeia de caracteres de octeto. Um argumento berval** deve ser fornecido, que ao retornar aponta para um berval alocado que contém a cadeia de caracteres de octeto e seu comprimento. ber_bvfree deve ser chamado para liberar a memória alocada. A marca do elemento deve indicar a forma primitiva (cadeias de caracteres construídas não têm suporte), mas, de outra forma, é ignorada durante a decodificação.
b Boolean. Um ponteiro para um ber_int_t deve ser fornecido. O valor de ber_int_t armazenado será 0 para FALSE ou diferente de zero para TRUE. A marca do elemento deve indicar a forma primitiva, mas é ignorada durante a decodificação.
e Enumerado. Um ponteiro para um ber_int_t deve ser fornecido. A marca do elemento deve indicar a forma primitiva, mas é ignorada durante a decodificação. ber_scanf retornará um erro se o valor do valor enumerado não puder ser armazenado em um ber_int_t.
i Integer. Um ponteiro para um ber_int_t deve ser fornecido. A marca do elemento deve indicar a forma primitiva, mas é ignorada durante a decodificação. ber_scanf retornará um erro se o inteiro não puder ser armazenado em um ber_int_t.
B Bitstring. Um argumento char** deve ser fornecido que apontará para os bits alocados, seguido por um argumento ber_len_t * que apontará para o comprimento (em bits) da bitstring retornada. ldap_memfree deve ser chamado para liberar a bitstring. A marca do elemento deve indicar a forma primitiva (não há suporte para bitstrings construídos), mas, de outra forma, é ignorada durante a decodificação.
n Nulo. Nenhum argumento é necessário. O elemento é verificado para ter um valor de comprimento zero e é ignorado. A marca é ignorada.
t Marca. Um ponteiro para um ber_tag_t deve ser fornecido. O valor ber_tag_t armazenado será a marca do próximo elemento no pBerElement, representado para que possa ser gravado usando o formato t de ber_printf. A posição de decodificação dentro do argumento pBerElement é inalterada por isso.
v Várias cadeias de caracteres de octeto. Um argumento char*** deve ser fornecido, que ao retornar aponta para uma matriz alocada terminada em nulo de char *'s que contém as cadeias de caracteres de octeto. NULL será armazenado se a sequência estiver vazia. ldap_memfree deve ser chamado para liberar cada elemento da matriz e da própria matriz. A marca da sequência e das cadeias de caracteres de octeto são ignoradas.
V Várias cadeias de caracteres de octeto (que podem conter bytes nulos). Um berval*** deve ser fornecido, o que, após o retorno, aponta para uma matriz alocada terminada em NULL de berval*'s que contém as cadeias de caracteres de octeto e seus comprimentos. NULL será armazenado se a sequência estiver vazia. ber_bvecfree pode ser chamado para liberar a memória alocada. A marca da sequência e das cadeias de caracteres de octeto são ignoradas.
x Elemento Skip. O próximo elemento é ignorado. Nenhum argumento é necessário.
{ Iniciar sequência. Nenhum argumento é necessário. A marca de sequência inicial e o comprimento são ignorados.
} Sequência final. Nenhum argumento é necessário.
[ Iniciar conjunto. Nenhum argumento é necessário. A marca e o comprimento do conjunto inicial são ignorados.
] Conjunto de términos. Nenhum argumento é necessário.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho winber.h
Biblioteca Wldap32.lib
DLL Wldap32.dll

Confira também

Berelement

Funções

ber_printf

Berval