다음을 통해 공유


참조 포인터

참조 포인터는 가장 간단한 포인터이며 클라이언트 스텁에서 최소한의 처리가 필요합니다. 클라이언트 프로그램이 원격 프로시저에 참조 포인터를 전달하는 경우 참조 포인터는 항상 유효한 메모리 블록의 주소를 포함합니다. 원격 프로시저가 완료될 때 동일한 메모리 블록을 가리키는 것입니다. 이러한 포인터는 주로 참조 의미 체계를 구현하고 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이 데이터로 채울 메모리를 가리키는 참조 포인터입니다.