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


Функция CoDisableCallCancellation (combaseapi.h)

Отменяет действие вызова CoEnableCallCancellation. Отключает отмену синхронных вызовов в вызывающем потоке, если все вызовы CoEnableCallCancellation сбалансированы вызовами CoDisableCallCancellation.

Синтаксис

HRESULT CoDisableCallCancellation(
  [in, optional] LPVOID pReserved
);

Параметры

[in, optional] pReserved

Этот параметр зарезервирован и должен иметь значение NULL.

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

Эта функция может возвращать стандартные возвращаемые значения E_FAIL, E_INVALIDARG, E_OUTOFMEMORY и E_UNEXPECTED, а также следующие значения.

Код возврата Описание
S_OK
Отмена вызова была успешно отключена в потоке.
CO_E_CANCEL_DISABLED
В потоке были более успешные вызовы CoEnableCallCancellation , чем вызовы CoDisableCallCancellation. Отмена по-прежнему включена в потоке.

Комментарии

Если в потоке включена отмена вызовов, маршалированные синхронные вызовы из этого потока к объектам на том же компьютере могут серьезно снизить производительность. По умолчанию синхронные вызовы нельзя отменить, даже если доступен объект отмены. Чтобы включить отмену вызова, сначала необходимо вызвать CoEnableCallCancellation .

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

Если вы не хотите постоянно включать отмену вызовов в потоке, следует связать вызовы CoEnableCallCancellation с вызовами CoDisableCallCancellation. Отмена звонка отключена, только если каждый успешный вызов CoEnableCallCancellation сбалансирован успешным вызовом CoDisableCallCancellation.

Вызов будет отменен или не будет отменен в зависимости от состояния потока на момент выполнения вызова. Впоследствии включение или отключение отмены вызовов не влияет на вызовы, ожидающие в потоке.

Если поток неинициализирован, а затем повторно инициализирован с помощью вызовов CoUninitialize и CoInitialize, отмена вызова отключена в потоке, даже если она была включена при неинициализации потока.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header combaseapi.h (включая Objbase.h)
Библиотека Ole32.lib
DLL Ole32.dll

См. также раздел

CoEnableCallCancellation

ICancelMethodCalls