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

UptoLike

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

доступной сразу после входа данного пользователя в систему. Функция
RegCreateKey открывает раздел, если он уже существует, или создает его, если
раздела еще нет, и возвращает дескриптор в переменную m_hRegKey
соответствующего раздела. Поскольку эта переменная является переменной-
членом (тип HKEY),
она доступна и для других функций приложения. Если
предполагается, что доступ к разделу будет происходить часто и этот раздел
будет одновременно использоваться различными приложениями, удобно один
раз открыть дескриптор раздела и использовать его в дальнейшем для доступа к
подразделам. В других случаях, когда доступ к разделу будет происходить
лишь изредка, можно не торопиться и открывать этот раздел только при
необходимости.
3. Рассмотреть режим чтения данных из разделов реестра.
С помощью
переменной m_hRegKey программа инициализирует содержимое списка, читая
записи из подразделов реестра (см. файл Reg_OpsDlg.CPP).
BOOL CReg_OpsDlg::InitializeListBox()
{
DWORD dwName, dwSubkeys, dwIndex = 0;
long lResult;
TCHAR szBuff[MAX_PATH+l] ;
CString csBuff;
EnableButtons ( FALSE );
lResult = RegQueryInfoKey( m_hRegKey, NULL, NULL, NULL,
&dwSubkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ;
if( lResult == ERROR_SUCCESS )
dwIndex = dwSubkeys;
else
ReportError( lResult );
Прежде чем приступить к чтению содержимого подразделов используется
API-функция RegQueryInfoKey, которая определяет, сколько подразделов
содержит раздел HKEY_LOCAL_MACHINE\SOFTWARE\Registry Demo.
Функция RegQueryInfoKey имеет несколько аргументов, но всем ненужным
аргументам можно просто присвоить значение NULL,
как это сделано в
приведенном выше фрагменте. Такой подход дает возможность запросить
только одно значение, не заботясь о параметрах, которые не интересуют.
Если для инициализации реестра будут использованы данные, которые
содержатся в файле Special.REG, функция RegQueryInfoKey сообщит о наличии
пяти подразделов.
Теперь, зная, сколько подразделов содержится в выбранном разделе, для
переменной dwName следует задать размер, равный размеру массива szBuff.
Поскольку величина szBuff не должна изменяться, эта операция будет
выполнена только один раз, и значение dwName сохранится неизменным.
27
доступной сразу после входа данного пользователя в систему. Функция
RegCreateKey открывает раздел, если он уже существует, или создает его, если
раздела еще нет, и возвращает дескриптор в переменную m_hRegKey
соответствующего раздела. Поскольку эта переменная является переменной-
членом (тип HKEY), она доступна и для других функций приложения. Если
предполагается, что доступ к разделу будет происходить часто и этот раздел
будет одновременно использоваться различными приложениями, удобно один
раз открыть дескриптор раздела и использовать его в дальнейшем для доступа к
подразделам. В других случаях, когда доступ к разделу будет происходить
лишь изредка, можно не торопиться и открывать этот раздел только при
необходимости.
      3. Рассмотреть режим чтения данных из разделов реестра. С помощью
переменной m_hRegKey программа инициализирует содержимое списка, читая
записи из подразделов реестра (см. файл Reg_OpsDlg.CPP).

BOOL CReg_OpsDlg::InitializeListBox()
{
    DWORD dwName, dwSubkeys, dwIndex = 0;
    long lResult;
    TCHAR szBuff[MAX_PATH+l] ;
    CString csBuff;

     EnableButtons ( FALSE );
     lResult = RegQueryInfoKey( m_hRegKey, NULL, NULL, NULL,
            &dwSubkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL ) ;
     if( lResult == ERROR_SUCCESS )
            dwIndex = dwSubkeys;
     else
            ReportError( lResult );

      Прежде чем приступить к чтению содержимого подразделов используется
API-функция RegQueryInfoKey, которая определяет, сколько подразделов
содержит раздел HKEY_LOCAL_MACHINE\SOFTWARE\Registry Demo.
Функция RegQueryInfoKey имеет несколько аргументов, но всем ненужным
аргументам можно просто присвоить значение NULL, как это сделано в
приведенном выше фрагменте. Такой подход дает возможность запросить
только одно значение, не заботясь о параметрах, которые не интересуют.
      Если для инициализации реестра будут использованы данные, которые
содержатся в файле Special.REG, функция RegQueryInfoKey сообщит о наличии
пяти подразделов.
      Теперь, зная, сколько подразделов содержится в выбранном разделе, для
переменной dwName следует задать размер, равный размеру массива szBuff.
Поскольку величина szBuff не должна изменяться, эта операция будет
выполнена только один раз, и значение dwName сохранится неизменным.

                                    27