Update for VALENTA and VALENTW type changes.

Change HANDLE to HKEY throughout.
Bugfix and memory leak fixed.

svn path=/trunk/; revision=3690
This commit is contained in:
Robert Dickenson 2002-11-02 13:55:06 +00:00
parent 781e188154
commit d6d5e1af3d

View file

@ -1,4 +1,4 @@
/* $Id: reg.c,v 1.17 2002/09/08 10:22:36 chorns Exp $ /* $Id: reg.c,v 1.18 2002/11/02 13:55:06 robd Exp $
* *
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries * PROJECT: ReactOS system libraries
@ -286,7 +286,7 @@ RegCloseKey(HKEY hKey)
* RegConnectRegistryA * RegConnectRegistryA
*/ */
LONG STDCALL LONG STDCALL
RegConnectRegistryA(LPSTR lpMachineName, RegConnectRegistryA(LPCSTR lpMachineName,
HKEY hKey, HKEY hKey,
PHKEY phkResult) PHKEY phkResult)
{ {
@ -299,7 +299,7 @@ RegConnectRegistryA(LPSTR lpMachineName,
* RegConnectRegistryW * RegConnectRegistryW
*/ */
LONG STDCALL LONG STDCALL
RegConnectRegistryW(LPWSTR lpMachineName, RegConnectRegistryW(LPCWSTR lpMachineName,
HKEY hKey, HKEY hKey,
PHKEY phkResult) PHKEY phkResult)
{ {
@ -495,7 +495,8 @@ RegDeleteKeyA(
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING SubKeyStringW; UNICODE_STRING SubKeyStringW;
ANSI_STRING SubKeyStringA; ANSI_STRING SubKeyStringA;
HANDLE ParentKey; // HANDLE ParentKey;
HKEY ParentKey;
HANDLE TargetKey; HANDLE TargetKey;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
@ -563,7 +564,7 @@ RegDeleteKeyW(
{ {
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
HANDLE ParentKey; HKEY ParentKey;
HANDLE TargetKey; HANDLE TargetKey;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
@ -627,7 +628,7 @@ RegDeleteValueA(
ANSI_STRING ValueNameA; ANSI_STRING ValueNameA;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
HANDLE KeyHandle; HKEY KeyHandle;
Status = MapDefaultKey(&KeyHandle, Status = MapDefaultKey(&KeyHandle,
hKey); hKey);
@ -675,7 +676,7 @@ RegDeleteValueW(
UNICODE_STRING ValueName; UNICODE_STRING ValueName;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
HANDLE KeyHandle; HKEY KeyHandle;
Status = MapDefaultKey(&KeyHandle, Status = MapDefaultKey(&KeyHandle,
hKey); hKey);
@ -843,7 +844,7 @@ RegEnumKeyExW(
DWORD dwError = ERROR_SUCCESS; DWORD dwError = ERROR_SUCCESS;
ULONG BufferSize; ULONG BufferSize;
ULONG ResultSize; ULONG ResultSize;
HANDLE KeyHandle; HKEY KeyHandle;
Status = MapDefaultKey(&KeyHandle, hKey); Status = MapDefaultKey(&KeyHandle, hKey);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
@ -856,7 +857,12 @@ RegEnumKeyExW(
BufferSize = sizeof (KEY_NODE_INFORMATION) + *lpcbName * sizeof(WCHAR); BufferSize = sizeof (KEY_NODE_INFORMATION) + *lpcbName * sizeof(WCHAR);
if (lpClass) if (lpClass)
BufferSize += *lpcbClass; BufferSize += *lpcbClass;
KeyInfo = RtlAllocateHeap(RtlGetProcessHeap(), 0, BufferSize);
//
// I think this is a memory leak, always allocated again below ???
//
// KeyInfo = RtlAllocateHeap(RtlGetProcessHeap(), 0, BufferSize);
//
/* We don't know the exact size of the data returned, so call /* We don't know the exact size of the data returned, so call
NtEnumerateKey() with a buffer size determined from parameters NtEnumerateKey() with a buffer size determined from parameters
@ -1031,7 +1037,7 @@ RegEnumValueW(
DWORD dwError = ERROR_SUCCESS; DWORD dwError = ERROR_SUCCESS;
ULONG BufferSize; ULONG BufferSize;
ULONG ResultSize; ULONG ResultSize;
HANDLE KeyHandle; HKEY KeyHandle;
Status = MapDefaultKey(&KeyHandle, hKey); Status = MapDefaultKey(&KeyHandle, hKey);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
@ -1103,7 +1109,7 @@ RegEnumValueW(
if (lpData) if (lpData)
{ {
memcpy(lpData, memcpy(lpData,
(PVOID)((ULONG_PTR)ValueInfo->Name + ValueInfo->DataOffset), (PVOID)((ULONG_PTR)ValueInfo + ValueInfo->DataOffset),
ValueInfo->DataLength); ValueInfo->DataLength);
*lpcbData = (DWORD)ValueInfo->DataLength; *lpcbData = (DWORD)ValueInfo->DataLength;
} }
@ -1124,7 +1130,7 @@ RegEnumValueW(
LONG STDCALL LONG STDCALL
RegFlushKey(HKEY hKey) RegFlushKey(HKEY hKey)
{ {
HANDLE KeyHandle; HKEY KeyHandle;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
@ -1235,7 +1241,7 @@ RegOpenKeyA(HKEY hKey,
{ {
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
HANDLE KeyHandle; HKEY KeyHandle;
LONG ErrorCode; LONG ErrorCode;
NTSTATUS Status; NTSTATUS Status;
@ -1292,7 +1298,7 @@ RegOpenKeyW (
NTSTATUS errCode; NTSTATUS errCode;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE KeyHandle; HKEY KeyHandle;
LONG ErrorCode; LONG ErrorCode;
errCode = MapDefaultKey(&KeyHandle, errCode = MapDefaultKey(&KeyHandle,
@ -1342,7 +1348,7 @@ RegOpenKeyExA(HKEY hKey,
{ {
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
HANDLE KeyHandle; HKEY KeyHandle;
LONG ErrorCode; LONG ErrorCode;
NTSTATUS Status; NTSTATUS Status;
@ -1395,7 +1401,7 @@ RegOpenKeyExW(HKEY hKey,
{ {
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
HANDLE KeyHandle; HKEY KeyHandle;
LONG ErrorCode; LONG ErrorCode;
NTSTATUS Status; NTSTATUS Status;
@ -1515,7 +1521,7 @@ RegQueryInfoKeyW(
KEY_FULL_INFORMATION FullInfoBuffer; KEY_FULL_INFORMATION FullInfoBuffer;
PKEY_FULL_INFORMATION FullInfo; PKEY_FULL_INFORMATION FullInfo;
ULONG FullInfoSize; ULONG FullInfoSize;
HANDLE KeyHandle; HKEY KeyHandle;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
ULONG Length; ULONG Length;
@ -1629,7 +1635,7 @@ LONG
STDCALL STDCALL
RegQueryMultipleValuesA( RegQueryMultipleValuesA(
HKEY hKey, HKEY hKey,
PVALENT val_list, PVALENTA val_list,
DWORD num_vals, DWORD num_vals,
LPSTR lpValueBuf, LPSTR lpValueBuf,
LPDWORD ldwTotsize LPDWORD ldwTotsize
@ -1648,7 +1654,7 @@ LONG
STDCALL STDCALL
RegQueryMultipleValuesW( RegQueryMultipleValuesW(
HKEY hKey, HKEY hKey,
PVALENT val_list, PVALENTW val_list,
DWORD num_vals, DWORD num_vals,
LPWSTR lpValueBuf, LPWSTR lpValueBuf,
LPDWORD ldwTotsize LPDWORD ldwTotsize
@ -1745,7 +1751,7 @@ LONG
STDCALL STDCALL
RegQueryValueExA( RegQueryValueExA(
HKEY hKey, HKEY hKey,
LPSTR lpValueName, LPCSTR lpValueName,
LPDWORD lpReserved, LPDWORD lpReserved,
LPDWORD lpType, LPDWORD lpType,
LPBYTE lpData, LPBYTE lpData,
@ -1849,7 +1855,7 @@ LONG
STDCALL STDCALL
RegQueryValueExW( RegQueryValueExW(
HKEY hKey, HKEY hKey,
LPWSTR lpValueName, LPCWSTR lpValueName,
LPDWORD lpReserved, LPDWORD lpReserved,
LPDWORD lpType, LPDWORD lpType,
LPBYTE lpData, LPBYTE lpData,
@ -1862,7 +1868,7 @@ RegQueryValueExW(
DWORD dwError = ERROR_SUCCESS; DWORD dwError = ERROR_SUCCESS;
ULONG BufferSize; ULONG BufferSize;
ULONG ResultSize; ULONG ResultSize;
HANDLE KeyHandle; HKEY KeyHandle;
DPRINT("hKey 0x%X lpValueName %S lpData 0x%X lpcbData %d\n", DPRINT("hKey 0x%X lpValueName %S lpData 0x%X lpcbData %d\n",
hKey, lpValueName, lpData, lpcbData ? *lpcbData : 0); hKey, lpValueName, lpData, lpcbData ? *lpcbData : 0);
@ -1954,7 +1960,7 @@ RegQueryValueW(
NTSTATUS errCode; NTSTATUS errCode;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE KeyHandle; HKEY KeyHandle;
HANDLE RealKey; HANDLE RealKey;
LONG ErrorCode; LONG ErrorCode;
BOOL CloseRealKey; BOOL CloseRealKey;
@ -2120,7 +2126,7 @@ RegSaveKeyW(HKEY hKey,
UNICODE_STRING NtName; UNICODE_STRING NtName;
IO_STATUS_BLOCK IoStatusBlock; IO_STATUS_BLOCK IoStatusBlock;
HANDLE FileHandle; HANDLE FileHandle;
HANDLE KeyHandle; HKEY KeyHandle;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
@ -2353,7 +2359,7 @@ RegSetValueExW(
{ {
UNICODE_STRING ValueName; UNICODE_STRING ValueName;
PUNICODE_STRING pValueName; PUNICODE_STRING pValueName;
HANDLE KeyHandle; HKEY KeyHandle;
NTSTATUS Status; NTSTATUS Status;
LONG ErrorCode; LONG ErrorCode;
@ -2409,7 +2415,7 @@ RegSetValueW(
NTSTATUS errCode; NTSTATUS errCode;
UNICODE_STRING SubKeyString; UNICODE_STRING SubKeyString;
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE KeyHandle; HKEY KeyHandle;
HANDLE RealKey; HANDLE RealKey;
LONG ErrorCode; LONG ErrorCode;
BOOL CloseRealKey; BOOL CloseRealKey;