다음을 통해 공유


IUnknown_Set 함수(shlwapi.h)

COM(구성 요소 개체 모델) 인터페이스 포인터의 값을 변경하고 이전 인터페이스를 해제합니다.

구문

void IUnknown_Set(
  [in, out]      IUnknown **ppunk,
  [in, optional] IUnknown *punk
);

매개 변수

[in, out] ppunk

형식: IUnknown**

펑크에 할당된 포인터를 받을 COM 인터페이스 포인터의 주소입니다. 포인터의 이전 값이 NULL이 아닌 경우 함수는 IUnkown::Release 메서드를 호출하여 해당 인터페이스를 해제합니다.

[in, optional] punk

형식: IUnknown*

ppunk에 복사할 인터페이스 포인터입니다. 값이 NULL이 아닌 경우 함수는 인터페이스의 참조 수를 증가합니다.

반환 값

없음

설명

이 함수는 스마트 포인터의 동작을 모방합니다. 개념적으로 함수는 다음을 수행합니다.

  • ppunkNULL이 아닌 경우 원래 인터페이스를 해제합니다.
  • 크를펑크에 할당
  • 펑크가NULL이 아닌 경우 펑크가 가리키는 인터페이스에서 IUnknown::AddRef를 호출합니다.

예제


void sample()
{
  IUnknown *punk = NULL;
  IStream* pstm = NULL;

  if (SUCCEEDED(CreateStreamOnHGlobal(NULL, TRUE, &pstm)) {
    // since punk == NULL, this merely copies the value and AddRef()s it
    IUnknown_Set(&punk, pstm);
    pstm->Release();

    if (SUCCEEDED(CreateStreamOnHGlobal(NULL, TRUE, &pstm)) {
      // this call will release the old value of punk before copying the
      // new value and AddRef()ing it
      IUnknown_Set(&punk, pstm);
      pstm->Release();
    }
  }

  // This call will release whatever punk points to, if anything.
  IUnknown_AtomcRelease((void**)&punk);

  // at this point, punk == NULL
}

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional, Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server, Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shlwapi.h
DLL Shlwapi.dll(버전 5.0 이상)