wire_marshal 특성

[ wire_marshal] 특성은 [ transmit_as]에 대한 구문에서 유사하지만 네트워크를 통해 데이터를 마샬링하는 보다 효율적인 방법을 제공하는 IDL 형식 특성입니다.

[wire_marshal] 특성을 사용하여 애플리케이션별 데이터 형식 대신 전송될 데이터 형식을 지정합니다. 각 애플리케이션별 형식에는 유선 표현(네트워크에서 사용되는 표현)을 정의하는 해당 전송 가능한 형식이 있습니다. 애플리케이션별 형식은 전송할 수 없지만 MIDL에서 인식하는 형식이어야 합니다. MIDL에 알 수 없는 형식을 마샬링하려면 ACF 특성 [ user_marshal]을 사용합니다.

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

데이터 크기 조정, 마샬링 및 경계 해제를 위한 루틴을 제공하고 연결된 메모리를 해제해야 합니다. 다음 표에서는 사용자가 제공한 4개의 루틴 이름을 설명합니다. 형식>은 <[wire_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 함수가< 필요합니다.><

user_marshal 특성

user_marshal 및 wire_marshal 대한 마샬링 규칙

wire_marshal

user_marshal

NdrGetUserMarshalInfo