[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 3/8] Add a type argument to the RegistryEnumerateValues() callback...
...and pass ANSI_STRINGs rather than PCHARs. Also fix both RegistryEnumerateSubKeys() and RegistryEnumerateValues() to not clobber their own buffer sizes when calling ZwEnumerateKey() or ZwEnumerateValueKey() respectively. Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> --- src/xenvif/registry.c | 14 ++++++++------ src/xenvif/registry.h | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/xenvif/registry.c b/src/xenvif/registry.c index 5c1762d..32755f3 100644 --- a/src/xenvif/registry.c +++ b/src/xenvif/registry.c @@ -347,7 +347,7 @@ fail1: NTSTATUS RegistryEnumerateSubKeys( IN HANDLE Key, - IN NTSTATUS (*Callback)(PVOID, HANDLE, PCHAR), + IN NTSTATUS (*Callback)(PVOID, HANDLE, PANSI_STRING), IN PVOID Context ) { @@ -390,6 +390,7 @@ RegistryEnumerateSubKeys( goto fail4; for (Index = 0; Index < Full->SubKeys; Index++) { + ULONG Ignore; UNICODE_STRING Unicode; ANSI_STRING Ansi; @@ -398,7 +399,7 @@ RegistryEnumerateSubKeys( KeyBasicInformation, Basic, Size, - &Size); + &Ignore); if (!NT_SUCCESS(status)) goto fail5; @@ -418,7 +419,7 @@ RegistryEnumerateSubKeys( Ansi.Length = (USHORT)(strlen(Ansi.Buffer) * sizeof (CHAR)); - status = Callback(Context, Key, Ansi.Buffer); + status = Callback(Context, Key, &Ansi); __RegistryFree(Ansi.Buffer); Ansi.Buffer = NULL; @@ -450,7 +451,7 @@ fail1: NTSTATUS RegistryEnumerateValues( IN HANDLE Key, - IN NTSTATUS (*Callback)(PVOID, HANDLE, PCHAR), + IN NTSTATUS (*Callback)(PVOID, HANDLE, PANSI_STRING, ULONG), IN PVOID Context ) { @@ -493,6 +494,7 @@ RegistryEnumerateValues( goto fail4; for (Index = 0; Index < Full->Values; Index++) { + ULONG Ignore; UNICODE_STRING Unicode; ANSI_STRING Ansi; @@ -501,7 +503,7 @@ RegistryEnumerateValues( KeyValueBasicInformation, Basic, Size, - &Size); + &Ignore); if (!NT_SUCCESS(status)) goto fail5; @@ -517,7 +519,7 @@ RegistryEnumerateValues( Ansi.Length = (USHORT)(strlen(Ansi.Buffer) * sizeof (CHAR)); - status = Callback(Context, Key, Ansi.Buffer); + status = Callback(Context, Key, &Ansi, Basic->Type); __RegistryFree(Ansi.Buffer); diff --git a/src/xenvif/registry.h b/src/xenvif/registry.h index 5fbe1bc..1d3c885 100644 --- a/src/xenvif/registry.h +++ b/src/xenvif/registry.h @@ -97,14 +97,14 @@ RegistryDeleteSubKey( extern NTSTATUS RegistryEnumerateSubKeys( IN HANDLE Key, - IN NTSTATUS (*Callback)(PVOID, HANDLE, PCHAR), + IN NTSTATUS (*Callback)(PVOID, HANDLE, PANSI_STRING), IN PVOID Context ); extern NTSTATUS RegistryEnumerateValues( IN HANDLE Key, - IN NTSTATUS (*Callback)(PVOID, HANDLE, PCHAR), + IN NTSTATUS (*Callback)(PVOID, HANDLE, PANSI_STRING, ULONG), IN PVOID Context ); -- 2.1.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |