Compartir a través de


Función ZwSetValueKey (wdm.h)

La rutina ZwSetValueKey crea o reemplaza la entrada de valor de una clave del Registro.

Sintaxis

NTSYSAPI NTSTATUS ZwSetValueKey(
  [in]           HANDLE          KeyHandle,
  [in]           PUNICODE_STRING ValueName,
  [in, optional] ULONG           TitleIndex,
  [in]           ULONG           Type,
  [in, optional] PVOID           Data,
  [in]           ULONG           DataSize
);

Parámetros

[in] KeyHandle

Controle la clave del Registro para la que escribir una entrada de valor. Este identificador se crea mediante una llamada correcta a ZwCreateKey o ZwOpenKey.

[in] ValueName

Puntero al nombre de la entrada de valor para la que se van a escribir los datos. Este parámetro puede ser un puntero NULL si la entrada de valor no tiene ningún nombre. Si se especifica una cadena de nombre y el nombre especificado no es único en relación con su clave contenedora, se reemplazan los datos de una entrada de valor existente.

[in, optional] TitleIndex

Este parámetro está reservado. Los controladores intermedios y de dispositivo deben establecer este parámetro en cero.

[in] Type

Uno de los siguientes tipos de datos definidos por el sistema que se van a escribir:

Valor de tipo Significado
REG_BINARY Datos binarios en cualquier formato.
REG_DWORD Valor numérico de 4 bytes.
REG_DWORD_LITTLE_ENDIAN Valor numérico de 4 bytes con el byte menos significativo en la dirección más baja. Idéntico a REG_DWORD.
REG_DWORD_BIG_ENDIAN Valor numérico de 4 bytes con el byte menos significativo en la dirección más alta.
REG_EXPAND_SZ Cadena Unicode terminada en null que contiene referencias no expandidas a variables de entorno, como "%PATH%".
REG_LINK Cadena Unicode que asigna un nombre a un vínculo simbólico. Este tipo es irrelevante para los controladores intermedios y del dispositivo.
REG_MULTI_SZ Matriz de cadenas terminadas en null, terminadas por otro cero.
REG_NONE Datos sin ningún tipo determinado.
REG_SZ Cadena Unicode terminada en null.
REG_RESOURCE_LIST Lista de recursos de hardware de un controlador de dispositivo, que usa el controlador o uno de los dispositivos físicos que controla, en el árbol \ResourceMap
REG_RESOURCE_REQUIREMENTS_LIST Lista de recursos de hardware posibles de un controlador de dispositivo o uno de los dispositivos físicos que controla puede usar, desde el que el sistema escribe un subconjunto en el árbol \ResourceMap .
REG_FULL_RESOURCE_DESCRIPTOR Lista de recursos de hardware que usa un dispositivo físico, detectado y escrito en el árbol \HardwareDescription por el sistema

Los controladores de dispositivo no deben intentar llamar a ZwSetValueKey para escribir explícitamente entradas de valor en una subclave de la clave \Registry...\ResourceMap . Solo el sistema puede escribir entradas de valor en el árbol \Registry...\HardwareDescription .

[in, optional] Data

Puntero a un búfer asignado por el autor de la llamada que contiene los datos de la entrada de valor.

[in] DataSize

Especifica el tamaño, en bytes, del búfer de datos . Si Type es REG_XXX_SZ, este valor debe incluir espacio para los ceros de terminación.

Valor devuelto

ZwSetValueKey devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, esta rutina podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_ACCESS_DENIED El autor de la llamada no tiene acceso adecuado al valor del Registro.
STATUS_INVALID_HANDLE El identificador no es válido.

Comentarios

KeyHandle pasado a ZwSetValueKey debe haberse abierto con la marca desiredAccess de KEY_SET_VALUE establecida para que esta llamada se realice correctamente. Para obtener una descripción de los valores posibles para DesiredAccess, consulte ZwCreateKey.

Si la clave especificada no tiene ninguna entrada de valor existente con un nombre que coincida con valueName dado, ZwSetValueKey crea una nueva entrada de valor con el nombre especificado. Si existe un nombre de entrada de valor coincidente, esta rutina sobrescribe la entrada de valor original para el valueName especificado. Por lo tanto, ZwSetValueKey conserva un nombre único para cada entrada de valor de cualquier clave determinada. Aunque cada nombre de entrada de valor debe ser único para su clave contenedora, muchas claves diferentes del Registro pueden tener entradas de valor con los mismos nombres.

Para obtener más información sobre cómo trabajar con claves del Registro, consulte Uso del Registro en un controlador.

Si la llamada a esta función se produce en modo de usuario, debe usar el nombre "NtSetValueKey" en lugar de "ZwSetValueKey".

En el caso de las llamadas desde controladores en modo kernel, las versiones NtXxx y ZwXxx de una rutina de Servicios del sistema nativo de Windows se pueden comportar de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

Consulte también

HalAssignSlotResources

IoAssignResources

IoQueryDeviceDescription

IoReportResourceUsage

Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema

ZwClose

ZwCreateKey

ZwFlushKey

ZwOpenKey