다음을 통해 공유


ReleasePseudoConsole 함수

핸들의 HPCON 소유권을 pseudoconsole에게 포기하면, 모든 클라이언트의 연결이 끊어질 때 자동으로 종료됩니다.

문법

HRESULT WINAPI ReleasePseudoConsole(
    _In_ HPCON hPC
);

매개 변수

hPC [in] CreatePseudoConsole에 의해 열려 있는 활성 가상 콘솔에 대한 핸들입니다.

반환 값

형식: HRESULT

이 메서드가 성공하면 S_OK반환됩니다. 그렇지 않으면 HRESULT 오류 코드를 반환합니다. hPC 인수가 유효하지 않으면 호출이 실패하지 않을 것으로 예상되며 이 경우 E_INVALIDARG 반환합니다.

비고

경고

ReleasePseudoConsoleHPCON과 연결된 메모리의 할당을 취소하지 않습니다. HPCON 인스턴스 사용을 완료한 후에도 ClosePseudoConsole을 호출해야 합니다. 올바른 사용에 대한 중요한 정보는 ClosePseudoConsole 을 참조하세요.

애플리케이션이 소유한 HPCON 핸들은 기본적으로 의사console 세션을 무한정 활성 상태로 유지합니다. 이전 버전의 Windows에서는 ClosePseudoConsoleHPCON 핸들의 소유권을 포기했습니다. 그러나 반환하기 전에 모든 클라이언트의 연결이 끊어질 때까지 대기합니다.

이로 인해 두 가지 문제가 발생했습니다.

  1. 모든 클라이언트의 연결이 끊어졌는지 여부를 안정적으로 감지하지는 못했습니다. 처음에 생성된 콘솔 프로세스가 종료되었는지 테스트하는 것만으로는 충분하지 않습니다. 아직 실행 중인 추가 프로세스가 생성되었을 수 있기 때문일 수 있습니다.
  2. pseudoconsole과 애플리케이션 간에 수명 및 소유권 루프를 만들었습니다. 애플리케이션은 HPCON 핸들을 유지하여 의사콘솔 세션을 활성 상태로 유지하고, 의사콘솔은 모든 클라이언트의 연결이 해제되었다는 신호를 기다리며 애플리케이션을 활성 상태로 유지합니다. 모든 클라이언트 연결이 끊어지면 ClosePseudoConsole을 호출합니다.

ReleasePseudoConsole 은 이 문제를 해결합니다. 이 함수를 호출한 후 모든 클라이언트의 연결이 끊어지면 의사콘솔이 자동으로 종료됩니다. 이제 오류가 반환될 때까지 입력 및 출력 파이프 핸들에서 읽기나 쓰기만 하면 됩니다. 이는 모든 클라이언트의 연결이 끊어지고 가상 콘솔이 종료되었음을 나타냅니다. ClosePseudoConsole을 호출하여 HPCON 핸들이 보유하고 있는 나머지 비트를 해제합니다.

예시

이 함수를 사용하여 의사console 세션을 설정하는 방법에 대한 전체 연습은 Pseudoconsole 세션 만들기를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 11 24H2(빌드 26100) [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2025(빌드 26100)
헤더 ConsoleApi.h(WinCon.h를 통해 Windows.h 포함)
라이브러리 커널32.lib
동적 링크 라이브러리 (DLL) Kernel32.dll

참고하십시오

의사콘솔

Pseudoconsole 세션 만들기

ClosePseudoConsole