다음을 통해 공유


user_marshal 특성

[ user_marshal] 특성은 구문에서 [ represent_as]에 유사한 ACF 형식 특성입니다. IDL 특성인 [ wire_marshal]과 마찬가지로 네트워크를 통해 데이터를 마샬링하는 보다 효율적인 방법을 제공합니다. ACF 특성인 [user_marshal] 을 사용하면 MIDL에 알 수 없는 사용자 지정 데이터 형식을 마샬링할 수 있습니다. 각 애플리케이션별 형식에는 와이어 표현을 정의하는 해당 전송 가능 형식이 있습니다.

애플리케이션별 형식은 단순, 복합 또는 포인터 형식일 수 있습니다. 기본 제한 사항은 instance 형식에 잘 정의된 고정 메모리 크기가 있어야 한다는 것입니다. instance 형식의 크기를 변경해야 하는 경우 규칙 배열 대신 포인터 필드를 사용합니다. 또는 변경할 수 있는 형식에 대한 포인터를 정의할 수 있습니다.

[wire_marshal] 특성과 마찬가지로 크기 조정, 마샬링, 경계 해제 및 해제 패스에 대한 루틴을 제공합니다. 다음 표에서는 사용자가 제공한 4개의 루틴 이름을 설명합니다. 형식>은 <[user_marshal]형식 정의에 지정된 userm-type입니다.

루틴에서 반환된 값 설명
<type>_UserSize 클라이언트 또는 서버 쪽에서 마샬링하기 전에 RPC 데이터 버퍼의 크기를 조정합니다.
<type>_UserMarshal 클라이언트 또는 서버 쪽에서 데이터를 마샬링합니다.
<type>_UserUnmarshal 클라이언트 또는 서버 쪽에서 데이터를 숨기지 않습니다.
<type>_UserFree 서버 쪽에서 데이터를 해제합니다.

 

이러한 사용자 제공 루틴은 방향 특성을 기반으로 클라이언트 또는 서버 애플리케이션에서 제공됩니다.

매개 변수가 [ in]만인 경우 클라이언트는 서버로 전송합니다. 클라이언트에는 형식>_UserSize 및 type_UserMarshal 함수가 필요합니다<.>< 서버에는 type_UserUnmarshal 및 <type>_UserFree 함수가 필요합니다<.>

[ out] 전용 매개 변수의 경우 서버는 클라이언트로 전송합니다. 서버에는 type>_UserSize 및 type_UserMarshal 함수가 필요<하지만 클라이언트에는 type>_UserMarshal 함수가< 필요합니다.><

wire_marshal 특성

사용자 마샬링 및 wire_marshal 대한 마샬링 규칙

user_marshal

wire_marshal

NdrGetUserMarshalInfo