Функция VideoPortVerifyAccessRanges (video.h)

Функция VideoPortVerifyAccessRanges проверяет реестр на наличие у другого драйвера права владения указанными диапазонами доступа относительно шины и другими аппаратными ресурсами, указанными в структуре VIDEO_PORT_CONFIG_INFO . В противном случае эта функция запрашивает заданные ресурсы для вызывающего объекта.

Синтаксис

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortVerifyAccessRanges(
                 PVOID               HwDeviceExtension,
                 ULONG               NumAccessRanges,
  [in, optional] PVIDEO_ACCESS_RANGE AccessRanges
);

Параметры

HwDeviceExtension

Указатель на расширение устройства драйвера мини-порта.

NumAccessRanges

Указывает количество элементов в массиве AccessRanges или ноль.

[in, optional] AccessRanges

Указатель на массив диапазонов доступа драйвера miniport или NULL. Каждый элемент типа VIDEO_ACCESS_RANGE в этом массиве определяет относительный диапазон памяти устройства, портов ввода-вывода или адресов регистрации адаптера.

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

VideoPortVerifyAccessRanges возвращает одно из следующих значений:

Код возврата Описание
ERROR_INVALID_PARAMETER Произошла ошибка или обнаружен конфликт; то есть другой драйвер уже затребовал один или несколько заданных аппаратных ресурсов для своего устройства.
NO_ERROR Заданные значения AccessRanges являются допустимыми и были запрошены для использования вызывающим абонентом.

Комментарии

Каждый драйвер видео минипорта должен вызывать VideoPortVerifyAccessRanges или использовать диапазоны доступа, возвращаемые VideoPortGetAccessRanges , прежде чем пытаться получить доступ к видеоадаптеду во время процесса инициализации драйвера (и системы).

VideoPortVerifyAccessRanges может вызываться только функцией HwVidFindAdapter драйвера мини-порта.

Каждый драйвер видео минипорта должен определять диапазоны доступа к шине для своего устройства в виде статически выделенной памяти в файле заголовка или коде драйвера или в стеке. Большинство драйверов минипорта настраивают диапазоны доступа к видео в стеке, за исключением тех, которые используют стандартные диапазоны адресов ПК для видеопамяти, например драйверы svGA-совместимых с VGA мини-портов.

Функция HwVidFindAdapter должна попытаться получить сведения об диапазоне доступа относительно шины, вызвав VideoPortGetAccessRanges или проверив реестр с помощью вызовов VideoPortGetDeviceData или VideoPortGetRegistryParameters. Если HwVidFindAdapter не может получить эти сведения, драйвер мини-порта должен иметь набор значений по умолчанию относительно шины для диапазонов доступа.

Если диапазоны доступа драйвера мини-порта настраиваются извне, программа установки настраивает диапазоны доступа для адаптера в реестре. Функция HwVidFindAdapter драйвера мини-порта может вызывать VideoPortGetRegistryParameters с помощью функции HwVidQueryNamedValueCallback , которая обрабатывает сведения, полученные из реестра.

HwVidFindAdapter не должен передавать адреса диапазона доступа в VideoPortGetDeviceBase , если он не вызывает VideoPortVerifyAccessRanges или VideoPortGetAccessRanges , а соответствующая функция возвращает NO_ERROR.

VideoPortVerifyAccessRanges можно вызвать снова, если начальная спецификация AccessRanges или значение в VIDEO_PORT_CONFIG_INFO, например вектор прерывания, приводит к возврату ERROR_XXX, указывающее, что другой драйвер уже затребовал ресурсы.

Если VideoPortVerifyAccessRanges возвращает NO_ERROR, последующий вызов того же адаптера перезаписывает утверждение драйвера miniport в ресурсах для этого адаптера в реестре.

Обратите внимание, что драйвер мини-порта не может взаимодействовать со своим видеоадаптером, за исключением использования сопоставленных адресов, возвращаемых VideoPortGetDeviceBase с функциями VideoPortRead/WriteXxx .

Если функция HwVidFindAdapter утверждает диапазоны доступа относительно шины и, возможно, другие аппаратные ресурсы для адаптера, но затем определяет, что адаптер не поддерживается, драйвер мини-порта должен отказаться от своих утверждений для аппаратных ресурсов в реестре, вызвав VideoPortVerifyAccessRanges или VideoPortGetAccessRanges с параметром NumAccessRanges , равным нулю, а AccessRangesзначение NULL.

Чтобы отказаться от утверждений в подмножестве запрошенных диапазонов доступа, которые драйвер мини-порта больше не использует, выполните следующие действия.

  1. Измените спецификацию AccessRanges для адаптера, чтобы каждый элемент, описывающий диапазон, который должен быть освобожден, по-прежнему имеет значение RangeStart , относящееся к шине, для запрошенного диапазона, но RangeLength сбрасывается до нуля.
  2. Вызов videoPortVerifyAccessRanges с помощью этого измененного массива AccessRanges .

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть video.h (включить Video.h)
Библиотека Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

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

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetAccessRanges

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortGetRegistryParameters