Método IHolder::Close (comsvcs.h)

Cierra el titular.

Sintaxis

HRESULT Close();

Valor devuelto

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Esto cierra el titular de un dispensador de recursos, después del cual probablemente se liberó el dispensador de recursos.

Antes de cerrar, cualquier inventario restante se destruye llamando al método IDispenserDriver::D estroyResource de Resource Dispenser.

En la secuencia siguiente se describe cómo cerrar un dispensador de recursos:

  1. Obtenga una referencia al dispensador de recursos (el objeto que expone IDispenserDriver).
  2. Llame a un método en Resource Dispenser cuya implementación llama a IHolder::Close.
  3. IHolder::Close destruye cualquier inventario restante llamando al método IDispenserDriver::D estroyResource de Resource Dispenser.
  4. IHolder::Close llama al administrador del dispensador para quitar este titular de la lista de titulares. (Si no quedan titulares, el objeto Dispenser Manager se elimina a sí mismo).
  5. IHolder::Close publica su referencia a la interfaz IDispenserDriver de Resource Dispenser. Esta es la razón por la que necesita una referencia en el paso 1; de lo contrario, el dispensador de recursos se eliminaría prematuramente antes de que se puedan completar los pasos posteriores.
  6. IHolder::Close vuelve al dispensador de recursos.
  7. El dispensador de recursos llama a IDispenserDriver::D estroyResource. El titular ahora se elimina a sí mismo.
  8. El método al que se llama en el paso 2 ahora devuelve.
  9. Libere la referencia final al dispensador de recursos, que ahora se elimina.
Tenga en cuenta que el método IDispenserManager::RegisterDispenser no llama a AddRef en su objeto pDispenserDriver , pero IHolder::Close realiza una versión en pDispenserDriver. Esto puede hacer que el objeto Resource Dispenser se destruya prematuramente. Para evitar esta destrucción prematura, el autor de la llamada de IHolder::Close debe contener una referencia al objeto Resource Dispenser, tal y como se describe en los pasos 1 y 5.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado comsvcs.h

Consulte también

IDispenserDriver

IDispenserManager

IHolder