Implemented some ascii functions

svn path=/trunk/; revision=1371
This commit is contained in:
Eric Kohl 2000-09-27 01:22:31 +00:00
parent 0ea51977f6
commit 99434057af
2 changed files with 118 additions and 23 deletions

View file

@ -1,4 +1,4 @@
; $Id: advapi32.edf,v 1.9 2000/09/06 19:57:58 ekohl Exp $
; $Id: advapi32.edf,v 1.10 2000/09/27 01:22:31 ekohl Exp $
;
; advapi32.def
;
@ -288,8 +288,8 @@ QueryServiceStatus=QueryServiceStatus@8
;ReadEventLogA=ReadEventLogA@28
;ReadEventLogW=ReadEventLogW@28
RegCloseKey=RegCloseKey@4
;RegConnectRegistryA=RegConnectRegistryA@12
;RegConnectRegistryW=RegConnectRegistryW@12
RegConnectRegistryA=RegConnectRegistryA@12
RegConnectRegistryW=RegConnectRegistryW@12
RegCreateKeyA=RegCreateKeyA@12
RegCreateKeyExA=RegCreateKeyExA@36
RegCreateKeyExW=RegCreateKeyExW@36
@ -300,12 +300,12 @@ RegDeleteValueA=RegDeleteValueA@8
RegDeleteValueW=RegDeleteValueW@8
RegEnumKeyA=RegEnumKeyA@16
RegEnumKeyExA=RegEnumKeyExA@32
;RegEnumKeyExW=RegEnumKeyExW@32
;RegEnumKeyW=RegEnumKeyW@16
RegEnumKeyExW=RegEnumKeyExW@32
RegEnumKeyW=RegEnumKeyW@16
RegEnumValueA=RegEnumValueA@32
;RegEnumValueW=RegEnumValueW@32
RegEnumValueW=RegEnumValueW@32
RegFlushKey=RegFlushKey@4
;RegGetKeySecurity=RegGetKeySecurity@16
RegGetKeySecurity=RegGetKeySecurity@16
RegLoadKeyA=RegLoadKeyA@12
RegLoadKeyW=RegLoadKeyW@12
RegNotifyChangeKeyValue=RegNotifyChangeKeyValue@20
@ -316,24 +316,24 @@ RegOpenKeyW=RegOpenKeyW@12
RegQueryInfoKeyA=RegQueryInfoKeyA@48
RegQueryInfoKeyW=RegQueryInfoKeyW@48
RegQueryMultipleValuesA=RegQueryMultipleValuesA@20
;RegQueryMultipleValuesW=RegQueryMultipleValuesW@20
RegQueryMultipleValuesW=RegQueryMultipleValuesW@20
RegQueryValueA=RegQueryValueA@16
RegQueryValueExA=RegQueryValueExA@24
RegQueryValueExW=RegQueryValueExW@24
;RegQueryValueW=RegQueryValueW@16
RegQueryValueW=RegQueryValueW@16
RegReplaceKeyA=RegReplaceKeyA@16
;RegReplaceKeyW=RegReplaceKeyW@16
RegReplaceKeyW=RegReplaceKeyW@16
RegRestoreKeyA=RegRestoreKeyA@12
;RegRestoreKeyW=RegRestoreKeyW@12
RegRestoreKeyW=RegRestoreKeyW@12
RegSaveKeyA=RegSaveKeyA@12
;RegSaveKeyW=RegSaveKeyW@12
;RegSetKeySecurity=RegSetKeySecurity@12
RegSaveKeyW=RegSaveKeyW@12
RegSetKeySecurity=RegSetKeySecurity@12
RegSetValueA=RegSetValueA@20
RegSetValueExA=RegSetValueExA@24
RegSetValueExW=RegSetValueExW@24
RegSetValueW=RegSetValueW@20
RegUnLoadKeyA=RegUnLoadKeyA@8
;RegUnLoadKeyW=RegUnLoadKeyW@8
RegUnLoadKeyW=RegUnLoadKeyW@8
;RegisterEventSourceA=RegisterEventSourceA@8
;RegisterEventSourceW=RegisterEventSourceW@8
RegisterServiceCtrlHandlerA=RegisterServiceCtrlHandlerA@8

