WdfRegistryQueryMultiString 関数 (wdfregistry.h)
[KMDF と UMDF に適用]
WdfRegistryQueryMultiString メソッドは、指定された複数文字列レジストリ値に現在割り当てられている文字列を取得し、文字列ごとにフレームワーク文字列オブジェクトを作成し、各文字列オブジェクトを指定したオブジェクト コレクションに追加します。
構文
NTSTATUS WdfRegistryQueryMultiString(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[in, optional] PWDF_OBJECT_ATTRIBUTES StringsAttributes,
[in] WDFCOLLECTION Collection
);
パラメーター
[in] Key
開かれたレジストリ キーを表すレジストリ キー オブジェクトへのハンドル。
[in] ValueName
値名を含む UNICODE_STRING 構造体へのポインター。
[in, optional] StringsAttributes
新しい文字列オブジェクトごとにオブジェクト属性を含む WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。
[in] Collection
ドライバーが提供するフレームワーク コレクション オブジェクトへのハンドル。
戻り値
操作が成功した場合、WdfRegistryQueryMultiString はSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
IRQL = PASSIVE_LEVELで WdfRegistryQueryMultiString が呼び出されませんでした。 |
|
無効なパラメーターが指定されました。 |
|
文字列オブジェクトを割り当てませんでした。 |
|
ドライバーは、KEY_QUERY_VALUE、KEY_READ、またはKEY_ALL_ACCESSアクセスでレジストリ キーを開けませんでした。 |
|
ValueName パラメーターが指定したレジストリ値のデータ型がREG_MULTI_SZされませんでした。 |
|
レジストリ値が使用できませんでした。 |
|
レジストリ値は、指定したキーの下に存在しますが、空です。 |
WdfRegistryQueryMultiString メソッドが返す可能性があるその他の戻り値の一覧については、「Framework オブジェクト作成エラー」を参照してください。
このメソッドは、他の NTSTATUS 値を返す場合もあります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
注釈
ドライバーが WdfRegistryQueryMultiString を呼び出す前に、 WdfCollectionCreate を 呼び出してコレクション オブジェクトを作成する必要があります。
呼び出し元が StringsAttributes パラメーターを指定しない場合、フレームワークによって作成されたすべての WDFSTRING オブジェクトは、既定で WDFDRIVER に親されます。
WdfRegistryQueryMultiString が返された後、ドライバーは WdfCollectionGetCount を呼び出して、取得した文字列の数を取得し、WdfCollectionGetItem を呼び出してコレクションから文字列オブジェクトを取得できます。
ドライバーが WdfRegistryQueryMultiString メソッドを呼び出す前にコレクションにオブジェクトが含まれている場合、メソッドはそれらのオブジェクトを削除したり、インデックス値を変更したりしません。 新しいオブジェクトは、コレクションの末尾に追加されます。
文字列オブジェクトから文字列を取得するには、ドライバーは WdfStringGetUnicodeString を呼び出すことができます。
レジストリ キー オブジェクトの詳細については、「 Framework-Based ドライバーでのレジストリの使用」を参照してください。
例
次のコード例では、コレクション オブジェクトを作成し、 コレクション オブジェクトがコレクション用に作成されるすべての文字列オブジェクトの親になるようにWDF_OBJECT_ATTRIBUTES構造体を初期化し、複数文字列レジストリ値から文字列を取得します。 最後に、フレームワークがコレクションに追加した文字列オブジェクトの数を取得します。
WDF_OBJECT_ATTRIBUTES stringAttributes;
WDFCOLLECTION col;
NTSTATUS status;
ULONG count;
DECLARE_CONST_UNICODE_STRING(valueMultiSz, VALUE_MULTI_SZ);
status = WdfCollectionCreate(
NULL,
&col
);
ASSERT(NT_SUCCESS(status));
WDF_OBJECT_ATTRIBUTES_INIT(&stringAttributes);
stringAttributes.ParentObject = col;
status = WdfRegistryQueryMultiString(
Key,
&valueMultiSzEmpty,
&stringAttributes,
col
);
count = WdfCollectionGetCount(col);
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdfregistry.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |