IUnknown_Set函式 (shlwapi.h)

變更元件物件模型 (COM) 介面指標的值,並釋放上一個介面。

語法

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

參數

[in, out] ppunk

類型: IUnknown**

要接收指派給 punk之指標的 COM 介面指標位址。 如果指標的先前值為非Null,函式會藉由呼叫其 IUnkown::Release 方法來釋放該介面。

[in, optional] punk

類型: IUnknown*

要複製到 ppunk的介面指標。 如果值為非Null,函式會遞增介面的參考計數。

傳回值

備註

此函式會模擬智慧型指標的行為。 在概念上,函式會執行下列動作:

  • 如果ppunk不是Null,則會釋放原始介面
  • 標點 指派給 ppunk
  • 如果punk為非Null,請在punk指向的介面上呼叫 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 版或更新版本)