(wdm.h) RtlInitAnsiString 函式
RtlInitAnsiString 例程會初始化 ANSI 字元的計數位符串。
語法
NTSYSAPI VOID RtlInitAnsiString(
[out] PANSI_STRING DestinationString,
[in, optional] __drv_aliasesMem PCSZ SourceString
);
參數
[out] DestinationString
要初始化 之ANSI_STRING 結構的指標。
[in, optional] SourceString
Null 終止字元字串的指標。 此字串是用來初始化 DestinationString 所指向的計數位符串。
傳回值
無
備註
這個例程會初始化計算字元字串。
例程會將SourceString指標值複製到 DestinationString 所指向之ANSI_STRING結構的 Buffer 成員。 這個結構的 Length 成員會設定為來源字串的長度,以位元組為單位,不包括終止 Null。 結構的 MaximumLength 成員會設定為來源字串的長度,以位元組為單位,包括終止 Null。 如果 SourceString 為 NULL,Length 和 MaximumLength 都會設定為零。
RtlInitAnsiString 不會改變 SourceString指向的來源字串。
如果來源字串超過 MAXUSHORT - 1 個字節,RtlInitAnsiString 會將 DestinationString 指向之ANSI_STRING結構的 Length 成員設定為 MAXUSHORT - 1,並將這個 結構的 MaximumLength 成員設定為 MAXUSHORT。 在此情況下, Length 和 MaximumLength 值會誤判 Null 終止來源字串的長度,並依賴這些值的精確度可能很危險。
如果 DestinationString 緩衝區不可分頁,RtlInitAnsiString 的呼叫端可以在 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宏會在傳遞常數位符串時取代 RtlInitAnsiString、RtlInitString 和 RtlInitUnicodeString 例程。
您可以使用 RTL_CONSTANT_STRING 來初始化全域變數。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | 任何層級 (請參閱一節) |