Операционные системы. Учебное пособие. Марапулец Ю.В. - 148 стр.

UptoLike

Составители: 

LPTSTR lpName, // адрес буфера для имени подраздела
DWORD cbName ); // размер буфера для имени подраздела
Каждый раз при вызове функции RegEnumKey со следующим значением номера
dwIndex в переменной lpName возвращается имя другой подстроки. Когда список под-
строк заканчивается, функция RegEnumKey выдает код ошибки ER-
ROR_NO_MORE_ITEMS, свидетельствующей о том, что подразделов больше нет. По-
рядок, в котором эти элементы возвращаются, не имеет значения. До тех пор пока мы не
зададим индекс, для которого подраздела с таким номером нет, функция будет возвра-
щать значение ERROR_SUCCESS, а в массиве lpName будет храниться имя соответст-
вующего подраздела. При получении любого результирующего значения, кроме
ERROR_SUCCESS и ERROR_NO_MORE_ITEMS, должно выводиться сообщение об
ошибке.
Функция RegQueryValueEx(), производящая чтение информации из раздела реест-
ра, определяется следующим образом:
LONG RegQueryValueEx( HKEY hKey, //дескриптор раздела для чтения
LPCTSTR lpValueName, // адрес имени параметра
DWORD lpReserved, // зарезервирован
DWORD lpType, //типа данных
BYTE lpData, // значение параметра
DWORD lpcbData ); // размер значения параметра
Функция RegSetValueEx, записывающая информацию в реестр, определяется сле-
дующим образом:
LONG RegSetValueEx ( HKEY hKey, //дескриптор раздела для записи
LPCTSTR lpValueName, // адрес имени параметра
DWORD lpReserved, // зарезервирован
DWORD dwType, // флаг типа параметра
CONST BYTE * lpData, // адрес значения параметра
DWORD cbData ); // размер значения параметра
Рассмотрим аргументы функций RegQueryValueEx() и RegSetValueEx():
hKey - Идентифицирует текущий открытый раздел или один из следующих предопреде-
ленных дескрипторов: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE или HKEY_USERS.
lpValueName - Указывает строку, содержащую имя записываемого параметра. Если ра-
нее данный параметр отсутствовал, то теперь он добавляется в текущий раздел; ес-
ли он имеет значение NULL
или указывает на пустую строку, а переменная dwType
имеет тип REG_SZ, то параметру lpValueName присваивается имя (default) (в Win-
dows 3-х с помощью функции RegSetValue).
lpReserved - Зарезервирован, должен иметь значение NULL.
lpType - Указывает на переменную, которая может иметь один из типов данных пред-
ставленных в табл. 6.3.
dwType - Идентифицирует тип записываемых данных. Все возможные идентификаторы
типов перечислены в табл. 6.3.
lpData - Указывает на буфер, содержащий данные, которые должны быть записаны. Этот
параметр может иметь значение NULL, если данные не требуются.
150
             LPTSTR lpName,                   // адрес буфера для имени подраздела
             DWORD cbName );                  // размер буфера для имени подраздела

      Каждый раз при вызове функции RegEnumKey со следующим значением номера
dwIndex в переменной lpName возвращается имя другой подстроки. Когда список под-
строк    заканчивается,   функция    RegEnumKey      выдает    код    ошибки    ER-
ROR_NO_MORE_ITEMS, свидетельствующей о том, что подразделов больше нет. По-
рядок, в котором эти элементы возвращаются, не имеет значения. До тех пор пока мы не
зададим индекс, для которого подраздела с таким номером нет, функция будет возвра-
щать значение ERROR_SUCCESS, а в массиве lpName будет храниться имя соответст-
вующего подраздела. При получении любого результирующего значения, кроме
ERROR_SUCCESS и ERROR_NO_MORE_ITEMS, должно выводиться сообщение об
ошибке.
      Функция RegQueryValueEx(), производящая чтение информации из раздела реест-
ра, определяется следующим образом:

LONG RegQueryValueEx( HKEY hKey,              //дескриптор раздела для чтения
          LPCTSTR lpValueName,                // адрес имени параметра
          DWORD lpReserved,                   // зарезервирован
          DWORD lpType,                       //типа данных
          BYTE lpData,                        // значение параметра
          DWORD lpcbData );                   // размер значения параметра

    Функция RegSetValueEx, записывающая информацию в реестр, определяется сле-
дующим образом:

LONG RegSetValueEx ( HKEY hKey,               //дескриптор раздела для записи
           LPCTSTR lpValueName,               // адрес имени параметра
           DWORD lpReserved,                  // зарезервирован
           DWORD dwType,                      // флаг типа параметра
           CONST BYTE * lpData,               // адрес значения параметра
           DWORD cbData );                    // размер значения параметра

     Рассмотрим аргументы функций RegQueryValueEx() и RegSetValueEx():
hKey - Идентифицирует текущий открытый раздел или один из следующих предопреде-
     ленных дескрипторов: HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,
     HKEY_LOCAL_MACHINE или HKEY_USERS.
lpValueName - Указывает строку, содержащую имя записываемого параметра. Если ра-
     нее данный параметр отсутствовал, то теперь он добавляется в текущий раздел; ес-
     ли он имеет значение NULL или указывает на пустую строку, а переменная dwType
     имеет тип REG_SZ, то параметру lpValueName присваивается имя (default) (в Win-
     dows 3-х с помощью функции RegSetValue).
lpReserved - Зарезервирован, должен иметь значение NULL.
lpType - Указывает на переменную, которая может иметь один из типов данных пред-
     ставленных в табл. 6.3.
dwType - Идентифицирует тип записываемых данных. Все возможные идентификаторы
     типов перечислены в табл. 6.3.
lpData - Указывает на буфер, содержащий данные, которые должны быть записаны. Этот
параметр может иметь значение NULL, если данные не требуются.




                                        150