Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492

Как проверить действительность handle ?

02.08.2022, 14:20. Показов 1732. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Функция WaitForMultipleObjects завершается с ошибкой.
GetLastError возвращает ERROR_INVALID_HANDLE, т.е. какое какой-то handle события, c которым работает WaitForMultipleObjects, стал недействительным (скорее всего, его закрыл какой-то параллельный поток).

Вопрос: каким образом, зная конкретный handle события, узнать - является ли он действительным ?
Это нужно для этого, чтобы определить, какой конкретно handle "испорчен".
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2022, 14:20
Ответы с готовыми решениями:

Что означает выражение HANDLE hWritePipe = (HANDLE)atoi(argv[1]);
К тому же у меня нет 1-го. только нулевой

Пакет, который помогает проверить действительность кредитных карточек
День добрый! Подскажите пожалуйста, существует ли пакет который помогает проверить действительность кредитных карточек.(Говорят что номер...

Как выбрать окно, если его handle не совпадает с handle процесса?
Добрый день! Задача на первый взгляд довольно простая: выбрать окно программы, переместить его в определённую часть экрана и нажать на...

6
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
02.08.2022, 15:03
LUN2, вариант, перебрать в цикле с CloseHandle , не подойдет? CloseHandle возвращает FALSE не невалидный хендл. Вариант тупой , но простой.
Если более нормально, то NtQueryObject.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
02.08.2022, 15:29
Цитата Сообщение от LUN2 Посмотреть сообщение
(скорее всего, его закрыл какой-то параллельный поток).
Это логическая ошибка в коде. Никто не должен инвалидировать разделяемый ресурс, пока на него есть ссылки.
Оборочивайте хэндлы в "контейнер" с подсчетом ссылок (по аналогии с std::shared_ptr, хотя можно и shared_ptr настроить для работы с хэндлами)
0
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492
02.08.2022, 15:46  [ТС]
Morgot, хендлов несколько, Close будет закрывать нормальные хендлы - а это совсем не нужно.

Добавлено через 15 минут
zayats80888, теоретически с Вами согласен, но на практике handle выделяет и, скорее всего, закрывает внешняя компонента (библиотека).
У меня нет достаточной информации об ее внутренней логике - я лишь могу подозревать, что ранее запрошенный мною у нее handle - недействителен.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
02.08.2022, 15:48
Цитата Сообщение от zayats80888 Посмотреть сообщение
Оборочивайте хэндлы в "контейнер" с подсчетом ссылок
Кстати, ты можешь использовать нативное апи для этих целей, например дублируя хендл для передачи в другой поток или поставить флаг для защиты от закрытия, см. эти функции

Добавлено через 1 минуту
Цитата Сообщение от LUN2 Посмотреть сообщение
У меня нет достаточной информации об ее внутренней логике - я лишь могу подозревать, что ранее запрошенный мною у нее handle - недействителен.
Это должно быть прописано в документации к библиотеке. И библиотеку нужно использовать корректно.
0
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
02.08.2022, 20:13
Лучший ответ Сообщение было отмечено LUN2 как решение

Решение

Цитата Сообщение от LUN2 Посмотреть сообщение
а это совсем не нужно.
Ну тогда см. выше. NtQueryObject спасет отца русской демократии.
1
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492
03.08.2022, 00:27  [ТС]
Всем спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2022, 00:27
Помогаю со студенческими работами здесь

Получение Handle драйвера для управления, CreateFile не получает Handle на мой драйвер
Доброго времени суток! Пытаюсь управлять своим фильтр-драйвером из юзермодного приложения, но CreateFile все время возвращает FALSE,...

Проверка почты на действительность
Как организовать проверку почты на действительность (валид). И через что pop3, imap? Искал в интернете но ничего не нашел, были...

Программу для проверки на действительность email ящиков
ePochta Verifier, очень хорошая программа для проверки почте на действительность. Я работал с ним отличное программа для тех, кто...

Программа для проверки на действительность email ящиков
Подскажите пожалуйста. Программу для проверки на действительность email ящиков, и еще вот к этойй программе ePochta Verifier можно найти...

Ошибка в window.captureEvents(Event.CLICK); window.onClick= handle; function handle(e) { alert(''); return false; }
<script> window.captureEvents(Event.CLICK); window.onClick= handle; function handle(e) { alert(''); return false; } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru