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

UptoLike

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

dwName = sizeof( szBuff );
do
{
lResult = RegEnumKey( m_hRegKey, --dwIndex, (LPTSTR)szBuff, dwName );
Так как нумерация подразделов начинается с нуля, значение переменной
dwIndex перед его использованием следует декрементировать, т.е. необходимо
запросить пять подразделов с индексами 4, 3, 2, 1 и 0.
Посредством функции RegEnumKey можно осуществить циклический
запрос имен подразделов. Каждый раз при вызове функции RegEnumKey со
следующим значением номера dwIndex в переменной lpName возвращается имя
другой подстроки. Когда список подстрок заканчивается, функция
RegEnumKey выдает код ошибки ERROR_NO_MORE_ITEMS,
свидетельствующей о том, что подразделов больше нет.
Порядок, в котором эти элементы возвращаются, не имеет значения. До
тех пор пока не задан индекс, для которого подраздела с данным номером нет,
функция будет возвращать значение ERROR_SUCCESS,
а в массиве lpName
будет храниться имя соответствующего подраздела. При получении любого
результирующего значения, кроме ERROR_SUCCESS
и
ERROR_NO_MORE_ITEMS,
должно выводиться сообщение об ошибке.
if(lResult != ERROR_SUCCESS && lResult !=
ERROR_NO_MORE_ITEMS )
ReportError ( lResult );
else
if( lResult == ERROR_SUCCESS )
{
HKEY hKeyItem;
ULONG ulSize, ulType;
int nIndex;
m_csNameEntry = szBuff;
Если был получен результат ERROR_SUCCESS,
строку из переменной
szBuff необходимо передать в переменную m_csNameEntry, являющуюся
членом класса CString. Переменная szBuff сразу же будет использоваться
повторно, но содержащееся в ней значение не должно потеряться.
Далее снова вызвать функцию RegCreateKey. На этот раз для
идентификации открываемого подраздела используется дескриптор корневого
раздела m_hRegKey и строковое значение, которое содержится в переменной
szBuff. В результате получен дескриптор hKeyItem, идентифицирующий
открытый подраздел.
28
dwName = sizeof( szBuff );
do
{
    lResult = RegEnumKey( m_hRegKey, --dwIndex, (LPTSTR)szBuff, dwName );

     Так как нумерация подразделов начинается с нуля, значение переменной
dwIndex перед его использованием следует декрементировать, т.е. необходимо
запросить пять подразделов с индексами 4, 3, 2, 1 и 0.
     Посредством функции RegEnumKey можно осуществить циклический
запрос имен подразделов. Каждый раз при вызове функции RegEnumKey со
следующим значением номера dwIndex в переменной lpName возвращается имя
другой подстроки. Когда список подстрок заканчивается, функция
RegEnumKey        выдает     код     ошибки        ERROR_NO_MORE_ITEMS,
свидетельствующей о том, что подразделов больше нет.
     Порядок, в котором эти элементы возвращаются, не имеет значения. До
тех пор пока не задан индекс, для которого подраздела с данным номером нет,
функция будет возвращать значение ERROR_SUCCESS, а в массиве lpName
будет храниться имя соответствующего подраздела. При получении любого
результирующего        значения,       кроме          ERROR_SUCCESS      и
ERROR_NO_MORE_ITEMS, должно выводиться сообщение об ошибке.

     if(lResult != ERROR_SUCCESS && lResult !=
                   ERROR_NO_MORE_ITEMS )
     ReportError ( lResult );
     else
            if( lResult == ERROR_SUCCESS )
            {
                   HKEY hKeyItem;
                   ULONG ulSize, ulType;
                   int nIndex;

                m_csNameEntry = szBuff;

      Если был получен результат ERROR_SUCCESS, строку из переменной
szBuff необходимо передать в переменную m_csNameEntry, являющуюся
членом класса CString. Переменная szBuff сразу же будет использоваться
повторно, но содержащееся в ней значение не должно потеряться.
      Далее снова вызвать функцию RegCreateKey. На этот раз для
идентификации открываемого подраздела используется дескриптор корневого
раздела m_hRegKey и строковое значение, которое содержится в переменной
szBuff. В результате получен дескриптор hKeyItem, идентифицирующий
открытый подраздел.


                                    28