ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

глюк, да еще и я туплю)
  #1  
Старый 04.12.2009, 15:26
Аватар для sn0w
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию глюк, да еще и я туплю)

старею мля) собсна код:

Код:
//////////////////////////////////////////////////////////////////////////
DWORD WINAPI ScanThread(LPVOID param)
{
	
	int nItems;
	char buff[256];
	char mac[256];
	DWORD tid;
	HANDLE host_threads[256];  //maximum for the subnet (C class)
	LVITEM itm;
	PARAM_BLOCK *preq_data;

	nItems = g_pDlg->m_HostList.GetItemCount();

	if(nItems > 256){
		MessageBox(0, "Maximum host number exceeded! (256). Check mping.txt", 0, 0);
		return 0;
	}
	
	
	// fillup info & spawn threads
	for(int i=0; i< nItems; i++){
		
		itm.cchTextMax = sizeof(buff);
		itm.pszText = buff;
		itm.mask = LVIF_TEXT;
		itm.iItem = i;

		g_pDlg->m_HostList.GetItem(&itm);
		MessageBox(0,buff,0,0);

		
		preq_data = (PARAM_BLOCK*)malloc(sizeof(PARAM_BLOCK));
		preq_data->dst = inet_addr(buff);
		preq_data->src = INADDR_ANY;//inet_addr("192.168.1.16"); // need to be fixed
		preq_data->data_len = sizeof(preq_data->mac_data);
		preq_data->idx = i;
		host_threads[i] = CreateThread(0,0,ARPThread,preq_data,0,&tid);  // problem #1
	}
	
	WaitForMultipleObjects(nItems, host_threads, 1, INFINITE); // problem #2
	return 0;
}
чето не могу понять. если закомментить строки с проблем #1 и #2 то мессгабокс выводит нормальное значение, а если эти строки или любая одна из них остаются в работе то мессагбокс выводит пустую строку.
__________________


snow white world wide
 
Ответить с цитированием

  #2  
Старый 04.12.2009, 16:02
Аватар для __mad
__mad
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме:
548128

Репутация: 104
По умолчанию

Первой что вызвало подозрения, это передача адреса локальной переменной в функцию:

Код:
char buff[256];
...
itm.pszText = buff;
...
g_pDlg->m_HostList.GetItem(&itm);
Правда не ясно как связаны #1 #2 с этим.
 
Ответить с цитированием

  #3  
Старый 04.12.2009, 16:06
Аватар для sn0w
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию

вообще это мфц, но какраз нормально, тк листвью возвращает в этот буфер текст элемента с индексом i.

я не пойму и в дебаге пробовал - появилась мысль что со стеком чтото не так, но отпала
__________________


snow white world wide
 
Ответить с цитированием

  #4  
Старый 04.12.2009, 16:23
Аватар для sn0w
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию

мдя, решилось определением host_threads типом static (в глобальной памяти), либо же как malloc(sizeof(HANDLE)*256)

значит со стеком чтото?!
__________________


snow white world wide
 
Ответить с цитированием

  #5  
Старый 05.12.2009, 12:47
Аватар для Gar|k
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

Ну дык HANDLE host_threads[256]; у тебя локальная переменная при каждом вызове ScanThread ее адрес может меняться так ты ещё из потока создаешь потоки... в общем попробуй вынести host_threads вообще в глобальные переменные что бы все потоки могли её видеть. авось что и получится

а для эксперимента можешь по выводить адреса host_threads
printf("%02X\n",&host_threads);
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правительство продлит действие импортных пошлин на иномарки еще на 9 месяцев REBUUS Мировые новости 0 12.10.2009 19:49
Yahoo планирует уволить еще несколько сотен человек Andres Мировые новости 13 27.07.2009 04:30
Защитное ПО для Vista еще не готово _GaLs_ Мировые новости 0 04.12.2006 19:31
Защитное ПО для Vista еще не готово Серый Мировые новости 0 02.12.2006 06:22
В США посадили еще одного пирата D=P=CH= MOD= Мировые новости 1 11.09.2006 18:05



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