다음을 통해 공유


참조 포인터

참조 포인터는 가장 간단한 포인터이며 클라이언트 스텁에서 가장 적은 양의 처리가 필요합니다. 클라이언트 프로그램이 원격 프로시저에 참조 포인터를 전달하는 경우 참조 포인터에는 항상 유효한 메모리 블록의 주소가 포함됩니다. 원격 프로시저가 완료되면 여전히 동일한 메모리 블록을 가리킵니다. 이러한 포인터는 주로 참조 의미 체계를 구현하고 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 를 문자 배열이 아닌 단일 문자에 대한 포인터로 정의합니다. 서버 루틴 RemoteFn이 데이터로 채울 메모리를 가리키는 [out] 매개 변수 및 참조 포인터입니다.