提交 9af1018f 编写于 作者: E Elbandi 提交者: Kohsuke Kawaguchi

eliminate double Advapi32 call from getValues

上级 4e7220c9
......@@ -242,11 +242,12 @@ public class RegistryKey {
lpType = new IntByReference();
lpData = new byte[1];
lpcbData = new IntByReference();
lpcbData.setValue(0);
dwIndex = 0;
OUTER:
while (true) {
lpcbData.setValue(0);
result = Advapi32.INSTANCE.RegEnumValue(handle, dwIndex, lpValueName, lpcchValueName, null,
lpType, lpData, lpcbData);
switch (result) {
......@@ -256,9 +257,9 @@ public class RegistryKey {
case WINERROR.ERROR_MORE_DATA:
lpData = new byte[lpcbData.getValue()];
lpcchValueName = new IntByReference(16384);
check(Advapi32.INSTANCE.RegEnumValue(handle, dwIndex, lpValueName, lpcchValueName, null,
lpType, lpData, lpcbData));
continue OUTER;
case WINERROR.ERROR_SUCCESS:
name = new String(lpValueName, 0, lpcchValueName.getValue());
switch (lpType.getValue()) {
......@@ -277,6 +278,7 @@ public class RegistryKey {
check(result);
}
dwIndex++;
lpcbData.setValue(0);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册