Функция 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.
Чтобы отказаться от утверждений в подмножестве запрошенных диапазонов доступа, которые драйвер мини-порта больше не использует, выполните следующие действия.
- Измените спецификацию AccessRanges для адаптера, чтобы каждый элемент, описывающий диапазон, который должен быть освобожден, по-прежнему имеет значение RangeStart , относящееся к шине, для запрошенного диапазона, но RangeLength сбрасывается до нуля.
- Вызов videoPortVerifyAccessRanges с помощью этого измененного массива AccessRanges .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows 2000 и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | video.h (включить Video.h) |
Библиотека | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |