포함된 Out-Only 참조 포인터
Microsoft RPC에서 [out]전용 참조 포인터를 사용하는 경우 생성된 서버 스텁은 참조 포인터에서 액세스할 수 있는 첫 번째 수준의 포인터만 할당합니다. 더 깊은 수준의 포인터는 스텁에 의해 할당되지 않지만 서버 애플리케이션 계층에서 할당해야 합니다. 예를 들어 인터페이스가 참조 포인터의 [out]전용 배열을 지정한다고 가정합니다.
/* IDL file (fragment) */
typedef [ref] short * PREF;
Proc1([out] PREF array[10]);
이 예제에서 서버 스텁은 10개의 포인터에 대한 메모리를 할당하고 각 포인터의 값을 null로 설정합니다. 서버 애플리케이션은 포인터에서 참조하는 10개의 짧은 정수에 대한 메모리를 할당한 다음 10개의 포인터를 정수로 가리키도록 설정해야 합니다.
[out] 전용 데이터 구조에 중첩된 참조 포인터가 포함된 경우 서버 스텁은 참조 포인터에서 액세스할 수 있는 첫 번째 포인터만 할당합니다. 예:
/* IDL file (fragment) */
typedef struct
{
[ref] small * psValue;
} STRUCT1_TYPE;
typedef struct
{
[ref] STRUCT1_TYPE * ps1;
} STRUCT_TOP_TYPE;
Proc2([out, ref] STRUCT_TOP_TYPE * psTop);
앞의 예제에서 서버 스텁은 포인터 psTop 을 할당하고 구조체는 STRUCT_TOP_TYPE. STRUCT_TOP_TYPE 참조 포인터 ps1이 null로 설정됩니다. 서버 스텁은 데이터 구조의 모든 수준을 할당하지 않으며 STRUCT1_TYPE 또는 포함된 포인터 인 psValue를 할당하지도 않습니다.