다음을 통해 공유


커널 개체 네임스페이스

Windows에는 이벤트, 세마포, 뮤텍스, 대기 가능한 타이머, 파일 매핑 개체, 작업 개체, 기호 링크 개체 등 명명된 커널 개체들의 네임스페이스가 여럿 있습니다. 클라이언트/서버 응용 프로그램의 서비스에서 주로 사용되는 전역 네임스페이스가 있습니다. 또한 각 세션에는 이 개체에 대한 네임스페이스가 별도로 있습니다.

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

CreateEventW( NULL, FALSE, FALSE, L"Global\\CSAPP" );

서비스 응용 프로그램은 전역 네임스페이스를 기본값으로 사용합니다.

참고 항목

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

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

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

전역 네임스페이스는 명명된 개체를 사용하여 모든 세션에서 시스템에서 실행 중인 응용 프로그램의 인스턴스가 이미 있음을 감지하는 응용 프로그램에도 사용할 수 있습니다. 이 명명된 개체는 세션별 네임스페이스 대신 전역 네임스페이스에서 만들거나 열어야 합니다. 더 일반적으로 세션당 한 번 응용 프로그램을 실행하는 경우는 명명된 개체가 세션 별 네임스페이스에 생성되므로 기본값으로 지원됩니다.

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

"Session\" 접두사는 시스템 전용이므로 커널 개체의 이름에 사용하면 안 됩니다.

세션을 사용하면 사용자 전환이 빠릅니다. 로그온하는 첫 번째 사용자는 세션 1을 사용하고, 그 다음 로그온하는 사용자는 세션 2를 사용하고, 이런 식입니다. 커널 개체 이름은 응용 프로그램이 여러 사용자를 지원할 수 있도록 원격 데스크톱 서비스에 대해 설명된 지침을 따라야 합니다.

세션 0이 아닌 세션에서 CreateFileMapping을 사용하는 것과 같이 전역 네임스페이스에서 파일 매핑 개체 또는 기호 링크 개체를 만드는 것은 권한 있는 작업입니다. 이 때문에 전역 네임스페이스에서 파일 매핑 개체 또는 기호 링크 개체를 만들려면 응용 프로그램에 SeCreateGlobalPrivilege를 사용하도록 설정해야 합니다. 권한 검사는 이 개체를 만드는 것으로 제한되며 기존 개체를 여는 데는 적용되지 않습니다. 예를 들어 서비스 또는 시스템이 전역 네임스페이스에 파일 매핑 개체를 만드는 경우 어떤 프로세스가 어떤 세션에서 실행되든 프로세스에 필요한 액세스 권한만 있다면 해당 파일 매핑 개체에 액세스할 수 있습니다.