Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отказывается от права владения дескриптором HPCON
псевдоконсоли, что позволяет ему автоматически завершить работу как только все клиенты отключатся.
Синтаксис
HRESULT WINAPI ReleasePseudoConsole(
_In_ HPCON hPC
);
Параметры
hPC [in] Дескриптор активной псевдоконсоли, открываемой CreatePseudoConsole.
Возвращаемое значение
Тип: HRESULT
Если этот метод выполнен успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT. Вызов не должен завершиться ошибкой, если только аргумент hPC недействителен; в этом случае он возвращает E_INVALIDARG.
Замечания
Предупреждение
ReleasePseudoConsole не освобождает память, связанную с HPCON. После завершения работы с экземпляром HPCON необходимо вызвать ClosePseudoConsole. Сведения о правильном использовании см. в разделе ClosePseudoConsole .
Дескриптор HPCON, принадлежащий вашему приложению, по умолчанию сохраняет сеанс псевдоконсоли бесконечно. В предыдущих версиях Windows только ClosePseudoConsole отказывалось от владения дескриптором HPCON. Тем не менее, он также будет ждать, пока все клиенты не отключатся, прежде чем возвращаться.
Это привело к двум проблемам:
- Возможно, не было надежно определить, были ли все клиенты отключены. Просто проверка того, завершился ли изначально запущенный консольный процесс, недостаточна, так как он мог привести к запуску дополнительных процессов, которые все еще выполняются.
- Он создал цикл существования и владения между псевдоконсолем и приложением. Ваше приложение будет поддерживать сеанс псевдоконсоли, удерживая дескриптор HPCON, в то время как псевдоконсоль будет поддерживать ваше приложение, ожидая сигнал, что все клиенты отключились, перед вызовом ClosePseudoConsole.
ReleasePseudoConsole решает эту проблему: после вызова этой функции псевдоконсол автоматически завершится после отключения всех клиентов. Все, что вам нужно сделать сейчас, это читать из дескрипторов выходного и входного каналов или записывать в них до тех пор, пока не произойдет сбой. Это означает, что все клиенты отключились и что псевдоконсоль завершилась. Вызывать ClosePseudoConsole, чтобы освободить биты, которые удерживает дескриптор HPCON.
Примеры
Полное пошаговое руководство по использованию этой функции для создания сеанса псевдоконсоля см. в статье "Создание сеанса Псевдоконсоля".
Требования
Минимальный поддерживаемый клиент | Windows 11 24H2 (сборка 26100) [только настольные приложения] |
Минимальный поддерживаемый сервер | Windows Server 2025 (сборка 26100) |
Заголовок | ConsoleApi.h (через WinCon.h, включая Windows.h) |
Библиотека | Файл Kernel32.lib |
DLL | Kernel32.dll |