다음을 통해 공유


system_handle 특성

[system_handle] 특성은 시스템 개체에 대한 액세스를 나타내는 시스템 정의 핸들 형식을 지정합니다.

[system_handle(system-handle-type[,optional-access-mask])]

매개 변수

system-handle-type

시스템 핸들 형식 옵션 중 하나를 지정합니다.

유효한 옵션은 다음과 같습니다.

optional-access-mask

필요에 따라 중복된 핸들에 적용되는 특정 액세스 권한을 요청합니다. 기본적으로 지정되지 않은 경우 핸들은 동일한 액세스 권한으로 중복됩니다.

다른 수준의 액세스를 지정하려면 선택한 기본 시스템 개체에 해당하는 개체별 액세스 권한을 사용합니다.

중복 중에 액세스 권한이 전파되는 방법에 대한 자세한 내용은 DuplicateHandle 설명서에서 확인할 수 있습니다.

각 개체 유형에 대한 액세스 권한 목록에 대한 링크는 DuplicateHandle 참조 및 각 sh_* 매개 변수 페이지의 참고 항목 머리글에서 찾을 수 있습니다.

설명

이 특성을 -target 사용하려면 midl.exe 실행할 때 플래그를 NT100 (또는 그 이상)로 설정해야 합니다.

시스템 핸들은 시스템 리소스에 대한 액세스를 제공하기 위해 운영 체제에서 정의한 핸들입니다. 특성을 선언할 때 핸들 뒤에 있는 개체의 특정 형식을 지정해야 합니다.

로 표시된 [in]핸들의 경우 핸들이 원격 프로시저에 중복되고 해당 프로시저 기간 동안 유효한 상태로 유지됩니다. 원격 프로시저에서 반환되면 중복된 핸들이 해제됩니다. 기본 개체에 대한 액세스를 유지하려면 원격 애플리케이션이 핸들을 자체 주소 공간으로 복제해야 합니다.

반면, 로 표시된 [out]핸들의 경우 원격 프로시저가 호출에서 핸들을 반환하면 원격 프로시저의 소유권이 손실됩니다. 기본 개체에 대한 액세스를 유지하려면 원격 프로시저가 핸들을 복제하고 중복을 반환해야 합니다. 반환된 핸들은 기본 시스템 개체에 대한 액세스가 더 이상 필요하지 않을 때 해당 핸들을 닫을 책임이 있다고 가정하는 호출자가 소유하게 됩니다.

시스템 개체에 대한 액세스를 릴레이하는 메커니즘이므로 이 특성은 동일한 컴퓨터의 프로시저 간의 호출에만 적용됩니다.

생성 시 시스템 핸들 뒤에 있는 기본 개체에 지정된 생성 및 액세스 매개 변수는 원격 프로시저 컨텍스트에 성공적으로 마샬링할 수 있는지 여부를 결정합니다.

배열은 system_handlesize_is 특성 설명서에 있는 구문을 사용하여 내부 또는 외부로 전달할 수 있습니다.

예제

다음 예제에서는 의 여러 용도를 system_handle사용합니다. 전체 샘플은 SystemHandlePassing 샘플을 참조하세요.

interface MyInterface : IUnknown                         
{         
    HRESULT Proc1([in, system_handle(sh_file)] HANDLE writeThisFile);

    HRESULT Proc2([in, system_handle(sh_pipe, FILE_GENERIC_READ)] HANDLE readThisPipe);

    HRESULT Proc3([out, system_handle(sh_composition)] HANDLE* visual);

    HRESULT Proc4([in] DWORD cEvents, [out, system_handle(sh_event), size_is(cEvents)] HANDLE* pWatchAllTheseEvents);
}

요구 사항

   
지원되는 최소 클라이언트 Windows 10 1주년 업데이트(버전 1607, 빌드 14393)
지원되는 최소 서버 Windows Server 2016(빌드 14393)

추가 정보

/target 스위치

바인딩 및 핸들

핸들 및 개체

IDL(인터페이스 정의) 파일

DuplicateHandle

보안 설명자