포인터(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<> 점자 형식에 대한 설명입니다.