Метод IHolder::TrackResource (comsvcs.h)

Отслеживает ресурс.

Синтаксис

HRESULT TrackResource(
  [in] const RESID __MIDL__IHolder0003
);

Параметры

[in] __MIDL__IHolder0003

Дескриптор отслеживаемого ресурса. Диспенсер ресурсов уже создал этот ресурс перед вызовом TrackResource.

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

Этот метод может возвращать следующие значения.

Код возврата Описание
S_OK
Метод завершился успешно.
E_INVALIDARG
ResId не является допустимым дескриптором ресурса.
E_FAIL
Сбой метода. Ресурс не отслеживается. Вероятная причина заключается в том, что транзакция вызывающего абонента прерывается.

Комментарии

Некоторые ресурсы не хранятся на складе; они всегда производятся по требованию. Владелец используется только в качестве механизма для автоматического освобождения ресурсов, оставшихся в конце времени существования объекта.

TrackResource сообщает владельцу, что ресурс должен отслеживаться до тех пор, пока он не будет освобожден путем вызова IHolder::UntrackResource или до освобождения объекта TrackResource , после чего диспетчер диспенсера автоматически освободит ресурс.

Если trackResource вызывается из транзакционного объекта, он вызывает метод IDispenserDriver::EnlistResource для диспенсера ресурсов. Метод EnlistResource может заверять ресурс в транзакцию или возвращать S_FALSE, указывая, что ресурс не поддерживает транзакцию и не был зачислен.

В конечном итоге этот ресурс будет уничтожен после того, как выполняются оба следующих условия:

  • Диспенсер ресурсов вызывает IHolder::UntrackResource (скорее всего, по запросу компонента), или заканчивается время существования объекта.
  • Выполняется транзакция, в которую был зачислен ресурс (если таковой имеется).

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header comsvcs.h

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

IDispenserDriver

IDispenserManager

IHolder