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


функция обратного вызова DXGKDDI_VIDPN_ASSIGNTARGETMODESET (d3dkmddi.h)

Функция pfnAssignTargetModeSet назначает целевой режим, заданный определенному целевому объекту в указанном VidPN.

Синтаксис

DXGKDDI_VIDPN_ASSIGNTARGETMODESET DxgkddiVidpnAssigntargetmodeset;

NTSTATUS DxgkddiVidpnAssigntargetmodeset(
  [in] IN_D3DKMDT_HVIDPN hVidPn,
  [in] IN_CONST_D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId,
  [in] IN_CONST_D3DKMDT_HVIDPNTARGETMODESET hVidPnTargetModeSet
)
{...}

Параметры

[in] hVidPn

Дескриптор объекта VidPN. Ранее диспетчер VidPN предоставил этот дескриптор драйверу мини-порта дисплея, вызвав DxgkDdiEnumVidPnCofuncModality или DxgkDdiRecommendFunctionalVidPn.

[in] VidPnTargetId

Целое число, идентифицирующее один из целевых объектов видео, связанных с объектом VidPN.

[in] hVidPnTargetModeSet

Дескриптор объекта набора целевого режима, который должен быть назначен целевому объекту, определяемому VidPnTargetId. Драйвер мини-порта дисплея ранее получил этот дескриптор, вызвав pfnCreateNewTargetModeSet.

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

Функция pfnAssignTargetModeSet возвращает одно из следующих значений:

Код возврата Описание
STATUS_SUCCESS Функция выполнена успешно.
STATUS_GRAPHICS_INVALID_VIDPN Дескриптор, предоставленный в hVidPn, был недопустим.
STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Идентификатор, предоставленный в VidPnTargetId, был недопустимым.
STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET Дескриптор, предоставленный в hVidPnTargetModeSet, недопустим.
STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Набор целевого режима, который вы пытаетесь назначить, не содержит режим, который уже был закреплен на целевом объекте.

Комментарии

Целевые идентификаторы VidPN назначаются драйвером мини-порта дисплея. DxgkDdiQueryChildRelations, реализованный драйвером мини-порта дисплея, возвращает массив DXGK_CHILD_DESCRIPTOR структур, каждая из которых содержит идентификатор.

Если вы получили дескриптор , вызвав pfnCreateNewTargetModeSet , а затем передайте этот дескриптор в pfnAssignTargetModeSet, вам не нужно освобождать дескриптор, вызвав pfnReleaseTargetModeSet.

Если вы получили дескриптор , вызвав pfnCreateNewTargetModeSet , а затем решили не назначать новый целевой режим, заданный целевому объекту, необходимо освободить только что полученный дескриптор, вызвав pfnReleaseTargetModeSet.

Примечание Функция pfnAssignTargetModeSet освобождает или не освобождает объект набора целевого режима, который определяется параметром hVidPnTargetModeSet в зависимости от причины, вызвавшей сбой pfnAssignTargetModeSet .

pfnAssignTargetModeSet не освобождает объект набора целевого режима, если pfnAssignTargetModeSet завершается сбоем с недопустимым входным параметром (т. е. сбоем с кодом ошибки STATUS_GRAPHICS_INVALID_VIDPN, STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET или STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET), так как указанных параметров было недостаточно для операционной системы, чтобы определить, какой объект набора режима следует освободить. Такие недопустимые ситуации параметров указывают на грубую ошибку кодирования в драйвере. Эту ошибку можно исправить, указав правильный дескриптор VidPN, идентификатор целевого объекта или дескриптор целевого режима VidPN.

pfnAssignTargetModeSet освобождает объект набора целевого режима после успешной проверки всех входных параметров, если pfnAssignTargetModeSet завершается ошибкой по одной из следующих причин:

  • Целевой режим пуст.
  • Набор целевых режимов не содержит режим, закрепленный в предыдущем наборе режимов, если он имеется.
  • Набор целевого режима не был создан для целевого объекта, который идентифицируется с помощью VidPnTargetId.
 
Тип данных D3DDDI_VIDEO_PRESENT_TARGET_ID определен в D3dukmdt.h.

Типы данных D3DKMDT_HVIDPN и D3DKMDT_HVIDPNTARGETMODESET определены в D3dkmdt.h.

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Целевая платформа Персональный компьютер
Верхняя часть d3dkmddi.h (включая D3dkmddi.h)
IRQL PASSIVE_LEVEL

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

Интерфейс установки целевого режима VidPN

pfnCreateNewTargetModeSet