Метод Идкскореадаптерфактори:: Регистеревентнотификатион

Регистрируется для получения уведомлений о конкретных условиях из адаптера Дкскоре или из списка адаптеров. Инструкции по программированию и примеры кода см. в разделе Использование дкскоре для перечисления адаптеров.

Синтаксис

virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
  _In_ IUnknown *dxCoreObject,
  DXCoreNotificationType notificationType,
  _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
  _In_opt_ void *callbackContext,
  _Out_ uint32_t *eventCookie) = 0;

Параметры

Дкскореобжект [in]

Тип: IUnknown*

Объект Дкскоре (идкскореадаптер или идкскореадаптерлист), чьи уведомления подписаны на.

notificationType

Тип: дкскоренотификатионтипе

Тип уведомления, для которого выполняется регистрация. Сведения о типах, допустимых для типов объектов, см. в таблице в дкскоренотификатионтипе .

Каллбаккфунктион [in]

Тип: PFN_DXCORE_NOTIFICATION_CALLBACK

Указатель на функцию обратного вызова (реализованную приложением), который вызывается объектом Дкскоре для событий уведомления. Сигнатура функции см. в разделе PFN_DXCORE_NOTIFICATION_CALLBACK.

callbackContext [in]

Тип: void *

Необязательный указатель на объект, содержащий сведения о контексте. Этот объект передается функции обратного вызова при возникновении уведомления.

Евенткукие [out]

Тип: uint32_t *

Указатель на значение uint32_t . В случае успеха функция отменяет ссылку на указатель и присваивает значение ненулевому значению cookie, представляющему эту регистрацию. Используйте это значение файла cookie для отмены регистрации в уведомлении путем вызова идкскореадаптерфактори:: унрегистеревентнотификатион. См. Примечания.

В случае неудачи функция отменяет ссылку на указатель и устанавливает значение равным нулю, которое представляет недопустимое значение cookie.

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

Тип: HRESULT

Если функция завершается с ошибкой, она возвращает S_OK. В противном случае возвращается код ошибкиHRESULT.

Возвращаемое значение Описание
DXGI_ERROR_INVALID_CALL нотификатионтипе не поддерживается операционной системой (ОС).
E_INVALIDARG nullptr был предоставлен для дкскореобжект или если было предоставлено недопустимое сочетание нотификатионтипе и дкскореобжект .
E_POINTER nullptr был предоставлен для каллбаккфунктион или евенткукие.

Комментарии

Регистеревентнотификатион используется для регистрации событий, вызванных интерфейсами идкскореадаптерлист и идкскореадаптер . Эти типы уведомлений поддерживаются.

DXCoreNotificationType Поддерживаемые дкскореобжект Примечания
адаптерлистстале IDXCoreAdapterList Указывает, что список адаптеров, отвечающих условиям фильтра, изменился. Если список адаптеров устарел во время регистрации, метод обратного вызова вызывается немедленно. Этот обратный вызов выполняется не чаще одного раза на регистрацию.
адаптернолонжервалид IDXCoreAdapter Указывает, что адаптер больше не действителен. Если во время регистрации адаптер является недопустимым, то метод обратного вызова вызывается немедленно.
адаптербуджетчанже IDXCoreAdapter Указывает, что произошло событие бюджетирования памяти, и необходимо вызвать идкскореадаптер:: куеристате (WITH Дкскореадаптерстате:: адаптермеморибуджет) для вычисления текущего состояния бюджета памяти. После регистрации всегда будет выполняться начальный обратный вызов, позволяющий запрашивать начальное состояние.
адаптерхардвареконтентпротектионтеардовн IDXCoreAdapter Указывает, что необходимо повторно оценить текущее состояние сеанса шифрования; Например, путем вызова ID3D11VideoContext1:: чекккриптосессионстатус , чтобы определить влияние аппаратного уничтожения на определенный интерфейс ID3D11CryptoSession . После регистрации всегда будет выполняться начальный обратный вызов, позволяющий запрашивать начальное состояние.

Вызов функции, предоставляемой в каллбаккфунктион , выполняется асинхронно в фоновом потоке дкскоре при возникновении обнаруженного события. Нет никакой гарантии на порядок или время обратных вызовов — . несколько обратных вызовов могут выполняться в любом порядке или даже одновременно. Можно даже вызвать обратный вызов до завершения регистеревентнотификатион . В этом случае Дкскоре гарантирует, что евенткукие задается перед вызовом обратного вызова. Несколько обратных вызовов для определенной регистрации будут сериализованы по порядку.

Обратные вызовы могут происходить в любое время до вызова унрегистеревентнотификатиони завершения. Обратные вызовы происходят в собственных потоках, и вы можете вызывать API Дкскоре в этих потоках, в том числе унрегистеревентнотификатион. Однако не следует освобождать последнюю ссылку на дкскореобжект в этом потоке.

Важно!

Перед уничтожением объекта Дкскоре, представленного аргументом дкскореобжект , переданным в регистеревентнотификатион, необходимо использовать значение cookie для отмены регистрации этого объекта из уведомлений путем вызова идкскореадаптерфактори:: унрегистеревентнотификатион. Если этого не сделать, то при обнаружении ситуации будет создано неустранимое исключение.

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

Идкскореадаптер, идкскореадаптерлист, идкскореадаптерфактори:: унрегистеревентнотификатион, DXCore Reference, Использование DXCore для перечисления адаптеров