WdfRegistryAssignMultiString 関数 (wdfregistry.h)

[KMDF と UMDF に適用]

WdfRegistryAssignMultiString メソッドは、レジストリ内の指定された値名に文字列のセットを割り当てます。 文字列は、フレームワーク文字列オブジェクトの指定されたコレクションに含まれています。

構文

NTSTATUS WdfRegistryAssignMultiString(
  [in] WDFKEY           Key,
  [in] PCUNICODE_STRING ValueName,
  [in] WDFCOLLECTION    StringsCollection
);

パラメーター

[in] Key

開かれたレジストリ キーを表すレジストリ キー オブジェクトへのハンドル。

[in] ValueName

値名を含む UNICODE_STRING 構造体へのポインター。

[in] StringsCollection

フレームワーク文字列オブジェクトのコレクションを表すフレームワーク コレクション オブジェクトへのハンドル。

戻り値

操作が成功した場合、WdfRegistryAssignMultiString はSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryAssignMultiString は IRQL = PASSIVE_LEVELで呼び出されませんでした。

STATUS_INVALID_PARAMETER
無効なパラメーターが指定されたか、 StringsCollection パラメーターで指定されたコレクションに文字列オブジェクトが含まれなかった。
STATUS_ACCESS_DENIED
ドライバーが、KEY_SET_VALUE アクセス権を持つレジストリ キーを開けませんでした。
 

このメソッドは、他の NTSTATUS 値を返す場合もあります。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

ValueName パラメーターで指定されている値名が既に存在する場合、WdfRegistryAssignMultiString は値のデータを更新します。

フレームワークは、値のデータ型をREG_MULTI_SZに設定します。

StringsCollection が指定するオブジェクト コレクションには、フレームワーク文字列オブジェクトのみを含める必要があります。

レジストリ キー オブジェクトの詳細については、「 Framework-Based ドライバーでのレジストリの使用」を参照してください。

次のコード例では、コレクション オブジェクトと 2 つの文字列オブジェクトを作成し、その文字列オブジェクトをコレクションに追加してから、2 つの文字列を 1 つのレジストリ値に割り当てます。

WDF_OBJECT_ATTRIBUTES attributes;
WDFCOLLECTION col = NULL;
WDFSTRING string1 = NULL, string2 = NULL;
UNICODE_STRING ustring1, ustring2, valueName;
NTSTATUS status;

status = WdfCollectionCreate(
                             WDF_NO_OBJECT_ATTRIBUTES,
                             &col
                             );
if (!NT_SUCCESS(status) {
    return status;
}

RtlInitUnicodeString(
                     &ustring1,
                     L"String1"
                     );
RtlInitUnicodeString(
                     &ustring2,
                     L"String2"
                     );
RtlInitUnicodeString(
                     &valueName,
                     L"ValueName"
                     );

WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = col;

status = WdfStringCreate(
                         &ustring1,
                         &attributes,
                         &string1
                         );
if (!NT_SUCCESS(status)) {
    goto exit;
}
status = WdfStringCreate(
                         &ustring2,
                         &attributes,
                         &string2
                         );
if (!NT_SUCCESS(status)) {
    goto exit;
}
status = WdfCollectionAdd(
                          col,
                          string1
                          );
if (!NT_SUCCESS(status)) {
    goto exit;
}
string1 = NULL;

status = WdfCollectionAdd(
                          col,
                          string2
                          );
if (!NT_SUCCESS(status)) {
    goto exit;
}
string2 = NULL;

status = WdfRegistryAssignMultiString(
                                      Key,
                                      &valueName,
                                      col
                                      );
if (!NT_SUCCESS(status)) {
    goto exit;
...
exit:
if (col != NULL) {
    WdfObjectDelete(col);    // This will empty the collection
                             // because the string objects are
                             // child objects of the collection object.
}

要件

要件
対象プラットフォーム ユニバーサル
最小 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)

こちらもご覧ください

RtlInitUnicodeString

UNICODE_STRING

WdfCollectionAdd

WdfCollectionCreate

WdfObjectDelete

WdfRegistryAssignMemory

WdfRegistryAssignString

WdfRegistryAssignULong

WdfRegistryAssignUnicodeString

WdfRegistryAssignValue

WdfStringCreate