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 以外の場合、関数はインターフェイスの参照カウントをインクリメントします。
戻り値
なし
解説
この関数は、スマート ポインターの動作を模倣します。 概念的には、この関数は次の処理を行います。
- ppunk が NULL 以外の場合は、元のインターフェイスを解放します
- パンクを ppunk に割り当てます
- パンクが 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 以降) |