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


         

Если все слоты использованы, то


 AddNotifyTitle ( int iNotifyType, 

int iSearchType, 

LPCTSTR szString )

 {

// Убедитесь, что диапазон типов уведомлений корректен, 

if ( ( iNotifyType < ANTN_DESTROYWINDOW ) || 

( iNotifyType > ANTN_CREATEANDDESTROY ) ) 

{

TRACE ( "AddNotify Title : iNotifyType is out of range!\n"); 

return ( INVALID_HANDLE_VALUE); 

}

// Убедитесь, что диапазон типов поиска корректен,

 if ( ( iSearchType < ANTS_EXACTMATCH ) || 

( iSearchType > ANTS_ANYLOCMATCH) )

{

TRACE ( "AddNotify Title : iSearchType is out of range!\n");

return ( INVALID_HANDLE_VALUE); 

}

// Убедитесь, что строка правильная, 

if ( TRUE == IsBadStringPtr ( szString, MAX_PATH)) 

{

TRACE ( "AddNotify Title : szString is invalid!\n");

return ( INVALID_HANDLE_VALUE); 

}

// Ждать получения мьютекса.

DWORD dwRet = WaitForSingleObject ( g_hMutex, k_WAITLIMIT);

 if ( WAIT_TIMEOUT == dwRet) 

{

TRACE ( _T( "AddNotifyTitle : Wait on mutex timed out!!\n"));

return ( INVALID_HANDLE_VALUE); 

}

// Если все слоты использованы, то — аварийный останов.

 if ( TOTAL_NOTIFY_SLOTS == g_shared_iUsedSlots) 

{

ReleaseMutex ( g_hMutex);

return ( INVALID_HANDLE_VALUE); 

}

// Найти первый свободный слот,

 for ( int i = 0; i < TOTAL_NOTIFY_SLOTS; i++)

{

if ( _T ( '\0') == g_shared_NotifyData[ i ].szTitle[ 0 ])

{

 break;

}

 }

// Добавить эти данные.

g_shared_NotifyData[ i ].dwOwnerPID = GetCurrentProcessId ();

 g_shared_NotifyData[ i ].iNotifyType = iNotifyType; 

g__shared_NotifyData[ i ].iSearchType = iSearchType;

 Istrcpy ( g_shared__Notif yData [ i J.szTitle, szString); 

// Увеличить главный счетчик

. g_shared_iUsedSlots++;

 // Увеличить счетчик этого процесса. 

g_iThis Process Items++;

TRACE ( "AddNotifyTitle - Added a new item!\n"); 

ReleaseMutex ( g_hMutex);


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