Commit 3259c81e authored by André Hentschel's avatar André Hentschel Committed by Alexandre Julliard

ntdll: Implement KeyNameInformation.

parent 5a9564d9
...@@ -217,6 +217,7 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i ...@@ -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 KeyBasicInformation: data_ptr = ((KEY_BASIC_INFORMATION *)info)->Name; break;
case KeyFullInformation: data_ptr = ((KEY_FULL_INFORMATION *)info)->Class; break; case KeyFullInformation: data_ptr = ((KEY_FULL_INFORMATION *)info)->Class; break;
case KeyNodeInformation: data_ptr = ((KEY_NODE_INFORMATION *)info)->Name; break; case KeyNodeInformation: data_ptr = ((KEY_NODE_INFORMATION *)info)->Name; break;
case KeyNameInformation: data_ptr = ((KEY_NAME_INFORMATION *)info)->Name; break;
default: default:
FIXME( "Information class %d not implemented\n", info_class ); FIXME( "Information class %d not implemented\n", info_class );
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
...@@ -280,6 +281,14 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i ...@@ -280,6 +281,14 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i
memcpy( info, &keyinfo, min( length, fixed_size ) ); memcpy( info, &keyinfo, min( length, fixed_size ) );
} }
break; 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; *result_len = fixed_size + reply->total;
if (length < *result_len) ret = STATUS_BUFFER_OVERFLOW; if (length < *result_len) ret = STATUS_BUFFER_OVERFLOW;
......
...@@ -614,7 +614,8 @@ typedef enum _FSINFOCLASS { ...@@ -614,7 +614,8 @@ typedef enum _FSINFOCLASS {
typedef enum _KEY_INFORMATION_CLASS { typedef enum _KEY_INFORMATION_CLASS {
KeyBasicInformation, KeyBasicInformation,
KeyNodeInformation, KeyNodeInformation,
KeyFullInformation KeyFullInformation,
KeyNameInformation
} KEY_INFORMATION_CLASS; } KEY_INFORMATION_CLASS;
typedef enum _KEY_VALUE_INFORMATION_CLASS { typedef enum _KEY_VALUE_INFORMATION_CLASS {
...@@ -1068,6 +1069,11 @@ typedef struct _KEY_FULL_INFORMATION ...@@ -1068,6 +1069,11 @@ typedef struct _KEY_FULL_INFORMATION
WCHAR Class[1]; WCHAR Class[1];
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION; } 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 typedef struct _KEY_VALUE_ENTRY
{ {
PUNICODE_STRING ValueName; PUNICODE_STRING ValueName;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment