Вызов GetHandleInformation перед любым вызовом CloseHandle

Факт 1: Из-за некоторых клиентских ограничений мы не можем использовать механизм исключения.

Факт 2: Закрытие ручки, которая уже была закрыта, вызывает исключение.

Не разбираясь в причинах упоминания фактов, буду звонить GetHandleInformation() определить, действительно ли дескриптор все еще действителен, и только если он вызывает CloseHandle() будет хорошим способом избежать такого исключения?

1 ответ

Решение

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

переработка дескриптора означает, что любой недействительный дескриптор может внезапно снова стать действительным (но относится к несвязанному объекту).

Рэймонд Чен - Старое новое.

Другие вопросы по тегам