André Hentschel : ntdll: Implement KeyNameInformation.
Alexandre Julliard
julliard at winehq.org
Mon Oct 26 10:08:35 CDT 2009
Module: wine
Branch: master
Commit: 3259c81e10541e606b1e3e165174074dbe087d82
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3259c81e10541e606b1e3e165174074dbe087d82
Author: André Hentschel <nerv at dawncrow.de>
Date: Sun Oct 25 15:40:43 2009 +0100
ntdll: Implement KeyNameInformation.
---
dlls/ntdll/reg.c | 9 +++++++++
include/winternl.h | 8 +++++++-
2 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c
index f9db5a6..7d24a9b 100644
--- a/dlls/ntdll/reg.c
+++ b/dlls/ntdll/reg.c
@@ -217,6 +217,7 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i
case KeyBasicInformation: data_ptr = ((KEY_BASIC_INFORMATION *)info)->Name; break;
case KeyFullInformation: data_ptr = ((KEY_FULL_INFORMATION *)info)->Class; break;
case KeyNodeInformation: data_ptr = ((KEY_NODE_INFORMATION *)info)->Name; break;
+ case KeyNameInformation: data_ptr = ((KEY_NAME_INFORMATION *)info)->Name; break;
default:
FIXME( "Information class %d not implemented\n", info_class );
return STATUS_INVALID_PARAMETER;
@@ -280,6 +281,14 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i
memcpy( info, &keyinfo, min( length, fixed_size ) );
}
break;
+ case KeyNameInformation:
+ {
+ KEY_NAME_INFORMATION keyinfo;
+ fixed_size = (char *)keyinfo.Name - (char *)&keyinfo;
+ keyinfo.NameLength = reply->namelen;
+ memcpy( info, &keyinfo, min( length, fixed_size ) );
+ }
+ break;
}
*result_len = fixed_size + reply->total;
if (length < *result_len) ret = STATUS_BUFFER_OVERFLOW;
diff --git a/include/winternl.h b/include/winternl.h
index a78e9e5..633239f 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -614,7 +614,8 @@ typedef enum _FSINFOCLASS {
typedef enum _KEY_INFORMATION_CLASS {
KeyBasicInformation,
KeyNodeInformation,
- KeyFullInformation
+ KeyFullInformation,
+ KeyNameInformation
} KEY_INFORMATION_CLASS;
typedef enum _KEY_VALUE_INFORMATION_CLASS {
@@ -1068,6 +1069,11 @@ typedef struct _KEY_FULL_INFORMATION
WCHAR Class[1];
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
+typedef struct _KEY_NAME_INFORMATION {
+ ULONG NameLength;
+ WCHAR Name[1];
+} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
+
typedef struct _KEY_VALUE_ENTRY
{
PUNICODE_STRING ValueName;
More information about the wine-cvs
mailing list