다음을 통해 공유


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 호출되지 않았습니다.

파라미터 값이 잘못되었습니다
잘못된 매개 변수가 지정되었거나 StringsCollection 매개 변수에 문자열 개체가 포함되지 않은 컬렉션이 지정되었습니다.
STATUS_ACCESS_DENIED
드라이버가 KEY_SET_VALUE 액세스 권한이 있는 레지스트리 키를 열지 않았습니다.
 

이 메서드는 다른NTSTATUS 값을 반환할 수도 있습니다.

드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.

비고

ValueName 매개 변수가 지정하는 값 이름이 이미 있는 경우 WdfRegistryAssignMultiString 값의 데이터를 업데이트합니다.

프레임워크는 값의 데이터 형식을 REG_MULTI_SZ 설정합니다.

StringsCollection 지정하는 개체 컬렉션에는 프레임워크 문자열 개체만 포함되어야 합니다.

레지스트리 키 개체에 대한 자세한 내용은 Framework-Based 드라이버레지스트리 사용을 참조하세요.

예시

다음 코드 예제에서는 컬렉션 개체와 두 개의 문자열 개체를 만들고 컬렉션에 문자열 개체를 추가한 다음 두 문자열을 하나의 레지스트리 값에 할당합니다.

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