커널 개체 네임스페이스

원격 데스크톱 서비스 서버에는 이벤트, 세마포, 뮤텍스, 대기 가능한 타이머, 파일 매핑 개체 및 작업 개체와 같은 명명된 커널 개체에 대한 여러 네임스페이스가 있습니다. 클라이언트/서버 애플리케이션의 서비스에서 주로 사용하는 전역 네임스페이스가 있습니다. 또한 각 클라이언트 세션에는 Windows Vista와 같이 이러한 개체에 대한 별도의 네임스페이스가 있습니다.

별도의 클라이언트 세션 네임스페이스를 사용하면 여러 클라이언트가 서로 방해하지 않고 동일한 애플리케이션을 실행할 수 있습니다. 클라이언트 세션에서 시작된 프로세스의 경우 시스템은 기본적으로 세션 네임스페이스를 사용합니다. 그러나 이러한 프로세스는 개체 이름 앞에 "Global\" 접두사를 추가하여 전역 네임스페이스를 사용할 수 있습니다. 예를 들어 다음 코드는 CreateEvent 를 호출하고 전역 네임스페이스에 CSAPP이라는 이벤트 개체를 만듭니다.

참고

Windows 스토어 앱에는 전역 네임스페이스를 사용할 수 없습니다.

 

CreateEvent( NULL, FALSE, FALSE, "Global\\CSAPP" );

원격 데스크톱 서비스 환경의 서비스 애플리케이션은 기본적으로 전역 네임스페이스를 사용합니다.

세션 0은 호스팅 서비스에만 사용되며 이전 버전의 Windows와 달리 콘솔 세션이 없습니다.

전역 네임스페이스를 사용하면 여러 클라이언트 세션의 프로세스가 서비스 애플리케이션과 통신할 수 있습니다. 예를 들어 클라이언트/서버 애플리케이션은 동기화에 뮤텍스 개체를 사용할 수 있습니다. 서버 모듈은 전역 네임스페이스에 뮤텍스 개체를 만들 수 있습니다. 그런 다음 클라이언트 세션에서 "Global\" 접두사를 사용하여 뮤텍스 개체를 열 수 있습니다.

전역 네임스페이스의 또 다른 사용은 명명된 개체를 사용하여 모든 세션에서 시스템에서 실행 중인 애플리케이션의 instance 이미 있음을 감지하는 애플리케이션에 대한 것입니다. 이 명명된 개체는 세션별 네임스페이스 대신 전역 네임스페이스에서 만들거나 열어야 합니다. 명명된 개체가 세션당 네임스페이스에 생성되므로 세션당 한 번 애플리케이션을 실행하는 일반적인 경우는 기본적으로 지원됩니다.

클라이언트 프로세스는 "Global\" 접두사 외에도 "Local\" 접두사를 사용하여 세션 네임스페이스에 개체를 명시적으로 만들 수 있습니다. 이러한 키워드는 대/소문자를 구분합니다.

"Session\" 접두사는 시스템 사용을 위해 예약되어 있으므로 커널 개체의 이름에 사용하지 않아야 합니다.

빠른 사용자 전환은 원격 데스크톱 서비스 세션을 사용하여 구현됩니다. 로그온하는 첫 번째 사용자는 세션 1을 사용하고, 로그온할 다음 사용자는 세션 2 등을 사용합니다. 커널 개체 이름은 애플리케이션이 여러 사용자를 지원할 수 있도록 원격 데스크톱 서비스에 대해 설명된 지침을 따라야 합니다.

세션 0 이외의 세션에서 CreateFileMapping을 사용하여 전역 네임스페이스에서 파일 매핑 개체를 만드는 것은 권한 있는 작업입니다. 이 때문에 전역 네임스페이스에 파일 매핑 개체를 성공적으로 만들려면 임의 RD 세션 호스트(RD 세션 호스트) 서버 세션에서 실행되는 애플리케이션에 SeCreateGlobalPrivilege 를 사용하도록 설정해야 합니다. 검사 권한은 파일 매핑 개체를 만드는 것으로 제한되며 기존 개체를 여는 데는 적용되지 않습니다. 예를 들어 서비스 또는 시스템에서 파일 매핑 개체를 만드는 경우 모든 세션에서 실행되는 모든 프로세스는 사용자에게 필요한 액세스 권한이 있는 경우 해당 파일 매핑 개체에 액세스할 수 있습니다.