Поделиться через


IMAPISupport::MakeInvalid

Область применения: Outlook 2013 | Outlook 2016

Помечает объект как непригодный для использования.

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

Параметры

ulFlags

Защищены; значение должно быть равно нулю.

lpObject

[в] Указатель на объект, который будет признан недействительным. Интерфейс объекта должен быть производным от IUnknown.

ulRefCount

[в] Текущее число ссылок объекта.

cMethods

[в] Количество методов в vtable объекта.

Возвращаемое значение

S_OK

Объект был успешно помечен как непригодный для использования.

Замечания

Метод IMAPISupport::MakeInvalid реализован для всех объектов поддержки. Объект, который будет признан недействительным, должен быть производным от интерфейса IUnknown или интерфейса, производного от IUnknown.

MakeInvalid помечает объект как непригодный для использования, заменив vtable объекта на заглушку vtable аналогичного размера, в которой методы IUnknown::AddRef и IUnknown::Release выполняются должным образом. Однако все другие методы завершаются ошибкой, возвращая значение MAPI_E_INVALID_OBJECT.

Примечания для вызывающих методов

Поставщики услуг и службы сообщений обычно вызывают MakeInvalid во время завершения работы. Однако метод MakeInvalid можно вызвать в любое время. Например, если клиент освобождает объект, не освобождая некоторые из его подобъектов, можно немедленно вызвать MakeInvalid , чтобы освободить эти подобъекты.

Вы должны быть владельцем объекта, который вы пытаетесь сделать недействительным. Он должен иметь длину не менее 16 байтов и содержать по крайней мере три метода в виртуальной строке.

Вы можете вызвать MakeInvalid , а затем выполнить любую работу завершения работы, например удалить связанные структуры данных, что обычно выполняется во время освобождения объекта. Код для поддержки объекта не требуется хранить в памяти, так как MAPI освобождает память путем вызова MAPIFreeBuffer , а затем освобождает объект . Вы можете освободить ресурсы, вызвать MakeInvalid, а затем игнорировать недействительный объект.

См. также

MAPIAllocateBuffer

IMAPISupport: IUnknown