NO_MORE_ITEMS. Природно, що пошук можна виробляти і в зворотному порядку. Для того щоб пошук міг бути нормально здійснений, ключ, хендл якого вказаний першим аргументом, повинен бути відкритий з правом доступу KEY_ENUMERATE_SUB_KEYS.
Отримати повну інформацію про подключе можна за допомогою функції RegQueryInfoKey (), аргументи якої в лекції розглядати не будемо. Припустимо потрібний нам підключ знайдений. Тоді в цьому подключе необхідно знайти потрібні дані. Спосіб пошуку точно такий же, як і в попередній функції. Для пошуку необхідно перебрати всі дані, пов'язані з підключені. Щоб справити цей перебір, зазвичай використовується функція RegEnumValue (), опис якої, наведене нижче, можна знайти у файлі winreg.h:
LONG RegEnumValue (HKEY hKey, DWORD dwIndex, LPSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
Параметри:
hKey - хендл ключа, значення якого підлягають перерахуванню.
dwIndex -Індекс перечисляемого значення.
lpValueName - покажчик на буфер, в який поступає ім'я перечисляемого значення.
lpcbValueName - розмір буфера lpValueName.
lpReserved - резерв.
lpType - покажчик на значення типу DWORD, яке приймає тип даних, притаманні не перераховувати значенням.
lpData - покажчик на буфер, в який поступає вміст перечіляемого значення.
lpcbData - покажчик на змінну, яка містить число байт в буфері lpData.
що повертається значення: якщо ключ створено чи відкрито вдало, то значення ERROR_SUCCESS. Будь-яке інше значення є свідченням того, що при створенні або відкритті ключа зустрілася помилка.
Якщо повертається значення ERROR_NO_MORE_VALUES, то це означає, що підключів у даного ключа більше немає.
Порядок використання цієї функції повністю збігається з порядком використання функції RegEnumKeyEx (), тому стану на ньому зупинятися. Опишу тільки аргументи цієї функції.
Зрозуміло, що hKey - це хендл ключа, якому належить підключ, індекс якого представлений другим аргументом - dwlndex.
Наступний аргумент - покажчик на буфер, в який буде записано ім'я підключа. lpcbValueName визначає розмір цього буфера. Аргумент lpReserved зарезервований і повинен бути рівним NULL. Останні три аргументи визначають клас підключа, покажчик на буфер, в який будуть записані ці дані і розмір буфера. Після повернення функції передостанній аргумент містить число записаних даних.
Таким чином, робота з системним реєстром являє собою досить зручний механізм доступу до встановлених системних ресурсів, програмами та обладнанням. Існуючі стандартні значення параметрів реєстру документовані в довідкової інформації, дослідження якої буде проводиться на практичних заняттях.