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


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

Функция pfnAssignSourceModeSet назначает режим источника, заданный конкретному источнику в указанном VidPN.

Синтаксис

DXGKDDI_VIDPN_ASSIGNSOURCEMODESET DxgkddiVidpnAssignsourcemodeset;

NTSTATUS DxgkddiVidpnAssignsourcemodeset(
  [in] IN_D3DKMDT_HVIDPN hVidPn,
  [in] IN_CONST_D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId,
  [in] IN_CONST_D3DKMDT_HVIDPNSOURCEMODESET hVidPnSourceModeSet
)
{...}

Параметры

[in] hVidPn

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

[in] VidPnSourceId

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

[in] hVidPnSourceModeSet

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

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

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

Код возврата Описание
STATUS_SUCCESS Функция выполнена успешно.
STATUS_GRAPHICS_INVALID_VIDPN Дескриптор, предоставленный в hVidPn, был недопустимым.
STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Недопустимый идентификатор, указанный в VidPnSourceId.
STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Дескриптор, предоставленный в hVidPnSourceModeSet, был недопустимым.
STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Набор исходного режима, который вы пытаетесь назначить, не содержит режим, который уже был закреплен на источнике.

Комментарии

Идентификаторы источника VidPN назначаются операционной системой. DxgkDdiStartDevice, реализованный драйвером мини-порта дисплея, возвращает число N источников видеотрансляции, поддерживаемых видеоадаптером. Затем операционная система назначает идентификаторы 0, 1, 2, ... N - 1.

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

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

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

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

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

  • Набор исходного режима пуст.
  • Набор режимов источника не содержит режим, закрепленный в предыдущем наборе режимов, если таковой имеется.
  • Набор исходного режима не был создан для источника, определяемого VidPnSourceId.
 
Тип данных D3DDDI_VIDEO_PRESENT_SOURCE_ID определен в D3dukmdt.h.

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

Требования

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

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

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

pfnCreateNewSourceModeSet