(wdm.h) RtlInitString 函式

RtlInitString 例程會初始化 8 位字元的計數位符串。

語法

NTSYSAPI VOID RtlInitString(
  [out]          PSTRING               DestinationString,
  [in, optional] __drv_aliasesMem PCSZ SourceString
);

參數

[out] DestinationString

要初始化之 STRING 結構的指標。 Ntdef.h 頭檔定義此結構,與 ANSI_STRING 結構相同。

[in, optional] SourceString

Null 終止字元字串的指標。 此字串是用來初始化 DestinationString 所指向的計數位符串。

備註

這個例程會初始化計算字元字串。

例程會將 SourceString 指標值複製到 DestinationString 所指向之 STRING 結構的 Buffer 成員。 這個結構的 Length 成員會設定為來源字串的長度,以位元組為單位,不包括終止 Null。 結構的 MaximumLength 成員會設定為來源字串的長度,以位元組為單位,包括終止 Null。 如果 SourceStringNULL,LengthMaximumLength 都會設定為零。

RtlInitString 不會改變 SourceString指向的來源字串。

如果來源字串超過 MAXUSHORT - 1 個字節,RtlInitString 會將 DestinationString 指向 MAXUSHORT - 1 所指向之 STRING 結構的 Length 成員設定為 MAXUSHORT,並將這個 結構的 MaximumLength 成員設定為 MAXUSHORT。 在此情況下, LengthMaximumLength 值會誤判 Null 終止來源字串的長度,並依賴這些值的精確度可能很危險。

如果 DestinationString 緩衝區不可分頁,則 RtlInitString 的呼叫端可以在 IRQL <= DISPATCH_LEVEL執行。 通常,呼叫端會在 IRQL = PASSIVE_LEVEL執行,因為大部分的其他 RtlXxx字串 例程無法在 IRQL > PASSIVE_LEVEL呼叫。

RTL_CONSTANT_STRING宏會建立字串或 Unicode 字串結構來保存計數位符串。

STRING RTL_CONSTANT_STRING(
  [in]  PCSZ SourceString
);

UNICODE_STRING RTL_CONSTANT_STRING(
  [in]  PCWSTR SourceString
);

RTL_CONSTANT_STRING 會傳回字串結構或 Unicode 字串結構。

RTL_CONSTANT_STRING宏會在傳遞常數位符串時取代 RtlInitAnsiStringRtlInitStringRtlInitUnicodeString 例程。

您可以使用 RTL_CONSTANT_STRING 來初始化全域變數。

規格需求

需求
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL 請參閱一節。

另請參閱

ANSI_STRING