참조 포인터
참조 포인터는 가장 간단한 포인터이며 클라이언트 스텁에서 최소한의 처리가 필요합니다. 클라이언트 프로그램이 원격 프로시저에 참조 포인터를 전달하는 경우 참조 포인터는 항상 유효한 메모리 블록의 주소를 포함합니다. 원격 프로시저가 완료될 때 동일한 메모리 블록을 가리키는 것입니다. 이러한 포인터는 주로 참조 의미 체계를 구현하고 C에서 [out] 매개 변수를 허용하는 데 사용됩니다.
다음 예제에서는 포인터로 표시된 주소의 데이터 내용이 변경될 수 있지만 호출 중에 포인터 값은 변경되지 않습니다.
정적 참조 포인터 주소
참조 포인터에는 다음과 같은 특징이 있습니다.
- 항상 유효한 스토리지를 가리키며 NULL 값이 없습니다.
- 호출 중에는 변경되지 않으며 항상 호출 전후에 동일한 스토리지를 가리킵니다.
- 원격 프로시저에서 반환된 데이터는 기존 스토리지에 기록됩니다.
- 참조 포인터가 가리키는 스토리지는 함수의 다른 포인터 또는 다른 이름으로 액세스할 수 없습니다.
다음 예제와 같이 [ref] 특성을 사용하여 인터페이스 정의에 참조 포인터를 지정합니다.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
이 예제에서는 pChar 매개 변수를 문자 배열이 아닌 단일 문자에 대한 포인터로 정의합니다. [out] 매개 변수 및 서버 루틴 RemoteFn이 데이터로 채울 메모리를 가리키는 참조 포인터입니다.