Freigeben über


RtlInitAnsiString-Funktion (wdm.h)

Die RtlInitAnsiString-Routine initialisiert eine gezählte Zeichenfolge von ANSI-Zeichen.

Syntax

NTSYSAPI VOID RtlInitAnsiString(
  [out]          PANSI_STRING          DestinationString,
  [in, optional] __drv_aliasesMem PCSZ SourceString
);

Parameter

[out] DestinationString

Ein Zeiger auf die zu initialisierende ANSI_STRING-Struktur.

[in, optional] SourceString

Ein Zeiger auf eine NULL-endende Zeichenfolge. Diese Zeichenfolge wird verwendet, um die gezählte Zeichenfolge zu initialisieren, auf die von DestinationString verwiesen wird.

Rückgabewert

Keine

Bemerkungen

Diese Routine initialisiert eine gezählte Zeichenfolge.

Die Routine kopiert den SourceString-Zeigerwert in den Buffer-Member der ANSI_STRING Struktur, auf die von DestinationString verwiesen wird. Der Length-Member dieser Struktur wird auf die Länge (in Bytes) der Quellzeichenfolge festgelegt, wobei der abschließende NULL-Wert ausgeschlossen ist. Der MaximumLength-Member der -Struktur wird auf die Länge der Quellzeichenfolge in Byte festgelegt, einschließlich der endenden NULL. Wenn SourceStringNULL ist, werden Length und MaximumLength auf 0 festgelegt.

RtlInitAnsiString ändert die Quellzeichenfolge, auf die von SourceString verwiesen wird, nicht.

Wenn die Quellzeichenfolge länger als MAXUSHORT - 1 Byte ist, legt RtlInitAnsiString den Length-Member der ANSI_STRING-Struktur , auf die destinationString verweist, auf MAXUSHORT - 1 fest und legt das MaximumLength-Element dieser Struktur auf MAXUSHORT fest. In diesem Fall stellen die Werte Length und MaximumLength die Länge der null-endendierten Quellzeichenfolge falsch dar, und die Abhängigkeit von der Genauigkeit dieser Werte ist potenziell gefährlich.

Aufrufer von RtlInitAnsiString können unter IRQL <= DISPATCH_LEVEL ausgeführt werden, wenn der DestinationString-Puffer nicht auslagerbar ist. In der Regel werden Aufrufer mit IRQL = PASSIVE_LEVEL ausgeführt, da die meisten anderen RtlXxxString-Routinen nicht im IRQL-PASSIVE_LEVEL > aufgerufen werden können.

Das RTL_CONSTANT_STRING Makro erstellt eine Zeichenfolgen- oder Unicode-Zeichenfolgenstruktur, die eine gezählte Zeichenfolge enthält.

STRING RTL_CONSTANT_STRING(
  [in]  PCSZ SourceString
);

UNICODE_STRING RTL_CONSTANT_STRING(
  [in]  PCWSTR SourceString
);

RTL_CONSTANT_STRING gibt entweder eine Zeichenfolgenstruktur oder eine Unicode-Zeichenfolgenstruktur zurück.

Das RTL_CONSTANT_STRING Makro ersetzt die Routinen RtlInitAnsiString, RtlInitString und RtlInitUnicodeString , wenn eine konstante Zeichenfolge übergeben wird.

Sie können RTL_CONSTANT_STRING verwenden, um globale Variablen zu initialisieren.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene (siehe Abschnitt "Hinweise")

Weitere Informationen

ANSI_STRING