次の方法で共有


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 を含むソース文字列の長さ (バイト単位) に設定されます。 SourceStringNULL の場合、LengthMaximumLength の両方が 0 に設定されます。

RtlInitAnsiString では、 SourceString が指すソース文字列は変更されません。

ソース文字列が MAXUSHORT - 1 バイトより長い場合、RtlInitAnsiStringDestinationString が指すANSI_STRING構造体の Length メンバーを MAXUSHORT - 1 に設定し、この構造体の MaximumLength メンバーを MAXUSHORT に設定します。 この場合、 LengthMaximumLength の値は 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マクロは、定数文字列を渡すときに RtlInitAnsiStringRtlInitStringおよび RtlInitUnicodeString ルーチンを置き換えます。

RTL_CONSTANT_STRINGを使用してグローバル変数を初期化できます。

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 任意のレベル (「解説」セクションを参照)

こちらもご覧ください

ANSI_STRING