represent_as 특성
[represent_as] ACF 특성은 대상 언어 repr-type의 명명된 로컬 형식을 클라이언트와 서버 간에 전송되는 명명된 형식 전송 형식과 연결합니다.
typedef [represent_as(repr-type) [[ , type-attribute-list ]] ] named-type;
void __RPC_USER named-type_from_local (
repr-type __RPC_FAR * ,
named-type __RPC_FAR * __RPC_FAR * );
void __RPC_USER named-type_to_local (
named-type __RPC_FAR * ,
repr-type __RPC_FAR * ); void __RPC_USER named-type _free_inst ( named-type __RPC_FAR * ); void __RPC_USER named-type _free_local ( repr-type __RPC_FAR * );
매개 변수
-
named-type
-
클라이언트와 서버 간에 전송되는 명명된 전송 데이터 형식을 지정합니다.
-
type-attribute-list
-
형식에 적용되는 하나 이상의 특성을 지정합니다. 여러 특성을 쉼표로 구분합니다.
-
repr-type
-
클라이언트 및 서버 애플리케이션에 표시되는 대상 언어로 표시된 로컬 형식을 지정합니다.
설명
[represent_as]을 사용하는 경우 로컬과 전송 형식 간에 변환되는 루틴과 변환된 데이터를 보유하는 데 사용되는 사용 가능한 메모리를 제공해야 합니다. [represent_as] 특성은 스텁에 사용자가 제공한 변환 루틴을 호출하도록 지시합니다.
전송된 형식 명명된 형식은 MIDL 기본 형식, 미리 정의된 형식 또는 형식 식별자에 resolve 합니다. 자세한 내용은 MIDL 기본 형식을 참조하세요.
다음 루틴을 제공해야 합니다.
루틴 이름 | Description |
---|---|
named_type**_from_local** | 로컬 형식에서 네트워크 형식으로 데이터를 변환합니다. 루틴은 네트워크 데이터 형식의 포인터에서 참조하는 모든 데이터에 대한 메모리를 포함하여 네트워크 데이터 형식에 대한 메모리를 할당합니다. |
named_type**_to_local** | 네트워크 형식에서 로컬 형식으로 데이터를 변환합니다. 루틴은 로컬 형식의 포인터에서 참조하는 데이터에 대한 메모리 할당을 담당합니다. RPC는 로컬 형식 자체에 대한 메모리를 할당합니다. |
named_type**_free_local** | 로컬 형식의 포인터에서 참조하는 데이터에 할당된 메모리를 해제합니다. RPC는 형식 자체에 대한 메모리를 해제합니다. |
named_type**_free_inst** | 네트워크 형식의 포인터에서 참조하는 데이터와 네트워크 유형 자체에 대해 할당된 메모리를 해제합니다. |
클라이언트 스텁은 명명된 형식**_from_local**을 호출하여 전송된 형식에 대한 공간을 할당하고 로컬 형식에서 네트워크 형식으로 데이터를 변환합니다. 서버 스텁은 원래 데이터 형식에 대한 공간을 할당하고 명명된 형식**_to_local**을 호출하여 데이터를 네트워크 형식에서 로컬 형식으로 변환합니다.
애플리케이션 코드에서 돌아오면 클라이언트 및 서버 스텁은 명명된 형식**_free_inst**을 호출하여 네트워크 유형에 대한 스토리지 할당을 취소합니다. 클라이언트 스텁은 명명된 형식**_free_local**을 호출하여 루틴에서 반환된 스토리지의 할당을 취소합니다.
다음 형식에는 [represent_as] 특성이 있을 수 없습니다.
- 규칙적, 다양하거나 규칙적 배열
- 마지막 멤버가 규칙 배열(규칙 구조체)인 구조체
- 포인터를 포함하는 포인터 또는 형식
- 파이프를 포함하는 파이프 또는 형식
- 파이프의 기본 형식으로 사용되는 형식
- 미리 정의된 형식 handle_t, void
- [handle] 특성이 있는 형식
예
//these data types defined in .IDL or elsewhere
typedef struct _lbox
{
long data;
struct _lbox *next;
} lbox;
typedef [ref] lbox *PBOX_LOC;
typedef long LONG4[4];
//in .ACF file :
interface iface
{
typedef [ represent_as(PBOX_LOC) ] LONG4;
}
참고 항목