Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 175


209

#defme RegDek-teValue RegDeleteValucA

#cndif// IUNICODE

Аргументы этой функции очевидны - хэндл ключа и указатель на строку с именем данных.

Но если данные записываются в реестр, то, наверное, их можно и нужно считывать из реестра. Поэтому сейчас мы рассмотрим вопрос о том, как происходит

ВЫБОРКА ДАННЫХ ИЗ РЕЕСТРА

Если прикладной программе нужно осуществить выборку данных из реестра, то для начала программа должна определить, из какой ветви дерева регистрации ей нужно выбрать данные. Естественно, что никаких функций для этого нет. При написании программы программист должен сам позаботиться об этом. После того как решение принято, начинается второй этап. Программа должна перебирать все ключи в этой ветви до тех пор, пока не найдет нужный ключ. Для этого приложение может восполь­зоваться функцией RegEnumKeyEx(). Как и всегда, обратимся к заголо­вочному файлу winreg.h для того, чтобы найти описание этой функции. Оно приведено ниже:

WINADVAPI LONG APIENTRY RegEnumKeyExA (HKEY hKey,

DWORD dwlndex, LPSTR IpName, LPDWORD IpcbName, LPDWORD IpReserved, LPSTR IpClass, LPDWORD IpcbClass, PFLETIME IpftLastWriteTime);

WINADVAPI LONG APIENTRY RegEnumKeyExW (HKEY hKey,

DWORD dwlndex, LPWSTR IpName, LPDWORD IpcbName, LPDWORD IpReserved, LPWSTR IpClass, LPDWORD IpcbClass, PFLETIME IpftLastWriteTime);

#ifdef UNICODE

#defme RegEnumKeyEx RegEnumKeyExW

#else

«define RegEnumKeyEx RegEnumKeyExA

#endif// 'UNICODE

Функция   перебора   объектов   нам   встречается   впервые.   Давайте сначала рассмотрим аргументы этой функции, а потом поговорим о том,

210

что происходит при переборе ключей. Многие аргументы этой функции уже должны быть знакомы читателю. Первый аргумент - это хэндл ключа, подчиненные ключи которого будут перебираться в поисках нужного ключа. Второй аргумент - dwlndex - является индексом требуе­мого подключа. Третий аргумент - IpName - указывает на буфер, в кото­рый будет записано имя ключа. Четвертый аргумент - IpcbName - опреде­ляет размер этого буфера в байтах. Пятый аргумент, как следует из его названия - IpReserved - зарезервирован для использования в будущем и должен быть равным NULL. Шестой аргумент - IpClass - должен указы­вать на буфер, в котором после завершения работы функции будет со­держать имя класса подключа. Если это имя программе не требуется, то этот аргумент должен быть равным NULL. Размер этого буфера опреде­ляется седьмым аргументом - IpcbClass. И последний, восьмой аргумент -IpftLastWriteTime - после завершения работы функции содержит время последнего обновления данного подключа.




Начало  Назад  Вперед



Книжный магазин