Вообщем проблема такова: При попытке именования такого хэндла (если канал работает в блокирующем режиме; хэндл естественно чужой, но скопированный через DuplicateHandle) с помощью ZwQueryObject или ZwQueryInformationFile вызывающий поток ждет прихода сообщения в канал и умирает навсегда. Пытался прибить поток по таймауту: Код (Text): if WaitForSingleObject(hThread, 10) = WAIT_TIMEOUT then TerminateThread hThread, 0 , но WaitForSingleObject так и не завершилась. Пробовал просто прибить через 10 мсек (Sleep-om ждал) - не прибивается. Мало того, процесс с такими "мертвыми" потоками не возможно ни взять под отладку, ни прибить. Только Reset. Может кто сталкивался с такой проблемой?
http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=7728 http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=12561 http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=9299
Когда-то была схожая проблема, тк каналы не предназначенны для работы в асинхронном режиме, поэтому иногда замерзали, для пинудительного завершения вызывал CloseHandle() на дескриптор из которого производилось чтение, кажется это работало
Стоп. Или я туплю после бессонной ночи или что? Чем решение ElicZ отличается от всего перечисленного? Там тоже поток прибивается по таймауту...
Фишка в убийстве потока и принудительном освобождении его стека. Насколько я знаю никто ничего лучшего ещё не придумал в юзер-моде. Если есть доступ в ядро, то можно посмотреть, что ProcessExplorer в этом случае делает, если но вообще что-то делает. 94270564__ImgList.rar