Поделиться через


Функция ReleasePseudoConsole

Отказывается от права владения дескриптором 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. Тем не менее, он также будет ждать, пока все клиенты не отключатся, прежде чем возвращаться.

Это привело к двум проблемам:

  1. Возможно, не было надежно определить, были ли все клиенты отключены. Просто проверка того, завершился ли изначально запущенный консольный процесс, недостаточна, так как он мог привести к запуску дополнительных процессов, которые все еще выполняются.
  2. Он создал цикл существования и владения между псевдоконсолем и приложением. Ваше приложение будет поддерживать сеанс псевдоконсоли, удерживая дескриптор HPCON, в то время как псевдоконсоль будет поддерживать ваше приложение, ожидая сигнал, что все клиенты отключились, перед вызовом ClosePseudoConsole.

ReleasePseudoConsole решает эту проблему: после вызова этой функции псевдоконсол автоматически завершится после отключения всех клиентов. Все, что вам нужно сделать сейчас, это читать из дескрипторов выходного и входного каналов или записывать в них до тех пор, пока не произойдет сбой. Это означает, что все клиенты отключились и что псевдоконсоль завершилась. Вызывать ClosePseudoConsole, чтобы освободить биты, которые удерживает дескриптор HPCON.

Примеры

Полное пошаговое руководство по использованию этой функции для создания сеанса псевдоконсоля см. в статье "Создание сеанса Псевдоконсоля".

Требования

   
Минимальный поддерживаемый клиент Windows 11 24H2 (сборка 26100) [только настольные приложения]
Минимальный поддерживаемый сервер Windows Server 2025 (сборка 26100)
Заголовок ConsoleApi.h (через WinCon.h, включая Windows.h)
Библиотека Файл Kernel32.lib
DLL Kernel32.dll

См. также

Псевдоконсолы

Создание сеанса Псевдоконсоля

ClosePseudoConsole