20ed619680d3ba3815fa8db66c1b1a964dd1856b
1 #include "iphlpapi_private.h"
5 int GetLongestChildKeyName( HANDLE RegHandle
) {
9 Status
= RegQueryInfoKeyA(RegHandle
,
21 if (Status
== ERROR_SUCCESS
)
22 return MaxAdapterName
+ 1;
27 LONG
OpenChildKeyRead( HANDLE RegHandle
,
29 PHKEY ReturnHandle
) {
30 return RegOpenKeyExA( RegHandle
,
38 * Yields a malloced value that must be freed.
41 PCHAR
GetNthChildKeyName( HANDLE RegHandle
, DWORD n
) {
43 int MaxAdapterName
= GetLongestChildKeyName( RegHandle
);
47 if (MaxAdapterName
== -1) {
48 RegCloseKey( RegHandle
);
52 ValueLen
= MaxAdapterName
;
53 Value
= (PCHAR
)HeapAlloc( GetProcessHeap(), 0, MaxAdapterName
);
54 Status
= RegEnumKeyExA( RegHandle
, n
, Value
, &ValueLen
,
55 NULL
, NULL
, NULL
, NULL
);
56 if (Status
!= ERROR_SUCCESS
)
64 void ConsumeChildKeyName( PCHAR Name
) {
65 if (Name
) HeapFree( GetProcessHeap(), 0, Name
);
68 PCHAR
QueryRegistryValueString( HANDLE RegHandle
, PCHAR ValueName
) {
70 DWORD ReturnedSize
= 0;
72 if (RegQueryValueExA( RegHandle
, ValueName
, NULL
, NULL
, NULL
,
76 Name
= malloc( (ReturnedSize
+ 1) * sizeof(WCHAR
) );
77 RegQueryValueExA( RegHandle
, ValueName
, NULL
, NULL
, (PVOID
)Name
,
79 Name
[ReturnedSize
] = 0;
84 void ConsumeRegValueString( PCHAR Value
) {
85 if (Value
) free(Value
);
88 PWCHAR
*QueryRegistryValueStringMulti( HANDLE RegHandle
, PWCHAR ValueName
) {
89 return 0; /* FIXME if needed */
92 void ConsumeRegValueStringMulti( PCHAR
*Value
) {