/Oi 스위치
/Oi 및 /Oic 스위치는 MIDL 컴파일러에 완전히 해석된 마샬링 메서드를 사용하도록 지시합니다. /Oicf 스위치는 추가적인 성능 향상을 제공합니다.
midl /{Oi | Oic | Oif | Oicf}
스위치 옵션
-
Oi
-
클라이언트와 서버 간에 전달된 스텁 코드를 마샬링하기 위해 완전히 해석된 메서드를 지정합니다.
참고
이 스위치는 사용되지 않습니다. /Oicf 스위치를 대신 사용하는 것이 좋습니다.
-
Oic
-
/Oi의 모든 기능을 제공하고 개체 인터페이스에 대한 클라이언트 스텁 코드의 크기를 추가로 줄이는 마샬링의 코드 없는 프록시 메서드를 지정합니다.
참고
이 스위치는 사용되지 않습니다. /Oicf 스위치를 대신 사용하는 것이 좋습니다.
-
Oif 또는 Oicf
-
/Oi 및 /Oic에서 제공하는 모든 기능을 포함하지만 /Oi 또는/Oic보다 더 나은 성능을 제공하는 새 인터프리터(빠른 형식 문자열)를 사용하는 마샬링의 코드리스 프록시 메서드를 지정합니다. 이 스위치에는 최신 RPC 개선 사항이 포함되어 있으며 최신 RPC 시나리오에 권장됩니다.
설명
지원 플랫폼과 관련된 제한 사항에 유의하세요.
MIDL 3.0 컴파일러는 코드를 마샬링하는 두 가지 메서드인 완전 해석(/Oi, /Oic 및 /Oicf) 및 혼합 모드( /Os)를 제공합니다. MIDL 버전 6.0.359부터 MIDL 컴파일러는 기본적으로 /Oicf /strong 스텁을 생성합니다. 일부 언어 기능은 일부 모드에서 지원되지 않습니다. 이 경우 컴파일러는 자동으로 적절한 모드로 전환되고 경고를 발생합니다.
성능이 중요한 경우 혼합 모드( /Os) 메서드가 가장 좋은 방법이 될 수 있습니다. 이 모드에서 컴파일러는 생성된 스텁의 일부 매개 변수를 인라인으로 마샬링하도록 선택합니다. 이로 인해 스텁 크기가 커지지만 성능이 향상됩니다.
완전히 해석된 메서드는 데이터를 완전히 오프라인으로 마샬링합니다. 이렇게 하면 스텁 코드의 크기가 상당히 줄어들지만 성능이 저하됩니다. 또한 완전히 해석된 메서드를 사용하면 각 프로시저에 대해 16개의 매개 변수가 제한됩니다. 16개 이상의 매개 변수를 포함하는 모든 프로시저는 /Os 모드에서 자동으로 처리됩니다. 해석된 모드 중 에서 /Oicf 는 최상의 성능을 제공하고 /Oi는 최상의 이전 버전과의 호환성을 제공합니다.
애플리케이션이 [wire_marshal] 및 [user_marshal] 특성과 같이 MIDL 3.0에서 도입된 MIDL 기능을 사용하는 경우 /Oif 옵션을 사용할 수 있습니다. 애플리케이션 에서 파이프를 사용하는 경우 /Oif 옵션을 사용해야 합니다. 다른 모드를 지정하면 MIDL 컴파일러가 /Oif로 전환됩니다.
스텁 코드가 마샬링되는 방식을 미세 조정하기 위해 Microsoft RPC는 ACF [최적화] 특성을 제공합니다. 이 특성은 개별 인터페이스 또는 개별 작업에 대한 마샬링 모드를 선택하기 위해 인터페이스 특성 또는 작업 특성으로 사용됩니다.
호출 규칙
/Oi, /Oic 또는 /Oif 스위치를 사용하여 해석된 메서드에서 MIDL 컴파일러에서 생성된 스텁은 C 컴파일 중에 stdcall 또는 cdecl 프로시저로 컴파일되어야 합니다. PASCAL 또는 Fastcall 호출 규칙이 작동하지 않습니다. 또한 서버 스텁은 stdcall로 컴파일되어야 합니다.
예제
midl /Oi filename.idl
midl /Oic filename.idl
midl /Oif filename.idl
추가 정보