View file

@ -1,4 +1,4 @@
/* $Id: reg.c,v 1.10 2000/09/08 22:54:13 ekohl Exp $
/* $Id: reg.c,v 1.11 2000/09/27 01:21:27 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
@ -363,8 +363,62 @@ RegDeleteKeyA(
LPCSTR lpSubKey
)
{
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return ERROR_CALL_NOT_IMPLEMENTED;
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING SubKeyStringW;
ANSI_STRING SubKeyStringA;
HANDLE ParentKey;
HANDLE TargetKey;
NTSTATUS Status;
LONG ErrorCode;
Status = MapDefaultKey(&ParentKey,
hKey);
if (!NT_SUCCESS(Status))
{
ErrorCode = RtlNtStatusToDosError(Status);
SetLastError (ErrorCode);
return ErrorCode;
}
RtlInitAnsiString(&SubKeyStringA,
(LPSTR)lpSubKey);
RtlAnsiStringToUnicodeString(&SubKeyStringW,
&SubKeyStringA,
TRUE);
InitializeObjectAttributes (&ObjectAttributes,
&SubKeyStringW,
OBJ_CASE_INSENSITIVE,
(HANDLE)ParentKey,
NULL);
Status = NtOpenKey (&TargetKey,
DELETE,
&ObjectAttributes);
RtlFreeUnicodeString (&SubKeyStringW);
if (!NT_SUCCESS(Status))
{
ErrorCode = RtlNtStatusToDosError(Status);
SetLastError (ErrorCode);
return ErrorCode;
}
Status = NtDeleteKey(TargetKey);
NtClose(TargetKey);
if (!NT_SUCCESS(Status))
{
ErrorCode = RtlNtStatusToDosError(Status);
SetLastError (ErrorCode);
return ErrorCode;
}
return ERROR_SUCCESS;
}
@ -404,7 +458,6 @@ RegDeleteKeyW(
(HANDLE)ParentKey,
NULL);
Status = NtOpenKey (&TargetKey,
DELETE,
&ObjectAttributes);
@ -441,8 +494,42 @@ RegDeleteValueA(
LPCSTR lpValueName
)
{
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return ERROR_CALL_NOT_IMPLEMENTED;
UNICODE_STRING ValueNameW;
ANSI_STRING ValueNameA;
NTSTATUS Status;
LONG ErrorCode;
HANDLE KeyHandle;
Status = MapDefaultKey(&KeyHandle,
hKey);
if (!NT_SUCCESS(Status))
{
ErrorCode = RtlNtStatusToDosError(Status);
SetLastError (ErrorCode);
return ErrorCode;
}
RtlInitAnsiString(&ValueNameA,
(LPSTR)lpValueName);
RtlAnsiStringToUnicodeString(&ValueNameW,
&ValueNameA,
TRUE);
Status = NtDeleteValueKey(KeyHandle,
&ValueNameW);
RtlFreeUnicodeString (&ValueNameW);
if (!NT_SUCCESS(Status))
{
ErrorCode = RtlNtStatusToDosError(Status);
SetLastError (ErrorCode);
return ErrorCode;
}
return ERROR_SUCCESS;
}
@ -472,7 +559,7 @@ RegDeleteValueW(
}
RtlInitUnicodeString(&ValueName,
lpValueName);
(LPWSTR)lpValueName);
Status = NtDeleteValueKey(KeyHandle,
&ValueName);
@ -500,8 +587,16 @@ RegEnumKeyA(
DWORD cbName
)
{
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return ERROR_CALL_NOT_IMPLEMENTED;
DWORD dwLength = cbName;
return RegEnumKeyExA(hKey,
dwIndex,
lpName,
&dwLength,
NULL,
NULL,
NULL,
NULL);
}