Share via


데스크톱에 대한 스레드 연결

프로세스가 창 스테이션에 연결되면 시스템은 연결을 만드는 스레드에 데스크톱을 할당합니다. 시스템은 다음 규칙에 따라 스레드에 할당할 데스크톱을 결정합니다.

  1. 스레드가 SetThreadDesktop 함수를 호출한 경우 지정된 데스크톱에 연결됩니다.
  2. 스레드가 SetThreadDesktop을 호출하지 않으면 부모 프로세스에서 상속된 데스크톱에 연결됩니다.
  3. 스레드가 SetThreadDesktop 을 호출하지 않고 데스크톱을 상속하지 않은 경우 시스템은 MAXIMUM_ALLOWED 액세스를 위해 열고 다음과 같이 데스크톱에 연결하려고 시도합니다.
    • 프로세스를 만들 때 사용된 STARTUPINFO 구조체의 lpDesktop 멤버에 데스크톱 이름이 지정된 경우 스레드는 지정된 데스크톱에 연결됩니다.
    • 그렇지 않으면 스레드는 프로세스가 연결된 창 스테이션의 기본 데스크톱에 연결됩니다.

이 연결 프로세스 중에 할당된 데스크톱은 CloseDesktop 함수를 호출하여 닫을 수 없습니다.

프로세스가 데스크톱에 연결될 때 시스템은 프로세스의 핸들 테이블에서 상속된 핸들을 검색합니다. 시스템은 찾은 첫 번째 데스크톱 핸들을 사용합니다. 자식 프로세스를 특정 상속된 데스크톱에 연결하려면 원하는 핸들만 상속 가능한 것으로 표시되어야 합니다. 자식 프로세스가 여러 데스크톱 핸들을 상속하는 경우 데스크톱 연결 결과는 정의되지 않습니다.

프로세스를 데스크톱에 연결하는 동안 시스템이 열리는 데스크톱에 대한 핸들은 상속할 수 없습니다.

창 스테이션에 대한 연결 처리