次の方法で共有


WdfRegistryAssignMemory 関数 (wdfregistry.h)

[KMDF と UMDF に適用]

WdfRegistryAssignMemory メソッドは、指定したメモリ バッファーに含まれるデータをレジストリ内の指定された値名に割り当てます。

構文

NTSTATUS WdfRegistryAssignMemory(
  [in]           WDFKEY            Key,
  [in]           PCUNICODE_STRING  ValueName,
  [in]           ULONG             ValueType,
  [in]           WDFMEMORY         Memory,
  [in, optional] PWDFMEMORY_OFFSET MemoryOffsets
);

パラメーター

[in] Key

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

[in] ValueName

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

[in] ValueType

データ型を識別する値。 データ型の値の一覧については、KEY_VALUE_BASIC_INFORMATIONType メンバーを参照してください。

[in] Memory

フレームワーク メモリ オブジェクトへのハンドル。 このオブジェクトは、 ValueName が指す値名に割り当てられるデータを含むバッファーを表します。

[in, optional] MemoryOffsets

Memory が指定するバッファーのサブセクションを識別するドライバー指定のWDFMEMORY_OFFSET構造体へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。

戻り値

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

リターン コード 説明
STATUS_INVALID_DEVICE_REQUEST

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

STATUS_INVALID_PARAMETER
無効なパラメーターが指定されました。
STATUS_ACCESS_DENIED
ドライバーが、KEY_SET_VALUE アクセス権を持つレジストリ キーを開けませんでした。
STATUS_INTEGER_OVERFLOW
MemoryOffsets パラメーターが指定したWDFMEMORY_OFFSET構造体の内容が無効です。
 

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

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

注釈

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

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

次のコード例では、フレームワーク メモリ オブジェクトを作成し、偽のデータを含むオブジェクトのバッファーを読み込み、バッファーの内容をレジストリ値に割り当てます。

PUCHAR pBuffer;
WDFMEMORY memory;
NTSTATUS status;
UCHAR i;
DECLARE_UNICODE_STRING_SIZE(valueName, L"MyValueName");

status = WdfMemoryCreate(
                         WDF_NO_OBJECT_ATTRIBUTES,
                         NonPagedPool,
                         0,
                         MEMORY_LENGTH,
                         &memory,
                         (PVOID*)&pBuffer
                         );
if (NT_SUCCESS(status)) {

    // Fill the buffer with fake data.
    for (i = 1; i <= MEMORY_LENGTH; i++) {
        pBuffer[i-1] = i;
    }

    status = WdfRegistryAssignMemory(
                                     Key,
                                     &valueName,
                                     REG_BINARY,
                                     memory,
                                     NULL
                                     );
}

要件

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

こちらもご覧ください

KEY_VALUE_BASIC_INFORMATION

UNICODE_STRING

WDFMEMORY_OFFSET

WdfMemoryCreate

WdfRegistryAssignMultiString

WdfRegistryAssignString

WdfRegistryAssignULong

WdfRegistryAssignUnicodeString

WdfRegistryAssignValue