다음을 통해 공유


인터페이스 프록시 파일

인터페이스 프록시 파일(U_p.c)은 COM(개체) 인터페이스의 클라이언트 스텁 및 서버 스텁 파일에 해당하는 루틴을 포함하는 C 파일입니다. 이 파일에는 컴파일러의 인라인 모드에서 클라이언트 및 서버에 대한 서로게이트 루틴의 구현 또는 해석된 모드의 동등한 데이터 및 렁크뿐만 아니라 프록시 및 스텁 Vtable과 같은 기타 적절한 COM 붙이기 데이터가 포함되어 있습니다.

인터페이스 프록시 파일에는 현재 IDL 파일에 정의된 인터페이스의 메서드에 대해서만 지원 루틴 및 데이터가 포함됩니다. 이 동작을 명확히 하기 위해 이 섹션 전체에서 확장된 예제가 사용됩니다. IFaceA에서 상속되는 IFaceB와 같은 인터페이스를 사용하여 IDL 파일을 컴파일하는 경우 IFaceB 관련 보조 데이터 및 루틴이 현재 프록시 파일에 생성되고 기본 인터페이스 IFaceA 관련 보조 데이터 및 루틴은 IFaceA 정의가 포함된 IDL 파일에서 생성된 프록시에서 찾을 수 있습니다. 컴파일러는 기본 인터페이스의 서로게이트를 식별하고 IFaceB 인터페이스를 통해 사용되는 IFaceA 메서드를 지원하는 데 필요한 경우 이를 위임하는 데 필요한 모든 데이터를 생성합니다.

현재 IDL 파일의 인터페이스에 있는 모든 메서드에 대해 프록시 파일에는 혼합 모드(/Os)에서 컴파일될 때 다음 두 개의 서로게이트 메서드와 인터프리터 모드(/Oi)로 컴파일될 때 해당하는 인터프리터 데이터가 포함됩니다.

  • 이 예제의 IFaceB_Method_Proxy 같은 클라이언트 쪽 서로게이트입니다.

    이 클라이언트 쪽 서로게이트는 클라이언트(예: IFaceB::Method)가 디스패치하는 가상 진입점입니다. 입력 인수를 전송 가능한 형식으로 마샬링하고, 인터페이스 및 연산을 식별하는 정보와 함께 마샬링된 인수를 전송한 다음, 호출된 작업이 반환될 때 반환 값과 출력 인수를 마스할 수 없습니다.

  • 예를 들어 서버 쪽 서로게이트는 IFaceB_Method_Stub.

    이 서버 쪽 서로게이트는 기본 런타임이 클라이언트를 에뮬레이트하기 위해 서버에서 디스패치하는 가상 진입점입니다. 입력 인수를 제거하여 클라이언트 데이터를 복제하고, 서버의 인터페이스 함수 구현을 호출한 다음, 반환 값과 출력 인수를 다시 클라이언트 쪽으로 마샬링하고 전송합니다.

file.idl에서 생성된 프록시 파일의 기본 이름은 file_p.c.인터페이스 프록시 파일의 기본 이름을 재정의하려면 /proxy MIDL 컴파일러 스위치를 사용합니다. /env/out 스위치는 이 파일에 영향을 미칩니다.