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 *);

참고 항목

배열

MIDL 기본 형식

context_handle

열거형

처리

handle_t

IDL(인터페이스 정의) 파일

무시

ptr

Ref

문자열

구조체

switch_type

Typedef

연합

고유

Void