|
|
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
CmRegUtil.h
Abstract:
This header exposes various utility routines for accessing the registry.
Author:
Adrian J. Oney - April 21, 2002
Revision History:
--*/
//
// A handy macro for converting regstr.h paths into full kernel HKLM paths
//
#define CM_REGISTRY_MACHINE(x) L"\\Registry\\Machine\\"##x
//
// This macro returns the pointer to the beginning of the data area of
// KEY_VALUE_FULL_INFORMATION structure. In the macro, k is a pointer to
// KEY_VALUE_FULL_INFORMATION structure.
//
#define KEY_VALUE_DATA(k) ((PCHAR)(k) + (k)->DataOffset)
//
// Unicode primitives - these are the best functions to use.
//
NTSTATUS CmRegUtilOpenExistingUcKey( IN HANDLE BaseHandle OPTIONAL, IN PUNICODE_STRING KeyName, IN ACCESS_MASK DesiredAccess, OUT HANDLE *Handle );
NTSTATUS CmRegUtilCreateUcKey( IN HANDLE BaseHandle, IN PUNICODE_STRING KeyName, IN ACCESS_MASK DesiredAccess, IN ULONG CreateOptions, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, OUT ULONG *Disposition OPTIONAL, OUT HANDLE *Handle );
NTSTATUS CmRegUtilUcValueGetDword( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG DefaultValue, OUT ULONG *Value );
NTSTATUS CmRegUtilUcValueGetFullBuffer( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG DataType OPTIONAL, IN ULONG LikelyDataLength OPTIONAL, OUT PKEY_VALUE_FULL_INFORMATION *Information );
NTSTATUS CmRegUtilUcValueSetFullBuffer( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG DataType, IN PVOID Buffer, IN ULONG BufferSize );
NTSTATUS CmRegUtilUcValueSetUcString( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN PUNICODE_STRING ValueData );
//
// WSTR and mixed primitives
//
NTSTATUS CmRegUtilOpenExistingWstrKey( IN HANDLE BaseHandle OPTIONAL, IN PWSTR KeyName, IN ACCESS_MASK DesiredAccess, OUT HANDLE *Handle );
NTSTATUS CmRegUtilCreateWstrKey( IN HANDLE BaseHandle, IN PWSTR KeyName, IN ACCESS_MASK DesiredAccess, IN ULONG CreateOptions, IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL, OUT ULONG *Disposition OPTIONAL, OUT HANDLE *Handle );
NTSTATUS CmRegUtilWstrValueGetDword( IN HANDLE KeyHandle, IN PWSTR ValueName, IN ULONG DefaultValue, OUT ULONG *Value );
NTSTATUS CmRegUtilWstrValueGetFullBuffer( IN HANDLE KeyHandle, IN PWSTR ValueName, IN ULONG DataType OPTIONAL, IN ULONG LikelyDataLength OPTIONAL, OUT PKEY_VALUE_FULL_INFORMATION *Information );
NTSTATUS CmRegUtilWstrValueSetFullBuffer( IN HANDLE KeyHandle, IN PWSTR ValueName, IN ULONG DataType, IN PVOID Buffer, IN ULONG BufferSize );
NTSTATUS CmRegUtilWstrValueSetUcString( IN HANDLE KeyHandle, IN PWSTR ValueName, IN PUNICODE_STRING ValueData );
NTSTATUS CmRegUtilUcValueSetWstrString( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN PWSTR ValueData );
NTSTATUS CmRegUtilWstrValueSetWstrString( IN HANDLE KeyHandle, IN PWSTR ValueName, IN PWSTR ValueData );
|