Отладка приложений


         

HOOKFN_PROLOG должен быть специфицирован сразу


// HOOKFN_PROLOG должен быть специфицирован сразу же после

// локальных переменных.

HOOKFN_PROLOG ();

// Включена ли регистрация типа функции?

if ( TRUE == DoLogging ( DDOPT_EVENT))

{

// Используйте макрос FILL_EVENTINFO, чтобы заполнить переменную 

// stEvtlnfo, которая объявлена в макросе HOOKFN_PROLOG. Все

 // функции подключения автоматически имеют некоторые локальные

 // переменные, помогающие стандартизировать их код.

 FILL_EVENTINFO ( eOpenEventA);

// НЕОБХОДИМО вызвать макрос REAL_FUNC_PRE_CALL перед вызовом

 // реальной функции, или если регистры ESI и EDI не будут 

// сохраняться во время вызова. 

REAL_FUNC_PRE_CALL ();

// Вызвать реальную функцию. Возвращаемое значение, сохраняемое

 //в ЕАХ, сохраняется как часть обработки REAL_FUNC_POST_CALL. 

OpenEventA ( dwDesiredAccess, blnheritHandle , IpName );

//Вы должны назвать макрос REAL_FUNC_POST_CALL после вызова 

// реальной функции. Значения регистров и последней ошибки 

// сохраняются как часть REAL_FUNC_POST_CALL. 

REAL_FUNC_POST_CALL ();

// Вызвать код регистрации для регистрации события. 

ProcessEvent ( sstEvtlnfo); 

}

else 

{

// См. комментарии выше. Предложение else обрабатывает случай,

 // когда функция не зарегистрирована.

 REAL_FUNC_PRE_CALL (); 

OpenEventA ( dwDesiredAccess, blnheritHandle , IpName ); 

REAL_FUNC_POST_CALL (); 

}

// HOOKFN_EPILOG — последний макрос в функции. Его параметр — это

 // число параметров функции, так что стек будет очищен правильно.

// Макрос HOOKFN_EPILOG заботится также об установке во всех

// регистрах тех же значений, которые возвратила реальная

// функция.

HOOKFN_EPILOG ( 3) ; 

}

//////////////////////////////////////////////////////////////////*/ 

/*//////////////////////////////////////////////////////////////

Структура состояния регистра. Я использую эту структуру, чтобы гарантировать, что ВСЕ регистры возвращаются точно в том состоянии, в каком они прибыли из реальной функции. 


Содержание  Назад  Вперед