RtlStringCchPrintfA-Funktion (ntstrsafe.h)
Die Funktionen RtlStringCchPrintfW und RtlStringCchPrintfA erstellen eine zeichenzählerische Textzeichenfolge mit Formatierung, die auf den angegebenen Formatierungsinformationen basiert.
Syntax
NTSTRSAFEDDI RtlStringCchPrintfA(
[out] NTSTRSAFE_PSTR pszDest,
[in] size_t cchDest,
[in] NTSTRSAFE_PCSTR pszFormat,
...
);
Parameter
[out] pszDest
Ein Zeiger auf einen vom Aufrufer bereitgestellten Puffer, der eine formatierte, NULL-endende Zeichenfolge empfängt. Die Funktion erstellt diese Zeichenfolge sowohl aus der Formatierungszeichenfolge, die von pszFormat bereitgestellt wird, als auch aus der Argumentliste der Funktion.
[in] cchDest
Die Größe des Zielpuffers in Zeichen. Der Puffer muss groß genug sein, um die formatierte Zeichenfolge plus das abschließende NULL-Zeichen zu enthalten. Die maximale Anzahl zulässiger Zeichen ist NTSTRSAFE_MAX_CCH.
[in] pszFormat
Ein Zeiger auf eine mit NULL endende Textzeichenfolge, die Formatierungsdirektiven im Printf-Stil enthält.
...
Eine Liste von Argumenten, die von der Funktion interpretiert werden, basierend auf Formatierungsanweisungen, die in der pszFormat-Zeichenfolge enthalten sind.
Rückgabewert
Die Funktion gibt einen der NTSTATUS-Werte zurück, die in der folgenden Tabelle aufgeführt sind. Informationen zum Testen von NTSTATUS-Werten finden Sie unter Verwenden von NTSTATUS-Werten.
Rückgabecode | Beschreibung |
---|---|
|
Dieser Erfolg status bedeutet, dass Quelldaten vorhanden waren, die Zeichenfolge ohne Abschneiden erstellt wurde und der resultierende Zielpuffer NULL-beendet ist. |
|
Diese Warnung status bedeutet, dass der Vorgang aufgrund unzureichenden Speicherplatzes im Zielpuffer nicht abgeschlossen wurde. Der Zielpuffer enthält eine abgeschnittene Version der Ausgabezeichenfolge. |
|
Dieser Fehler status bedeutet, dass die Funktion einen ungültigen Eingabeparameter empfangen hat. Weitere Informationen finden Sie im folgenden Absatz.
Die Funktion gibt den STATUS_INVALID_PARAMETER-Wert zurück, wenn:
|
Hinweise
RtlStringCchPrintfW und RtlStringCchPrintfA sollten anstelle der folgenden Funktionen verwendet werden:
- sprintf
- swprintf
- _snprintf
- _snwprintf
Verwenden Sie RtlStringCchPrintfW zum Verarbeiten von Unicode-Zeichenfolgen und RtlStringCchPrintfA zum Verarbeiten von ANSI-Zeichenfolgen. Das von Ihnen verwendete Formular hängt von Ihren Daten ab.
String-Datentyp | Zeichenfolgenliteral | Funktion |
---|---|---|
WCHAR | L"string" | RtlStringCchPrintfW |
char | „String“ | RtlStringCchPrintfA |
Wenn pszDest und pszFormat auf überlappende Zeichenfolgen verweisen oder sich Argumentzeichenfolgen überlappen, ist das Verhalten der Funktion nicht definiert.
Weder pszFormat noch pszDest kann NULL sein. Wenn Sie NULL-Zeichenfolgenzeigerwerte verarbeiten müssen, verwenden Sie RtlStringCchPrintfEx.
Beispiele
Das folgende Beispiel zeigt eine einfache Verwendung von RtlStringCchPrintfW mit vier Argumenten.
WCHAR pszDest[30];
size_t cchDest = 30;
LPCWSTR pszFormat = L"%s %d + %d = %d.";
WCHAR* pszTxt = L"The answer is";
NTSTATUS status =
RtlStringCchPrintfW(pszDest, cchDest, pszFormat, pszTxt, 1, 2, 3);
Die resultierende Zeichenfolge ist "Die Antwort ist 1 + 2 = 3." Sie ist im Puffer bei pszDest enthalten.
Weitere Informationen zu den sicheren Zeichenfolgenfunktionen finden Sie unter Verwenden sicherer Zeichenfolgenfunktionen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows XP mit Service Pack 1 (SP1). |
Zielplattform | Desktop |
Kopfzeile | ntstrsafe.h (einschließen von Ntstrsafe.h) |
Bibliothek | Ntstrsafe.lib |
IRQL | Alle, wenn Zeichenfolgen, die bearbeitet werden, immer im Arbeitsspeicher gespeichert sind, andernfalls PASSIVE_LEVEL |