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

Fecha o Holder.

Sintaxe

HRESULT Close();

Retornar valor

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Isso fecha um Titular do Distribuidor de Recursos, após o qual o Dispensador de Recursos provavelmente foi liberado.

Antes de fechar, qualquer inventário restante é destruído chamando de volta para o método IDispenserDriver::D estroyResource do Distribuidor de Recursos.

A sequência a seguir descreve como fechar um Distribuidor de Recursos:

  1. Obtenha uma referência ao Distribuidor de Recursos (o objeto que expõe IDispenserDriver).
  2. Chame um método no Distribuidor de Recursos cuja implementação chama IHolder::Close.
  3. IHolder::Close destrói qualquer inventário restante chamando de volta para o método IDispenserDriver::D estroyResource do Resource Dispenser.
  4. IHolder::Close chama o Gerenciador de Distribuidores para remover esse Holder da lista Holder. (Se nenhum Titular permanecer, o objeto Gerenciador de Dispensador se excluirá.)
  5. IHolder::Close lança sua referência à interface IDispenserDriver do Distribuidor de Recursos. Esse é o motivo pelo qual você precisa de uma referência na etapa 1; caso contrário, o Dispensador de Recursos se excluiria prematuramente antes que as etapas subsequentes possam ser concluídas.
  6. IHolder::Close retorna ao Distribuidor de Recursos.
  7. O Distribuidor de Recursos chama IDispenserDriver::D estroyResource. O Holder agora exclui a si mesmo.
  8. O método chamado na etapa 2 agora retorna.
  9. Libere sua referência final para o Distribuidor de Recursos, que agora se exclui.
Observe que o método IDispenserManager::RegisterDispenser não chama AddRef em seu objeto pDispenserDriver , mas IHolder::Close executa um Release no pDispenserDriver. Isso pode fazer com que o objeto Resource Dispenser seja destruído prematuramente. Para evitar essa destruição prematura, o chamador de IHolder::Close deve conter uma referência ao objeto Distribuidor de Recursos, conforme descrito nas etapas 1 e 5.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho comsvcs.h

Confira também

IDispenserDriver

IDispenserManager

IHolder