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



         

Описание Функции isArray Проверяет - часть 4


sizeof ( CDebugBaseUser *)));

ASSERT' ( FALSE == IsBadWritePtr ( IpDebugSyncEvents,

sizeof ( HANDLE) *

NUM_DEBUGEVENTS)); 

// Обычные проверки параметров.

if ( ( TRUE == IsBadStringPtr ( szDebuggee, MAX_PATH) ) ||

 ( TRUE •== IsBadStringPtr ( szCmdLine, MAX_PATH) ) ||

( TRUE — IsBadWritePtr ( IpPID, sizeof ( DWORD) )) || 

( TRUE == IsBadReadPtr ( pUserClass,

sizeof ( CDebugBaseUser *))) || 

( TRUE == IsBadWritePtr ( IpDebugSyncEvents,

sizeof ( HANDLE) *

NUM_DEBUGEVENTS) ) )

{

SetLastError ( ERROR_INVALID_PARAMETER);

return ( INVALID_HANDLE_VALUE); 

}

// Обработка начального уведомления о том, что данная

 // функция будет ждать, пока не начнет выполняться отладочный поток HANDLE hStartAck;

// Строка, используемая для начального уведомления TCHAR szStartAck [ МАХ_РАТН ];

 // Загрузить строку начального уведомления, 

if ( 0 == LoadString ( GetDllHandle () ,

IDS_DBGEVENTINIT ,

 szStartAck ,

 sizeof ( szStartAck) ))

 {

ASSERT ( !"LoadString IDS_DBGEVENTINIT failed!");

return ( INVALID_HANDLE_VALUE); 

}

// Создать событие начального уведомления.

 hStartAck = CreateEvent ( NULL , // Безопасность по умолчанию

TRUE , // Событие ручной переустановки FALSE ,

 // Сигнал Initial state = Not szStartAck);

 // Имя события ASSERT ( FALSE != hStartAck);

 if ( FALSE == hStartAck) 

{

TRACE ( "StartDebugging : Unable to create Start Ack event\n");

return ( INVALID_HANDLE_VALUE); 

}

// Связать параметры.

THREADPARAMS StParams; 

stParams.lpPID = IpPID; 

stParams.pUserClass = pUserClass;

 stParams.szDebuggee = szDebuggee;

 stParams.szCmdLine = szCmdLine ;

 // Дескриптор для потока отладки HANDLE hDbgThread; 

// Попытка создать поток.

hDbgThread = (HANDLE)_beginthread ( DebugThread, 0, sstParams); 

ASSERT ( NULL != hDbgThread);

 if ( NULL == hDbgThread)

 {

TRACE ( "StartDebugging : _beginthread failed\n");




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