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を返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_DEVICE_REQUEST

IRQL = PASSIVE_LEVELで WdfRegistryQueryMultiString が呼び出されませんでした。

STATUS_INVALID_PARAMETER
無効なパラメーターが指定されました。
STATUS_INSUFFICIENT_RESOURCES
文字列オブジェクトを割り当てませんでした。
STATUS_ACCESS_DENIED
ドライバーは、KEY_QUERY_VALUE、KEY_READ、またはKEY_ALL_ACCESSアクセスでレジストリ キーを開けませんでした。
STATUS_OBJECT_TYPE_MISMATCH
ValueName パラメーターが指定したレジストリ値のデータ型がREG_MULTI_SZされませんでした。
STATUS_OBJECT_NAME_NOT_FOUND
レジストリ値が使用できませんでした。
STATUS_RESOURCE_DATA_NOT_FOUND
レジストリ値は、指定したキーの下に存在しますが、空です。
 

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)

こちらもご覧ください

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfCollectionCreate

WdfCollectionGetCount

WdfCollectionGetItem

WdfRegistryQueryMemory

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue

WdfStringGetUnicodeString