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を返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
WdfRegistryAssignMultiString は IRQL = PASSIVE_LEVELで呼び出されませんでした。 |
|
無効なパラメーターが指定されたか、 StringsCollection パラメーターで指定されたコレクションに文字列オブジェクトが含まれなかった。 |
|
ドライバーが、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) |