|
[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 |