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