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

메모리가 지정하는 버퍼의 하위 섹션을 식별하는 드라이버 제공 WDFMEMORY_OFFSET 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

WdfRegistryAssignMemory 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryAssignMemory 는 IRQL = PASSIVE_LEVEL 호출되지 않았습니다.

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
머리글 wdfregistry.h(Wdf.h 포함)
라이브러리 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