Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384/* * PROJECT: ReactOS API tests * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: Test for the RegEnumKey API * PROGRAMMER: Thomas Faber & Doug Lyons */
#include "precomp.h"
START_TEST(RegEnumKey){ LONG ErrorCode; HKEY TestKey; HKEY hKey; WCHAR nameBuf[4]; DWORD nameLen;
/* Base key for our test */ ErrorCode = RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\ReactOS_apitest", 0, NULL, 0, KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS, NULL, &hKey, NULL); ok_dec(ErrorCode, ERROR_SUCCESS);
/* Create 1 char subkey */ ErrorCode = RegCreateKeyExW(hKey, L"1", 0, NULL, 0, READ_CONTROL, NULL, &TestKey, NULL); ok_dec(ErrorCode, ERROR_SUCCESS); RegCloseKey(TestKey);
/* Enumerate first key with space for 1 char */ nameLen = 1; FillMemory(nameBuf, sizeof(nameBuf), 0x55); ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL); ok_dec(ErrorCode, ERROR_MORE_DATA); ok_hex(nameBuf[0], 0x5555); ok_hex(nameBuf[1], 0x5555); ok_dec(nameLen, 1);
/* Enumerate first key with space for 2 chars */ nameLen = 2; FillMemory(nameBuf, sizeof(nameBuf), 0x55); ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL); ok_dec(ErrorCode, ERROR_SUCCESS); ok_hex(nameBuf[0], L'1'); ok_hex(nameBuf[1], 0); ok_hex(nameBuf[2], 0x5555); ok_dec(nameLen, 1);
/* Delete the subkey */ ErrorCode = RegDeleteKeyW(hKey, L"1"); ok_dec(ErrorCode, ERROR_SUCCESS);
/* Create 2 char subkey */ ErrorCode = RegCreateKeyExW(hKey, L"12", 0, NULL, 0, READ_CONTROL, NULL, &TestKey, NULL); ok_dec(ErrorCode, ERROR_SUCCESS); RegCloseKey(TestKey);
/* Enumerate first key with space for 2 chars */ FillMemory(nameBuf, sizeof(nameBuf), 0x55); nameLen = 2; ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL); ok_dec(ErrorCode, ERROR_MORE_DATA); ok_hex(nameBuf[0], 0x5555); ok_hex(nameBuf[1], 0x5555); ok(nameLen == 2, "nameLen = %ld, expected 2\n", nameLen);
/* Enumerate first key with space for 3 chars */ FillMemory(nameBuf, sizeof(nameBuf), 0x55); nameLen = 3; ErrorCode = RegEnumKeyExW(hKey, 0, nameBuf, &nameLen, NULL, NULL, NULL, NULL); ok_dec(ErrorCode, ERROR_SUCCESS); ok_hex(nameBuf[0], L'1'); ok_hex(nameBuf[1], L'2'); ok_hex(nameBuf[2], 0); ok_hex(nameBuf[3], 0x5555); ok(nameLen == 2, "nameLen = %ld, expected 2\n", nameLen);
/* Delete the subkey */ ErrorCode = RegDeleteKeyW(hKey, L"12"); ok_dec(ErrorCode, ERROR_SUCCESS);
/* Delete our parent key */ ErrorCode = RegDeleteKeyW(hKey, L""); ok_dec(ErrorCode, ERROR_SUCCESS); RegCloseKey(hKey);}