mirror of
https://github.com/reactos/reactos.git
synced 2024-08-08 04:08:29 +00:00
lib/advapi32/reg/reg.c:
copied from wine RegQueryMultipleValuesW, RegReplaceKeyA, RegRestoreKeyA marked RegSaveKeyA as @implemented svn path=/trunk/; revision=5196
This commit is contained in:
parent
e9966875c8
commit
39dc42b6a6
|
@ -1,4 +1,4 @@
|
|||
/* $Id: reg.c,v 1.26 2003/07/12 00:03:42 ekohl Exp $
|
||||
/* $Id: reg.c,v 1.27 2003/07/21 00:32:23 royce Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
|
@ -1811,7 +1811,7 @@ RegQueryMultipleValuesA (HKEY hKey,
|
|||
/************************************************************************
|
||||
* RegQueryMultipleValuesW
|
||||
*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
LONG STDCALL
|
||||
RegQueryMultipleValuesW (HKEY hKey,
|
||||
|
@ -1820,9 +1820,44 @@ RegQueryMultipleValuesW (HKEY hKey,
|
|||
LPWSTR lpValueBuf,
|
||||
LPDWORD ldwTotsize)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
int i;
|
||||
DWORD maxBytes = *ldwTotsize;
|
||||
HRESULT status;
|
||||
LPSTR bufptr = (LPSTR)lpValueBuf;
|
||||
|
||||
if ( maxBytes >= (1024*1024) )
|
||||
return ERROR_TRANSFER_TOO_LONG;
|
||||
|
||||
*ldwTotsize = 0;
|
||||
|
||||
TRACE("(%p,%p,%ld,%p,%p=%ld)\n", hkey, val_list, num_vals, lpValueBuf, ldwTotsize, *ldwTotsize);
|
||||
|
||||
for(i=0; i < num_vals; ++i)
|
||||
{
|
||||
val_list[i].ve_valuelen=0;
|
||||
status = RegQueryValueExW(hkey, val_list[i].ve_valuename, NULL, NULL, NULL, &val_list[i].ve_valuelen);
|
||||
if(status != ERROR_SUCCESS)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
if(lpValueBuf != NULL && *ldwTotsize + val_list[i].ve_valuelen <= maxBytes)
|
||||
{
|
||||
status = RegQueryValueExW(hkey, val_list[i].ve_valuename, NULL, &val_list[i].ve_type,
|
||||
bufptr, &val_list[i].ve_valuelen);
|
||||
if(status != ERROR_SUCCESS)
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
val_list[i].ve_valueptr = (DWORD_PTR)bufptr;
|
||||
|
||||
bufptr += val_list[i].ve_valuelen;
|
||||
}
|
||||
|
||||
*ldwTotsize += val_list[i].ve_valuelen;
|
||||
}
|
||||
return lpValueBuf != NULL && *ldwTotsize <= maxBytes ? ERROR_SUCCESS : ERROR_MORE_DATA;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2166,7 +2201,7 @@ RegQueryValueW (HKEY hKey,
|
|||
/************************************************************************
|
||||
* RegReplaceKeyA
|
||||
*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
LONG STDCALL
|
||||
RegReplaceKeyA (HKEY hKey,
|
||||
|
@ -2174,9 +2209,19 @@ RegReplaceKeyA (HKEY hKey,
|
|||
LPCSTR lpNewFile,
|
||||
LPCSTR lpOldFile)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
UNICODE_STRING lpSubKeyW;
|
||||
UNICODE_STRING lpNewFileW;
|
||||
UNICODE_STRING lpOldFileW;
|
||||
LONG ret;
|
||||
|
||||
RtlCreateUnicodeStringFromAsciiz( &lpSubKeyW, lpSubKey );
|
||||
RtlCreateUnicodeStringFromAsciiz( &lpOldFileW, lpOldFile );
|
||||
RtlCreateUnicodeStringFromAsciiz( &lpNewFileW, lpNewFile );
|
||||
ret = RegReplaceKeyW( hkey, lpSubKeyW.Buffer, lpNewFileW.Buffer, lpOldFileW.Buffer );
|
||||
RtlFreeUnicodeString( &lpOldFileW );
|
||||
RtlFreeUnicodeString( &lpNewFileW );
|
||||
RtlFreeUnicodeString( &lpSubKeyW );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2200,16 +2245,20 @@ RegReplaceKeyW (HKEY hKey,
|
|||
/************************************************************************
|
||||
* RegRestoreKeyA
|
||||
*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
LONG STDCALL
|
||||
RegRestoreKeyA (HKEY hKey,
|
||||
LPCSTR lpFile,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
UNICODE_STRING lpFileW;
|
||||
LONG ret;
|
||||
|
||||
RtlCreateUnicodeStringFromAsciiz( &lpFileW, lpFile );
|
||||
ret = RegRestoreKeyW( hkey, lpFileW.Buffer, dwFlags );
|
||||
RtlFreeUnicodeString( &lpFileW );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2232,7 +2281,7 @@ RegRestoreKeyW (HKEY hKey,
|
|||
/************************************************************************
|
||||
* RegSaveKeyA
|
||||
*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
LONG STDCALL
|
||||
RegSaveKeyA(HKEY hKey,
|
||||
|
|
Loading…
Reference in a new issue