다음을 통해 공유


명명된 개체 공유

이 항목에서는 UWP(유니버설 Windows Platform) 애플리케이션과 Win32 애플리케이션 간에 명명된 개체를 공유하는 방법에 대해 설명합니다.

패키지된 애플리케이션의 명명된 개체

명명된 개체는 프로세스에서 개체 핸들을 공유하는 쉬운 방법을 제공합니다. 프로세스가 명명된 개체를 만든 후 다른 프로세스는 해당 이름을 사용해 적절한 함수를 호출하여 개체에 대한 핸들을 열 수 있습니다. 명명된 개체는 일반적으로 스레드 동기화프로세서 간 통신에 사용됩니다.

기본적으로 패키지된 애플리케이션은 만든 명명된 개체에만 액세스할 수 있습니다. 명명된 개체를 패키지된 애플리케이션과 공유하려면 개체를 만들 때 사용 권한을 설정해야 하며 개체를 열 때 이름을 정규화해야 합니다.

명명된 개체 만들기

명명된 개체는 해당 Create API를 통해 생성됩니다.

이러한 모든 API는 호출자가 ACL(액세스 제어 목록)를 지정하여 개체에 액세스할 수 있는 프로세스를 제어할 수 있도록 하는 LPSECURITY_ATTRIBUTES 매개 변수를 공유합니다. 명명된 개체를 패키지된 애플리케이션과 공유하려면 명명된 개체를 만들 때 ACL 내에서 사용 권한을 부여해야 합니다.

SID(보안 식별자)는 ACL 내의 ID를 나타냅니다. 패키지된 모든 애플리케이션에는 패키지 패밀리 이름을 기반으로 하는 자체 SID가 있습니다. 패키지 패밀리 이름을 DeriveAppContainerSidFromAppContainerName에 전달하여 패키지된 애플리케이션에 대한 SID를 생성할 수 있습니다.

참고 항목

패키지 패밀리 이름은 개발 중에 Visual Studio의 패키지 매니페스트 편집기를 통해, Microsoft Store를 통해 게시된 애플리케이션의 파트너 센터를 통해 또는 이미 설치된 애플리케이션에 대한 Get-AppxPackage PowerShell 명령을 통해 찾을 수 있습니다.

이 샘플에서는 명명된 개체를 ACL하는 데 필요한 기본 패턴을 보여줍니다. 명명된 개체를 패키지된 애플리케이션과 공유하려면 각 애플리케이션에 대한 EXPLICIT_ACCESS 구조를 빌드합니다.

패키지된 애플리케이션에 대한 EXPLICIT_ACCESS 규칙으로 Create 호출의 LPSECURITY_ATTRIBUTES 매개 변수를 채우면 해당 애플리케이션에 대한 액세스 권한을 부여하여 명명된 개체를 열 수 있습니다.

참고 항목

Win32 애플리케이션은 패키지를 열 때 개체 이름을 한정하는 한 패키지된 애플리케이션에서 만든 모든 명명된 개체에 액세스할 수 있습니다. 액세스 권한을 부여할 필요는 없습니다.

명명된 개체 열기

명명된 개체는 해당 Open API에 이름을 전달하여 열립니다.

패키지된 애플리케이션에서 만든 명명된 개체는 명명된 개체 경로라고도 하는 애플리케이션의 네임스페이스 내에서 만들어집니다. 패키지된 애플리케이션에서 만든 명명된 개체를 열 때 개체 이름에는 사용자가 만든 애플리케이션의 명명된 개체 경로 접두사로 지정되어야 합니다.

GetAppContainerNamedObjectPath는 해당 SID를 기반으로 패키지된 애플리케이션에 대한 명명된 개체 경로를 반환합니다. 패키지 패밀리 이름을 DeriveAppContainerSidFromAppContainerName에 전달하여 패키지된 애플리케이션에 대한 SID를 생성할 수 있습니다.

참고 항목

패키지 패밀리 이름은 개발 중에 Visual Studio의 패키지 매니페스트 편집기를 통해, Microsoft Store를 통해 게시된 애플리케이션의 파트너 센터를 통해 또는 이미 설치된 애플리케이션에 대한 Get-AppxPackage PowerShell 명령을 통해 찾을 수 있습니다.

패키지된 애플리케이션에서 만든 명명된 개체를 열 때 <PATH>\<NAME> 형식을 사용합니다.

  • <PATH>를 만드는 애플리케이션의 명명된 개체 경로로 바꿉니다.
  • <NAME>를 개체 이름으로 바꿉니다.

참고 항목

패키지된 애플리케이션에서 개체를 만든 경우에만 개체 이름을 <PATH>에 접두사로 지정해야 합니다. Win32 애플리케이션에서 만든 명명된 개체는 정규화할 필요가 없지만 개체를 만들 때 액세스 권한을 계속 부여해야 합니다.

설명

패키지된 애플리케이션의 명명된 개체는 기본적으로 격리되어 보안을 유지하고 일시 중단 및 종료와 같은 애플리케이션 수명 주기 이벤트를 지원합니다. 애플리케이션 간에 명명된 개체를 공유하려면 엄격한 바인딩 및 버전 지정 제약 조건이 따르므로 각 애플리케이션이 다른 애플리케이션의 수명 주기에 맞게 탄력적이어야 합니다. 이러한 이유로 동일한 게시자의 애플리케이션 간에 명명된 개체만 공유하는 것이 좋습니다.