Функция 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 Drivers.
Примеры
В следующем примере кода создается объект коллекции и два строковых объекта, добавляет строковые объекты в коллекцию, а затем назначает две строки одному значению реестра.
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) |