transmit_as 특성
[transmit_as] 특성은 클라이언트 및 서버 애플리케이션이 조작하는 표시된 형식인 type-id*,*를 전송된 형식 xmit-type과 연결하도록 컴파일러에 지시합니다.
typedef [transmit_as(xmit-type) [[ , type-attribute-list ]] ] type-specifier declarator-list;
void __RPC_USER type-id_to_xmit (
type-id __RPC_FAR *,
xmit-type __RPC_FAR * __RPC_FAR *);
void __RPC_USER type-id_from_xmit (
xmit-type __RPC_FAR *,
type-id __RPC_FAR *);
void __RPC_USER type-id_free_inst (
type-id __RPC_FAR *);
void __RPC_USER type-id_free_xmit (
xmit-type__RPC_FAR *);
매개 변수
-
xmit-type
-
클라이언트와 서버 간에 전송되는 데이터 형식을 지정합니다.
-
type-attribute-list
-
형식에 적용되는 하나 이상의 특성을 지정합니다. 유효한 형식 특성에는 [handle], [switch_type]이 포함됩니다. 포인터 특성 [ref], [unique] 또는 [ptr]; 및 사용 특성 [문자열] 및 [무시]. 여러 특성을 쉼표로 구분합니다.
-
type-specifier
-
기본 형식, 구조체, 공용 구조체, 열거형 형식 또는 형식 식별자를 지정합니다. 선택적 스토리지 사양은 형식 지정자 앞에 설 수 있습니다.
-
declarator-list
-
식별자, 포인터 선언자 및 배열 선언자와 같은 표준 C 선언자를 지정합니다. 자세한 내용은 배열 및 Sized-Pointer 특성, 배열 및 배열 및 포인터를 참조하세요. declarator-list는 쉼표로 구분된 하나 이상의 선언자로 구성됩니다. 매개 변수 이름과 같은 함수 선언자의 매개 변수 선언자는 선택 사항입니다.
-
type-id
-
클라이언트 및 서버 애플리케이션에 표시되는 데이터 형식의 이름을 지정합니다.
설명
[transmit_as] 특성을 사용하려면 사용자가 제공된 형식과 전송된 형식 간에 데이터를 변환하는 루틴을 제공해야 합니다. 이러한 루틴은 변환된 데이터를 보관하는 데 사용되는 메모리도 해제해야 합니다. [transmit_as] 특성은 스텁에 사용자가 제공한 변환 루틴을 호출하도록 지시합니다.
전송된 형식 xmit-type은 MIDL 기본 형식, 미리 정의된 형식 또는 형식 식별자에 resolve 합니다. 자세한 내용은 MIDL 기본 형식을 참조하세요.
사용자는 다음 루틴을 제공해야 합니다.
루틴 이름 | Description |
---|---|
type-id**_to_xmit** | 제공된 형식의 데이터를 전송된 형식으로 변환합니다. 이 루틴은 전송된 형식 및 전송된 형식의 포인터에서 참조하는 모든 데이터에 대한 메모리를 할당합니다. |
type-id**_from_xmit** | 전송된 형식에서 제공된 형식으로 데이터를 변환합니다. 이 루틴은 제공된 형식의 포인터에서 참조하는 데이터에 대한 메모리 할당을 담당합니다. RPC는 형식 자체에 대한 메모리를 할당합니다. |
type-id**_free_inst** | 제공된 형식의 포인터에서 참조하는 데이터에 할당된 메모리를 해제합니다. RPC는 형식 자체에 대한 메모리를 해제합니다. |
type-id**_free_xmit** | 전송된 형식 및 전송된 형식의 포인터에서 참조하는 데이터에 대해 호출자가 사용하는 스토리지를 해제합니다. |
클라이언트 스텁은 type-id**_to_xmit**을 호출하여 전송된 형식의 공간을 할당하고 데이터를 xmit-type 형식의 개체로 변환합니다. 서버 스텁은 원래 데이터 형식에 대한 공간을 할당하고 type-id**_from_xmit**를 호출하여 전송된 형식에서 제공된 형식으로 데이터를 변환합니다.
애플리케이션 코드에서 돌아오면 서버 스텁은 type-id**_free_inst**을 호출하여 서버 쪽에서 type-id 에 대한 스토리지의 할당을 취소합니다. 클라이언트 스텁은 type-id**_free_xmit**을 호출하여 클라이언트 쪽에서 xmit-type 스토리지의 할당을 취소합니다.
다음 형식에는 [transmit_as] 특성이 있을 수 없습니다.
- 컨텍스트 핸들( [context_handle] 형식 특성이 있는 형식 및 [context_handle] 특성이 있는 매개 변수로 사용되는 형식)
- 파이프이거나 파이프에서 파생된 형식
- 파이프 정의의 기본 형식으로 사용되는 데이터 형식
- 포인터 또는 포인터에 resolve 매개 변수
- 준수하거나, 다양하거나, 열려 있는 배열인 매개 변수
- 규칙적 배열을 포함하는 구조체
- 미리 정의된 형식 handle_tvoid
전송되는 형식은 다음 제한을 준수해야 합니다.
- 포인터이거나 포인터를 포함해서는 안 됩니다.
- 파이프이거나 파이프를 포함해서는 안 됩니다.
예
typedef struct _TREE_NODE_TYPE
{
unsigned short data;
struct _TREE_NODE_TYPE * left;
struct _TREE_NODE_TYPE * right;
} TREE_NODE_TYPE;
typedef [transmit_as(TREE_XMIT_TYPE)] TREE_NODE_TYPE * TREE_TYPE;
void __RPC_USER TREE_TYPE_to_xmit(
TREE_TYPE __RPC_FAR * ,
TREE_XMIT_TYPE __RPC_FAR * __RPC_FAR *);
void __RPC_USER TREE_TYPE_from_xmit (
TREE_XMIT_TYPE __RPC_FAR *,
TREE_TYPE __RPC_FAR *);
void __RPC_USER TREE_TYPE_free_inst(
TREE_TYPE __RPC_FAR *);
void __RPC_USER TREE_TYPE_free_xmit(
TREE_XMIT_TYPE __RPC_FAR *);
참고 항목