Rico Schüller kgbricola@web.de writes:
@@ -228,9 +228,9 @@ static NTSTATUS open_key( HKEY *retkey, ACCESS_MASK access, OBJECT_ATTRIBUTES *a static HKEY create_special_root_hkey( HKEY hkey, DWORD access ) { HKEY ret = 0;
- int idx = (UINT_PTR)hkey - (UINT_PTR)HKEY_SPECIAL_ROOT_FIRST;
- int idx = (DWORD)hkey - (DWORD)HKEY_SPECIAL_ROOT_FIRST;
- if (hkey == HKEY_CURRENT_USER)
- if ((DWORD)hkey == (DWORD)HKEY_CURRENT_USER)
You want HandleToUlong and the like.
@@ -947,6 +948,57 @@ static void test_reg_open_key(void) "RegOpenKeyEx with KEY_WOW64_64KEY failed (err=%u)\n", ret); RegCloseKey(hkResult);
- /* check special HKEYs on 64bit
* only the lower 4 bytes of the supplied key are used
*/
- if (ptr_size == 64)
- {
DWORD mask = ~0U;
HKEY hkBig = (HKEY)((ULONG_PTR)HKEY_CURRENT_USER & mask);
ret = RegOpenKeyA(HKEY_CURRENT_USER, "Software", &hkResult);
ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
ok(hkResult != NULL, "expected hkResult != NULL\n");
hkPreserve = hkResult;
RegCloseKey(hkResult);
hkBig = (HKEY)(((ULONG_PTR)HKEY_CURRENT_USER & mask) | 0x100000000ULL);
ret = RegOpenKeyA(hkBig, "Software", &hkResult);
ok(ret == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %d\n", ret);
ok(hkResult == hkPreserve, "expected hkResult == hkPreserve\n");
RegCloseKey(hkResult);
Please don't use long long constants.