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이 아닌 경우 원래 인터페이스를 해제합니다.
- 펑크를펑크에 할당
- 펑크가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 이상) |