Хэндлы открытых именованных каналов

Тема в разделе "WASM.WIN32", создана пользователем Twister, 15 май 2006.

Статус темы:
Закрыта.
  1. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Вообщем проблема такова:

    При попытке именования такого хэндла (если канал работает в блокирующем режиме; хэндл естественно чужой, но скопированный через DuplicateHandle) с помощью ZwQueryObject или ZwQueryInformationFile вызывающий поток ждет прихода сообщения в канал и умирает навсегда. Пытался прибить поток по таймауту:
    Код (Text):
    1. if WaitForSingleObject(hThread, 10) = WAIT_TIMEOUT then TerminateThread hThread, 0
    , но WaitForSingleObject так и не завершилась. Пробовал просто прибить через 10 мсек (Sleep-om ждал) - не прибивается. Мало того, процесс с такими "мертвыми" потоками не возможно ни взять под отладку, ни прибить. Только Reset.

    Может кто сталкивался с такой проблемой?
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
  3. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Но ни в одном из топиков нет решения проблемы для XP. Все изложенное там я перепробовал...
     
  4. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    Когда-то была схожая проблема, тк каналы не предназначенны для работы в асинхронном режиме, поэтому иногда замерзали, для пинудительного завершения вызывал CloseHandle() на дескриптор из которого производилось чтение, кажется это работало :)
     
  5. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    И решение предложенное ElicZ не работает?
     
  6. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Стоп. Или я туплю после бессонной ночи или что? Чем решение ElicZ отличается от всего перечисленного? Там тоже поток прибивается по таймауту...
     
  7. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Или вся фишка в заморозке процесса ZwSuspendProcess?
     
  8. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Фишка в убийстве потока и принудительном освобождении его стека. Насколько я знаю никто ничего лучшего ещё не придумал в юзер-моде. Если есть доступ в ядро, то можно посмотреть, что ProcessExplorer в этом случае делает, если но вообще что-то делает.

    [​IMG] 94270564__ImgList.rar
     
  9. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Все, спасибо. Как только будет результат - сообщу.
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Заработало!...
     
Статус темы:
Закрыта.