다음을 통해 공유


포인터(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> 다음 중 하나입니다.

문자 서식 지정 묘사
FC_RP 참조 포인터입니다.
FC_UP 고유한 포인터입니다.
FC_FP 전체 포인터입니다.
FC_OP 개체 인터페이스의 고유 포인터입니다.

 

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

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

속성 묘사
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<> 상관 관계 설명자이며 /robust 사용되는지 여부에 따라 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<> 상관 관계 설명자이며 /robust 사용되는지 여부에 따라 4바이트 또는 6바이트를 가집니다.

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