DEVPROP_TYPE_STRING_INDIRECT

DEVPROP_TYPE_STRING_INDIRECT識別子は、間接文字列参照を含む NULL で終わる Unicode 文字列の基本データ型識別子を表します。

Remarks

間接文字列参照では、実際の文字列を含む文字列リソースについて説明します。 間接文字列参照は、次のいずれかの形式で表示できます。

@[path\]FileName,-ResourceID
WindowsパスとFileName エントリで指定されたモジュールから文字列を抽出し、文字列のリソース識別子は ResourceID エントリによって指定されます (必須の負符号を除く)。 文字列リソースは、呼び出し元の優先 UI 言語のいずれかに最も一致するモジュール リソース セクションから読み込まれます。 パス エントリは省略可能です。 パス エントリを指定する場合、モジュールはシステム定義の検索パスにあるディレクトリに配置する必要があります。

@ InfName、%strkey%
Windowsは、InfName エントリによって名前が指定された %SystemRoot%\inf ディレクトリ内の INF ファイルの INF 文字列セクションから文字列を抽出します。 strkey トークン識別子は、呼び出し元の優先 UI 言語のいずれかに最も一致する Strings セクションの行のキーと一致する必要があります。 言語固有の Strings セクションが存在しない場合、Windowsは既定の Strings セクションを使用します。

プロパティデータ型修飾子とDEVPROP_TYPE_STRING_INDIRECTを組み合わせることはできません。

この型のプロパティの設定

基本データ型がDEVPROP_TYPE_STRING_INDIRECTプロパティを設定するには、対応する SetupDiSetXxx プロパティ関数を呼び出し、関数の入力パラメーターを次のように設定します。

  • PropertyType パラメーターを DEVPROP_TYPE_STRING_INDIRECT に設定します。

  • PropertyBuffer パラメーターを、間接文字列参照を提供する NULL で終わる文字列を含むバッファーへのポインターに設定します。

  • PropertyBufferSize パラメーターを、文字列のサイズ (バイト単位) に設定します。

  • プロパティを設定するには、必要に応じて残りの関数パラメーターを設定します。

このプロパティ型の値の取得

アプリケーションが SetupDiGetXxx プロパティ関数を呼び出してこの基本データ型のプロパティの値を取得すると、Windowsは、プロパティが参照する実際の文字列の検索を試みます。 Windowsが実際の文字列を取得できる場合、呼び出し元に実際の文字列を返し、取得したプロパティの基本データ型をDEVPROP_TYPE_STRINGとして識別します。 それ以外の場合、Windowsは間接文字列参照を返し、取得したプロパティの基本データ型をDEVPROP_TYPE_STRING_INDIRECTとして識別します。

静的テキストのローカライズ

Windows Vista以降では、静的テキスト プロパティ型を DEVPROP_TYPE_STRING_INDIRECT に設定することで、PE イメージの文字列またはリソース テーブルのリソースを使用して、カスタムおよび標準の文字列型 PnP 静的テキスト プロパティをローカライズできます。 静的テキストに書式設定できるローカライズされていない置換文字列データを追加することもできます。

PE イメージの STRINGTABLE リソース内にある文字列 (通常は LoadString によって実行される) は、次の形式を使用する必要があります。

"@"System32\mydll.dll,-21[;Fallback" String]"

"@System32\mydll.dll,-21[;%1、%2、... のフォールバック文字列 を %n[;(Arg1,Arg2,...,ArgN)]]"

PE イメージのメッセージ テーブル リソース内にある文字列 (通常は RtlFindMessage によって実行され、ドライバーでよく使用されます) では、次の形式を使用する必要があります。

"@System32\drivers\mydriver.sys,#21[;フォールバック文字列]"

"@System32\drivers\mydriver.sys,#21[;%1、%2、... のフォールバック文字列 を %n[;(Arg1,Arg2,...,ArgN)]]"

"フォールバック文字列" は省略可能ですが、リソースが見つからないか読み込まれていない場合に返される可能性があるため便利です。 フォールバック文字列は、ユーザーを偽装していない非対話型システム プロセスにも返されるため、ローカライズされたテキストをユーザーに表示することはできません。

この手法を使用すると、呼び出し元のロケールに最も一致する文字列またはメッセージ テーブル リソースからプルされた静的テキストをローカライズできます。

Windowsは、RtlFormatMessage と同じように、それぞれのリソース テーブルから取得されるときに、末尾の引数を文字列 (またはフォールバック文字列) に書式設定します。

カスタムおよび標準の文字列型 PnP 静的テキストは、設定操作を実行するコンポーネントからリソースを読み込んでプロパティを設定するとローカライズされます。これは通常、システム レベルのコンポーネントのシステムの既定のロケールで行われます。

注: PE イメージでは、リソース テーブルの種類 (STRINGTABLE リソースまたはメッセージ テーブル リソース) を使用できます。

Requirements

Version

WindowsのWindows Vista以降のバージョン。

ヘッダー

Devpropdef.h (Devpropdef.h を含む)

参照

DEVPROP_TYPE_STRING