Compartilhar via


IMAPISupport::MakeInvalid

Aplica-se a: Outlook 2013 | Outlook 2016

Marca um objeto como inutilizável.

HRESULT MakeInvalid(
ULONG ulFlags,
LPVOID lpObject,
ULONG ulRefCount,
ULONG cMethods
);

Parâmetros

ulFlags

Reservados; deve ser zero.

lpObject

[in] Um ponteiro para o objeto a ser invalidado. A interface do objeto deve ser derivada de IUnknown.

ulRefCount

[in] A contagem de referência atual do objeto.

cMethods

[in] A contagem de métodos na vtable do objeto.

Valor de retorno

S_OK

O objeto foi marcado com êxito como inutilizável.

Comentários

O método IMAPISupport::MakeInvalid é implementado para todos os objetos de suporte. O objeto a ser invalidado deve ser derivado da interface IUnknown ou de uma interface derivada de IUnknown.

MakeInvalid marca um objeto como inutilizável substituindo a vtable do objeto por uma vtable stub de tamanho semelhante na qual os métodos IUnknown::AddRef e IUnknown::Release são executados conforme o esperado. No entanto, quaisquer outros métodos falham, retornando o valor MAPI_E_INVALID_OBJECT.

Notas para chamadores

Provedores de serviços e serviços de mensagem normalmente chamam MakeInvalid no momento do desligamento. No entanto, MakeInvalid pode ser chamado a qualquer momento. Por exemplo, se um cliente liberar um objeto sem liberar alguns de seus subobjetos, você poderá chamar MakeInvalid imediatamente para liberar esses subobjectos.

Você deve possuir o objeto que tenta invalidar. Deve ter pelo menos 16 bytes de comprimento e ter pelo menos três métodos em sua vtable.

Você pode chamar MakeInvalid e executar qualquer trabalho de desligamento, como descartar estruturas de dados associadas, que geralmente é feito durante a liberação de um objeto. O código para dar suporte ao objeto não precisa ser mantido na memória, pois o MAPI libera a memória chamando MAPIFreeBuffer e, em seguida, libera o objeto. Você pode liberar recursos, chamar MakeInvalid e ignorar o objeto invalidado.

Confira também

MAPIAllocateBuffer

IMAPISupport: IUnknown