В интерфейсе ITrace определены свойства1TraceSrv,
В интерфейсе ITrace определены свойства1TraceSrv, которые реализуют перечисленные выше (в п. 6 списка требований) параметры операторов трассировки (на тот случай, если приложение, использующее TraceSrv, захочет изменить их). Когда свойство программы TraceSrv изменяется, она генерирует событие, которое должна обработать специальная программа просмотра трассы — TraceView. Эта программа (она рассмотрена чуть ниже) показывает, как следует обрабатывать каждое событие, которое генерирует TraceSrv.
Мастер AppWizard (создающий СОМ-приложения средствами ATL) строит почти 90% кода СОМ+-службы. Мне пришлось написать только интерфейс TraceSrv и обработчики. Большая часть этих кодов находится в файлах TraceSrvTRACE.H и TRACE.CPP на сопровождающем компакт-диске. Они, в основном, выполняют установку и получение свойств и запуск событий. Единственная неординарная функция CTrасе: :ProcessTrace (обрабатывающая строки трассы) показана в листинге 11-2.
Здесь речь идет о том, что атрибуты propput и propget IDL-файла информируют некоторые языки (типа Visual Basic), что с указанным в них методом нужно обращаться, как со свойством. — Пер.
Листинг 11-2. Функция CTrасе: :ProcessTrace
HRESULT CTrace :: ProcessTrace ( BSTR bstrText , long dwPID)
{
// Все перепроверяйте и ничему не верьте!
ASSERT ( this ) ;
ASSERT ( NULL != bstrText ) ;
// Длина входной строки. Длина вычисляется после того, как
// проверен указатель.
int ilnputLen = 0 ;
if ( NULL == bstrText )
{
return ( Error ( IDS_NULLSTRINGPASSED ,
GUID_NULL ,
E_INVALIDARG ) ) ;
}
// bstrText содержит некоторый указатель.
// Удостовериться, что указатель содержит правильное значение.
ASSERT ( FALSE = IsBadReadPtr ( bstrText , sizeof ( BSTR ) ) ) ;
ASSERT ( L';\0'; != *bstrText );
if ( ( TRUE == IsBadReadPtr ( bstrText , sizeof ( BSTR ) ) ) ||
( L';\0'; == *bstrText ) )
{
return ( Error ( IDS_INVALIDSTRING , GUID_NULL
E_INVALIDARG ) ) ;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий