user_marshal 특성
[ user_marshal] 특성은 [represent_as]에 대한 구문과 유사한 ACF 형식 특성입니다. IDL 특성인 [wire_marshal]과 마찬가지로 네트워크를 통해 데이터를 마샬링하는 보다 효율적인 방법을 제공합니다. ACF 특성으로 [user_marshal] 사용하면 MIDL에 알 수 없는 사용자 지정 데이터 형식을 마샬링할 수 있습니다. 각 애플리케이션별 형식에는 와이어 표현을 정의하는 해당 전송 가능 형식이 있습니다.
애플리케이션별 형식은 단순, 복합 또는 포인터 형식일 수 있습니다. 주요 제한 사항은 형식 인스턴스에 잘 정의된 고정 메모리 크기가 있어야 한다는 것입니다. 형식 인스턴스의 크기를 변경해야 하는 경우 규칙 배열 대신 포인터 필드를 사용합니다. 또는 변경할 수 있는 형식에 대한 포인터를 정의할 수 있습니다.
[wire_marshal] 특성과 마찬가지로 크기 조정, 마샬링, 경계 해제 및 자유 패스에 대한 루틴을 제공합니다. 다음 표에서는 사용자가 제공한 4개의 루틴 이름을 설명합니다. > <형식은 [user_marshal] 형식 정의에 지정된 userm-형식.
루틴 | 묘사 |
---|---|
<형식>_UserSize | 클라이언트 또는 서버 쪽에서 마샬링하기 전에 RPC 데이터 버퍼의 크기를 조정합니다. |
<형식>_UserMarshal | 클라이언트 또는 서버 쪽에서 데이터를 마샬링합니다. |
<형식>_UserUnmarshal | 클라이언트 또는 서버 쪽에서 데이터를 숨깁니다. |
<형식>_UserFree | 서버 쪽에서 데이터를 해제합니다. |
이러한 사용자 제공 루틴은 방향 특성에 따라 클라이언트 또는 서버 애플리케이션에서 제공됩니다.
매개 변수가 []에만경우 클라이언트는 서버로 전송합니다. 클라이언트에는 <형식>_UserSize 및 <형식>_UserMarshal 함수가 필요합니다. 서버에는 <형식>_UserUnmarshal 및 <형식>_UserFree 함수가 필요합니다.
[출력]전용 매개 변수의 경우 서버는 클라이언트로 전송합니다. 서버에는 <형식>_UserSize 및 <형식>_UserMarshal 함수가 필요하지만 클라이언트에는 <형식>_UserMarshal 함수가 필요합니다.
관련 항목
-
사용자 마샬링 및 wire_marshal 대한 마샬링 규칙