1.1.2 Registry

IoAssignResources 
Takes an input list of preferred and alternative, or required, hardware resources needed for a driver or device, inspects the registry for available hardware resources, claims hardware resources in the registry ResourceMap tree, and returns configuration information about the hardware resources it claimed for the caller.
HalAssignSlotResources 
Like IoAssignResources, takes an input list of preferred and alternative hardware resources and claims available hardware resources in the registry ResourceMap tree, returning information about the resources it claimed to the caller. However, this routine claims hardware resources only for drivers of devices on any given type of dynamically configurable I/O bus with a published standard interface.
IoQueryDeviceDescription 
Supplies basic hardware information about one or more of the given bus type and bus number, controller type and controller number, and/or peripheral type and peripheral number from the registry to a driver-supplied configuration-callback routine.
IoReportResourceUsage 
Claims hardware resources, such as ports in I/O space or device registers in memory space, an interrupt vector, or a particular DMA controller channel, in the registry so that a subsequently loaded driver cannot attempt to use the same resources. To claim most types of resources, calling IoAssignResources or HalAssignSlotResources is preferable.
RtlCheckRegistryKey 
Returns STATUS_SUCCESS if a key exists in the registry along the given relative path.
RtlCreateRegistryKey 
Adds a key object in the registry along the given relative path.
RtlQueryRegistryValues 
Gives the driver-supplied QueryRegistry callback (read only) access to the entries for the specified value name along the specified relative path in the registry when the QueryRegistry routine is given control.
RtlWriteRegistryValue 
Writes caller-supplied data into the registry along the specified relative path at the given value name.
RtlDeleteRegistryValue 
Removes the specified value name (and the associated value entries) from the registry along the given relative path.
InitializeObjectAttributes 
Sets up a parameter of type OBJECT_ATTRIBUTES for a subsequent call to a ZwCreateXxx or ZwOpenXxx routine.
ZwCreateKey 
Creates a new key in the registry with the given object attributes, allowed access, and creation options (such as whether the key is re-created when the system is booted), or opens an existing key, and returns a handle for the key object.
ZwOpenKey 
Returns a handle for a key in the registry, given the object’s attributes (which must include a name for the key) and the desired access to the object.
ZwQueryKey 
Returns information about the class of a key, and the number and sizes of its subkeys, such as the length of subkey names and the size of value entries.
ZwEnumerateKey 
Returns the specified information about the subkeys of an opened key in the registry.
ZwEnumerateValueKey 
Returns the specified information about the value entry, as selected by a zero-based index, of an opened key in the registry.
ZwQueryValueKey 
Returns the value entry, as selected by a zero-based index, for an opened key in the registry.
ZwSetValueKey 
Replaces (or creates) a value entry for an opened key in the registry.
ZwFlushKey 
Forces changes made by ZwCreateKey or ZwSetValueKey for the opened key object to be written to disk.
ZwDeleteKey 
Removes a key and its value entries from the registry as soon as the key is closed.
ZwClose 
Releases the handle for an opened object, causing the handle to become invalid and decrementing the reference count of the object handle.