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
Uso de las versiones Nt y Zw de las rutinas nativas de Servicios del sistema