Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо к KMDF и UMDF]
Метод WdfRegistryCreateKey создает и открывает указанный раздел реестра или просто открывает ключ, если он уже существует, и создает объект реестра платформы, представляющий раздел реестра.
Синтаксис
NTSTATUS WdfRegistryCreateKey(
[in, optional] WDFKEY ParentKey,
[in] PCUNICODE_STRING KeyName,
[in] ACCESS_MASK DesiredAccess,
[in] ULONG CreateOptions,
[out, optional] PULONG CreateDisposition,
[in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
[out] WDFKEY *Key
);
Параметры
[in, optional] ParentKey
Дескриптор объекта реестра платформы. Этот объект представляет родительский раздел реестра, открытый драйвером. Этот параметр является необязательным и может быть null. Если параметр не NULL, ключ, который KeyName указывает, должен находиться под этим родительским разделом в реестре. Дополнительные сведения об этом родительском ключе см. в разделе "Примечания".
[in] KeyName
Указатель на структуру UNICODE_STRING, содержащую имя открываемого ключа. Имя ключа может содержать сведения о пути. Если ParentKeyNULL, KeyName должен указать полный путь к разделу реестра.
[in] DesiredAccess
Значение ACCESS_MASKтипа, указывающее права доступа, которые драйвер запрашивает для указанного раздела реестра. Список прав доступа, которые драйверы обычно используют для разделов реестра, см. в разделе Открытие дескриптора для объекта Registry-Key. Драйвер должен запрашивать только необходимые типы доступа. Например, драйвер не должен запрашивать KEY_ALL_ACCESS, если он будет читать только раздел реестра.
[in] CreateOptions
Один или несколько флагов. Дополнительные сведения об этих флагах см. в параметре CreateOptions или ZwCreateKey.
[out, optional] CreateDisposition
Указатель на расположение, которое получает REG_CREATED_NEW_KEY, если создается новый ключ или REG_OPENED_EXISTING_KEY, если открыт существующий ключ. Эти значения определены в Wdm.h. Этот указатель необязателен и может быть null.
[in, optional] KeyAttributes
Указатель на WDF_OBJECT_ATTRIBUTES структуру, содержащую атрибуты, предоставленные драйвером для нового объекта реестра. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.
[out] Key
Указатель на расположение, которое получает дескриптор к новому объекту раздела реестра.
Возвращаемое значение
WdfRegistryCreateKey возвращает STATUS_SUCCESS, если операция завершится успешно. В противном случае метод может вернуть одно из следующих значений:
| Код возврата | Описание |
|---|---|
|
WdfRegistryCreateKey не был вызван в IRQL = PASSIVE_LEVEL. |
|
Указан недопустимый параметр. |
|
Не удалось выделить объект раздела реестра. |
|
Система отрицала указанные права доступа. |
|
Указанный раздел реестра не существует. |
Список других возвращаемых значений, которые может возвращать метод WdfRegistryCreateKey, см. ошибках создания объектов Framework.
Этот метод также может возвращать другие значения NTSTATUS.
Замечания
Чтобы получить дескриптор объекта реестра, представляющего родительский ключ, драйвер может вызывать WdfDriverOpenParametersRegistryKey, WdfDeviceOpenRegistryKeyили WdfFdoInitOpenRegistryKey.
По умолчанию родительский объект раздела реестра является объектом драйвера платформы, который создает метод WdfDriverCreate. Вы можете использовать элемент ParentObject структуры WDF_OBJECT_ATTRIBUTES для указания другого родительского элемента. Платформа удаляет объект реестра с ключом реестра при удалении родительского объекта. Если драйвер не изменяет родительский элемент по умолчанию, драйвер должен удалить объект раздела реестра после завершения работы с объектом; в противном случае объект раздела реестра останется до тех пор, пока диспетчер ввода-вывода не выгрузит драйвер.
Если драйвер не изменяет родительский элемент по умолчанию, драйвер должен вызвать WdfRegistryClose после завершения использования объекта; в противном случае объект раздела реестра останется до тех пор, пока диспетчер ввода-вывода не выгрузит драйвер. Кроме того, драйвер может вызывать WdfObjectDelete для удаления объекта реестра.
Дополнительные сведения о объектах раздела реестра см. в разделе Использование реестра в Framework-Based драйверах.
Примеры
В следующем примере кода открывается ключ программного обеспечения драйвера, а затем он создает и открывает раздел реестра myKeyStr myKeyStr, который находится под ключом программного обеспечения драйвера.
WDFKEY hKey, subkey;
NTSTATUS status;
UNICODE_STRING myKeyStr;
status = WdfDeviceOpenRegistryKey(
device,
PLUGPLAY_REGKEY_DRIVER,
KEY_READ,
WDF_NO_OBJECT_ATTRIBUTES,
&hKey
);
if (NT_SUCCESS(status)){
RtlInitUnicodeString(
&myKeyStr,
L"myKeyStr"
);
status = WdfRegistryCreateKey(
hKey,
&myKeyStr,
KEY_READ,
REG_OPTION_NON_VOLATILE,
NULL,
WDF_NO_OBJECT_ATTRIBUTES,
&subkey
);
}
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | универсальный |
| минимальная версия KMDF | 1.0 |
| минимальная версия UMDF | 2.0 |
| Заголовок | wdfregistry.h (include Wdf.h) |
| Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | PASSIVE_LEVEL |
| правил соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |