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

UptoLike

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

else
iIndex++; // переход к следующему элементу
}
// предложить пользователю ввести новую строку
iLen = GetItemText(szText);
if( ! iLen ) return;
В блоке try новый текст копируется в свободную часть массива. Если
соответствующая страница памяти не закреплена, функция lstrcpy порождает
исключение. Фильтр исключений закрепляет страницу, и выполнение функции
продолжается.
try
{ // записать текст в элемент массива
lstrcpy( &( pBase[iIndex * ITEM_SIZE) ), szText );
}
except( CommitMemFilter( GetExceptionCode(), iIndex ) )
{
// вся работа выполняется фильтром исключений
}
// пометить данный элемент как занятый
bInUse[iIndex] = TRUE;
bListEmpty = FALSE;
Далее программа добавляет новый текст в список. Строка вставляется в
позицию, которая задана переменной iPos. При этом обновляется элемент
iListLookup [ipos], который указывает, где в массиве записана новая строка
(iIndex).
iCount = ListBox_GetCount( hwndList ) ;
iPos = ListBox_InsertString( hwndList, iCount, szText );
iCount++;
ListBox_SetCurSel( hwndList, iPos );
iListLookup[iPos] = iIndex;
if (iCount == MAX_ITEMS) // заполнена ли последняя позиция?
{
bListFull= TRUE;
}
return;
}
Функция CommitMemFilter представляет собой фильтр обработки
исключений для функции AddItem. При наличии страничной ошибки функция
20
           else
                  iIndex++;           // переход к следующему элементу
     }
             // предложить пользователю ввести новую строку
     iLen = GetItemText(szText);
     if( ! iLen ) return;

     В блоке try новый текст копируется в свободную часть массива. Если
соответствующая страница памяти не закреплена, функция lstrcpy порождает
исключение. Фильтр исключений закрепляет страницу, и выполнение функции
продолжается.

     try
     {       // записать текст в элемент массива
           lstrcpy( &( pBase[iIndex * ITEM_SIZE) ), szText );
     }
     except( CommitMemFilter( GetExceptionCode(), iIndex ) )
     {
           // вся работа выполняется фильтром исключений
     }
     // пометить данный элемент как занятый
     bInUse[iIndex] = TRUE;
     bListEmpty = FALSE;

      Далее программа добавляет новый текст в список. Строка вставляется в
позицию, которая задана переменной iPos. При этом обновляется элемент
iListLookup [ipos], который указывает, где в массиве записана новая строка
(iIndex).

     iCount = ListBox_GetCount( hwndList ) ;
     iPos = ListBox_InsertString( hwndList, iCount, szText );
     iCount++;
     ListBox_SetCurSel( hwndList, iPos );
     iListLookup[iPos] = iIndex;
     if (iCount == MAX_ITEMS) // заполнена ли последняя позиция?
     {
            bListFull= TRUE;
     }
     return;
}

     Функция CommitMemFilter представляет собой фильтр обработки
исключений для функции AddItem. При наличии страничной ошибки функция

                                      20