RtlInitAnsiString 関数 (wdm.h)
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 の両方が 0 に設定されます。
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を使用してグローバル変数を初期化できます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | 任意のレベル (「解説」セクションを参照) |