Freigeben über


ber_scanf-Funktion (winber.h)

Die ber_scanf-Funktion decodiert ein BER-Element auf ähnliche Weise wie sscanf_s. Ein wichtiger Unterschied besteht darin, dass einige Zustands- status Daten mit dem BerElement-Argument beibehalten werden, sodass mehrere Aufrufe an ber_scanf vorgenommen werden können, um sequenziell aus dem BER-Element zu lesen. Das BerElement-Argument sollte ein Zeiger auf ein BerElement sein, das von ber_init zurückgegeben wird.

Syntax

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

Parameter

[in, out] pBerElement

Zeiger auf die decodierte BerElement-Struktur .

[in] fmt

Codierungsformatzeichenfolge. Weitere Informationen finden Sie im Abschnitt Hinweise.

...

Zeiger auf Variablen, die verwendet werden, um die vom fmt-Argument angegebenen Werte zu enthalten.

Rückgabewert

Bei Fehler gibt die Funktion LBER_ERROR zurück.

Hinweise

Die Funktion interpretiert die Bytes entsprechend der Formatzeichenfolge fmt und speichert die Ergebnisse in den zusätzlichen Argumenten. Die Formatzeichenfolge enthält Konvertierungsspezifikationen, die zum Leiten der Interpretation des BER-Elements verwendet werden. Die Formatzeichenfolge kann Zeichen enthalten, die in der folgenden Tabelle aufgeführt sind.

Zeichen BESCHREIBUNG
a Oktettzeichenfolge. Es muss ein char** -Argument angegeben werden. Arbeitsspeicher wird zugewiesen, mit dem Inhalt der Oktettzeichenfolge gefüllt, null beendet, und der Zeiger auf die Zeichenfolge wird im Argument gespeichert. Der zurückgegebene Wert sollte mithilfe von ldap_memfree freigegeben werden. Das -Tag des -Elements muss die primitive Form angeben (konstruierte Zeichenfolgen werden nicht unterstützt), wird aber andernfalls ignoriert und während der Decodierung verworfen. Dieses Format kann nicht mit Oktettzeichenfolgen verwendet werden, die NULL-Bytes enthalten können.
O Oktettzeichenfolge. Es muss ein berval** -Argument angegeben werden, das beim Zurückgeben an einen zugeordneten Berval punktet, der die Oktettzeichenfolge und ihre Länge enthält. ber_bvfree sollte aufgerufen werden, um den zugewiesenen Arbeitsspeicher freizugeben. Das Tag des Elements muss die primitive Form angeben (konstruierte Zeichenfolgen werden nicht unterstützt), wird aber während der Decodierung andernfalls ignoriert.
b Boolean. Ein Zeiger auf eine ber_int_t muss angegeben werden. Der ber_int_t gespeicherte Wert ist 0 für FALSE oder nonzero für TRUE. Das Tag des Elements muss die primitive Form angeben, wird aber während der Decodierung andernfalls ignoriert.
e Aufgezählt. Ein Zeiger auf eine ber_int_t muss angegeben werden. Das -Tag des Elements muss die primitive Form angeben, wird aber während der Decodierung andernfalls ignoriert. ber_scanf gibt einen Fehler zurück, wenn der Wert des aufgezählten Werts nicht in einer ber_int_t gespeichert werden kann.
i Integer. Ein Zeiger auf eine ber_int_t muss angegeben werden. Das Tag des Elements muss die primitive Form angeben, wird aber während der Decodierung andernfalls ignoriert. ber_scanf gibt einen Fehler zurück, wenn die ganze Zahl nicht in einem ber_int_t gespeichert werden kann.
B Bitzeichenfolge. Es muss ein char** -Argument angegeben werden, das auf die zugeordneten Bits verweist, gefolgt von einem ber_len_t *-Argument, das auf die Länge (in Bits) der zurückgegebenen Bitzeichenfolge verweist. ldap_memfree sollte aufgerufen werden, um die Bitzeichenfolge frei zu machen. Das -Tag des Elements muss die primitive Form angeben (konstruierte Bitzeichenfolgen werden nicht unterstützt), wird aber während der Decodierung andernfalls ignoriert.
n Null. Es ist kein Argument erforderlich. Das Element wird auf einen Wert der Länge null überprüft und übersprungen. Das Tag wird ignoriert.
t Tag. Ein Zeiger auf eine ber_tag_t muss angegeben werden. Der gespeicherte ber_tag_t Wert ist das Tag des nächsten Elements im pBerElement, sodass es im t-Formatvon ber_printf geschrieben werden kann. Die Decodierungsposition innerhalb des pBerElement-Arguments wird dadurch unverändert.
V Mehrere Oktettzeichenfolgen. Es muss ein char*** -Argument angegeben werden, das beim Zurückgeben von Punkten auf ein zugeordnetes null-beendetes Array von char *'s zurückgibt, das die Oktettzeichenfolgen enthält. NULL wird gespeichert, wenn die Sequenz leer ist. ldap_memfree sollte aufgerufen werden, um jedes Element des Arrays und das Array selbst frei zu geben. Das Tag der Sequenz und der Oktettzeichenfolgen werden ignoriert.
B Mehrere Oktettzeichenfolgen (die NULL-Bytes enthalten können). Es muss ein berval*** angegeben werden, das beim Zurückgeben von Punkten an ein zugeordnetes NULL-beendetes Array von berval*s mit den Oktettzeichenfolgen und deren Längen zurückgibt. NULL wird gespeichert, wenn die Sequenz leer ist. ber_bvecfree kann aufgerufen werden, um den zugewiesenen Arbeitsspeicher freizugeben. Das Tag der Sequenz und der Oktettzeichenfolgen werden ignoriert.
x Element überspringen. Das nächste Element wird übersprungen. Es ist kein Argument erforderlich.
{ Startsequenz. Es ist kein Argument erforderlich. Das anfängliche Sequenztag und die Länge werden übersprungen.
} Endsequenz. Es ist kein Argument erforderlich.
[ Startsatz. Es ist kein Argument erforderlich. Das anfängliche Settag und die Länge werden übersprungen.
] Endsatz. Es ist kein Argument erforderlich.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile winber.h
Bibliothek Wldap32.lib
DLL Wldap32.dll

Weitere Informationen

BerElement

Funktionen

ber_printf

berval