次の方法で共有


RtlInitString 関数 (wdm.h)

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 の両方が 0 に設定されます。

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

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

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

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL 「解説」を参照してください。

こちらもご覧ください

ANSI_STRING