포인터(RPC)

일반적인 포인터

공통 포인터는 인터페이스 포인터 및 바이트 개수 포인터 이외의 모든 포인터로 정의됩니다.

설명에 사용할 수 있는 레이아웃은 두 가지입니다.

pointer_type<1> pointer_attributes<1>
simple_type<1> FC_PAD

-또는-

pointer_type<1> pointer_attributes<1>
offset_to_complex_description<2>

포인터가 단순 형식에 대한 포인터이거나 크기가 지정되지 않은 문자열 포인터인 경우 첫 번째 형식이 사용됩니다. 두 번째 형식은 다른 모든 형식에 대한 포인터에 사용됩니다. 포인터 특성은 FC_SIMPLE_POINTER 플래그가 있는 설명 레이아웃을 나타냅니다.

<pointer_type 1>은 다음 중 하나입니다.

형식 문자 Description
FC_RP 참조 포인터입니다.
FC_UP 고유한 포인터입니다.
FC_FP 전체 포인터입니다.
FC_OP 개체 인터페이스의 고유 포인터입니다.

 

FC_OP 구분하는 이유는 의미 체계입니다. 개체 인터페이스에서는 새 개체의 경계를 해제하고 새 포인터 값을 할당하기 전에 [in,out] 포인터를 해제해야 합니다.

<Pointer_attributes 1>에는 다음 표에 표시된 플래그가 있을 수 있습니다.

attribute 플래그 Description
01 FC_ALLOCATE_ALL_NODES 포인터는 할당(all_nodes) 할당 체계의 일부입니다.
02 FC_DONT_FREE allocate(dont_free) 포인터입니다.
04 FC_ALLOCED_ON_STACK 스텁 스택에 참조가 할당된 포인터입니다.
08 FC_SIMPLE_POINTER 단순 형식 또는 크기가 지정되지 않은 규칙 문자열에 대한 포인터입니다. 설정되는 이 플래그는 위에서 설명한 간단한 포인터 레이아웃으로 포인터 설명의 레이아웃을 나타내고, 그렇지 않으면 오프셋이 있는 설명자 형식이 표시됩니다.
10 FC_POINTER_DEREF 포인터의 참조를 처리하기 전에 역참조해야 하는 포인터입니다.

 

size_is(), max_is(), length_is(), last_is() 및/또는 first_is()가 적용된 포인터에는 적절한 형식의 배열에 대한 포인터와 동일한 형식 문자열 설명이 있습니다(예: size_is()가 적용되는 경우 규칙 배열, size_is() 및 length_is 적용되는 경우 규칙적인 다양한 배열).

인터페이스 포인터

개체 인터페이스 포인터 형식 문자열에는 해당 IID가 컴파일러에 알려진지 여부에 따라 두 가지 형식 중 하나가 있습니다.

상수 IID가 있는 인터페이스 포인터에는 다음과 같은 설명이 있습니다.

FC_IP FC_CONSTANT_IID 
iid<16>

iid<16> 부분은 인터페이스 포인터의 실제 IID입니다. iid는 GUID 데이터 구조와 동일한 형식(long, short, short, char [8])으로 형식 문자열에 기록됩니다.

iid_is()가 적용된 인터페이스 포인터에 대한 설명은 다음과 같습니다.

FC_IP FC_PAD 
iid_description<> 

iid_description<> 상관 관계 설명자이며 /strong 사용 여부에 따라 4바이트 또는 6바이트가 있습니다. NdrComputeConformance 함수에서 계산한 값은 IID 포인터입니다.

바이트 개수 포인터

바이트 수 포인터는 [byte_count]라는 특수 최적화 특성과 관련이 있습니다. 다음 형식이 사용됩니다.

FC_BYTE_COUNT_POINTER 
simple_type<1>
byte_count_description<> 

–및–

FC_BYTE_COUNT_POINTER 
FC_PAD
byte_count_description<> 
pointee_description<>

byte_count_description<> 상관 관계 설명자이며 /strong 사용 여부에 따라 4바이트 또는 6바이트가 있습니다.

pointee_description<> 점자 형식에 대한 설명입니다.