función IUnknown_Set (shlwapi.h)
Cambia el valor de un puntero de interfaz del Modelo de objetos componentes (COM) y libera la interfaz anterior.
Sintaxis
void IUnknown_Set(
[in, out] IUnknown **ppunk,
[in, optional] IUnknown *punk
);
Parámetros
[in, out] ppunk
Tipo: IUnknown**
Dirección de un puntero de interfaz COM para recibir el puntero asignado a punk. Si el valor anterior del puntero no es NULL, la función libera esa interfaz llamando al método IUnkown::Release.
[in, optional] punk
Tipo: IUnknown*
Puntero de interfaz que se va a copiar en ppunk. Si el valor no es NULL, la función incrementa el recuento de referencias de la interfaz.
Valor devuelto
None
Observaciones
Esta función imita el comportamiento de un puntero inteligente. Conceptualmente, la función hace lo siguiente:
- Libera la interfaz original, si ppunk no es NULL
- Asigna punk a ppunk
- Llama a IUnknown::AddRef en la interfaz a la que apunta punk, si punk no es NULL.
Ejemplos
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
}
Requisitos
Cliente mínimo compatible | Windows 2000 Professional, Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server, Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | shlwapi.h |
Archivo DLL | Shlwapi.dll (versión 5.0 o posterior) |