Метод IDXCoreAdapterFactory::RegisterEventNotification
Регистрируется для получения уведомлений об определенных условиях из адаптера DXCore или списка адаптеров. Руководство по программированию и примеры кода см. в статье Использование DXCore для перечисления адаптеров.
Синтаксис
virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
_In_ IUnknown *dxCoreObject,
DXCoreNotificationType notificationType,
_In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
_In_opt_ void *callbackContext,
_Out_ uint32_t *eventCookie) = 0;
Параметры
dxCoreObject [in]
Тип: IUnknown*
Объект DXCore (IDXCoreAdapter или IDXCoreAdapterList), на уведомления которого вы подписываетесь.
notificationType
Тип уведомления, на которое вы регистрируетесь. Сведения о том, какие типы допустимы для объектов, см. в таблице DXCoreNotificationType .
callbackFunction [in]
Тип: PFN_DXCORE_NOTIFICATION_CALLBACK
Указатель на функцию обратного вызова (реализованную приложением), которая вызывается объектом DXCore для событий уведомления. Сигнатуру функции см. в разделе PFN_DXCORE_NOTIFICATION_CALLBACK.
callbackContext [in]
Тип: void*
Необязательный указатель на объект, содержащий сведения о контексте. Этот объект передается в функцию обратного вызова при возникновении уведомления.
eventCookie [out]
Тип: uint32_t*
Указатель на uint32_t значение. В случае успешного выполнения функция разыменовывает указатель и задает значение ненулевого файла cookie, представляющего эту регистрацию. Используйте это значение файла cookie, чтобы отменить регистрацию уведомления, вызвав IDXCoreAdapterFactory::UnregisterEventNotification. См. Примечания.
В случае неудачи функция разыменовывает указатель и задает значение нулевого значения, которое представляет недопустимое значение файла cookie.
Возвращаемое значение
Тип: HRESULT
Если функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибкиHRESULT.
Возвращаемое значение | Описание |
---|---|
DXGI_ERROR_INVALID_CALL | notificationType не поддерживается операционной системой (ОС). |
E_INVALIDARG | nullptr был указан для dxCoreObject или, если предоставлено недопустимое сочетание notificationType и dxCoreObject . |
E_POINTER | nullptr был предоставлен для callbackFunction или eventCookie. |
Комментарии
RegisterEventNotification используется для регистрации событий, создаваемых интерфейсами IDXCoreAdapterList и IDXCoreAdapter. Поддерживаются эти типы уведомлений.
DXCoreNotificationType | Поддерживается dxCoreObject | Примечания |
---|---|---|
AdapterListStale | IDXCoreAdapterList | Указывает, что список адаптеров, удовлетворяющих критериям фильтра, изменился. Если список адаптеров устарел на момент регистрации, обратный вызов вызывается немедленно. Этот обратный вызов выполняется не более одного раза для каждой регистрации. |
AdapterNoLongerValid | IDXCoreAdapter | Указывает, что адаптер больше недействителен. Если адаптер недействителен во время регистрации, то обратный вызов немедленно вызывается. |
AdapterBudgetChange | IDXCoreAdapter | Указывает, что произошло событие бюджетирования памяти и что необходимо вызвать IDXCoreAdapter::QueryState (с DXCoreAdapterState::AdapterMemoryBudget) для оценки текущего состояния бюджета памяти. После регистрации всегда выполняется первоначальный обратный вызов, позволяющий запрашивать исходное состояние. |
AdapterHardwareContentProtectionTeardown | IDXCoreAdapter | Указывает, что необходимо повторно оценить текущее состояние сеанса шифрования; например, путем вызова ID3D11VideoContext1::CheckCryptoSessionStatus для определения влияния удаления оборудования на определенный интерфейс ID3D11CryptoSession . После регистрации всегда выполняется первоначальный обратный вызов, позволяющий запрашивать исходное состояние. |
Вызов функции, которую вы предоставляете в callbackFunction , выполняется асинхронно в фоновом потоке DXCore при возникновении обнаруженного события. Не гарантируется порядок и время обратных вызовов— несколько обратных вызовов могут выполняться в любом порядке или даже одновременно. Вы даже можете вызвать обратный вызов до завершения registerEventNotification . В этом случае DXCore гарантирует, что eventCookie будет задан до вызова обратного вызова. Несколько обратных вызовов для определенной регистрации будут сериализованы по порядку.
Обратные вызовы могут выполняться в любое время, пока вы не вызовете UnregisterEventNotification, и он не завершится. Обратные вызовы выполняются в собственных потоках, и вы можете выполнять вызовы API DXCore в этих потоках, включая UnregisterEventNotification. Однако не следует освобождать последнюю ссылку на dxCoreObject в этом потоке.
Важно!
Перед уничтожением объекта DXCore, представленного аргументом dxCoreObject , передаваемым в RegisterEventNotification, необходимо использовать значение файла cookie, чтобы отменить регистрацию этого объекта из уведомлений, вызвав IDXCoreAdapterFactory::UnregisterEventNotification. Если этого не сделать, при обнаружении ситуации возникает неустранимое исключение.
См. также раздел
IDXCoreAdapter, IDXCoreAdapterList, IDXCoreAdapterFactory::UnregisterEventNotification, DXCore Reference, Using DXCore to enumerate adapters
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по