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

Функция AgpReserveVirtual резервирует диапазон виртуальных адресов для AGP.

Синтаксис

PAGP_RESERVE_VIRTUAL PagpReserveVirtual;

PVOID PagpReserveVirtual(
  [in]  IN PVOID HwDeviceExtension,
  [in]  IN HANDLE ProcessHandle,
  [in]  IN PVOID PhysicalReserveContext,
  [out] OUT PVOID *VirtualReserveContext
)
{...}

Параметры

[in] HwDeviceExtension

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

[in] ProcessHandle

Дескриптор процесса резервирования диапазона виртуальных адресов. Если ProcessHandle имеет значение 0, диапазон виртуальных адресов выделяется в системном пространстве.

[in] PhysicalReserveContext

Дескриптор контекста, определяющий зарезервированный диапазон физических адресов, с которым связывается резервирование виртуальной памяти. Этот контекст получен из AgpReservePhysical.

[out] VirtualReserveContext

Расположение, в котором драйвер видеопорта записывает дескриптор контекста, идентифицирующий зарезервированную виртуальную память.

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

AgpReserveVirtual возвращает базовый адрес зарезервированного диапазона виртуальных адресов в случае успешного выполнения. в противном случае возвращает значение NULL.

Комментарии

Если processHandle не равно 0, AgpReserveVirtual резервирует, но не фиксирует диапазон виртуальных адресов в адресном пространстве процесса пользовательского режима. В этом случае необходимо вызвать AgpCommitVirtual , чтобы сопоставить зарезервированные виртуальные адреса (в пользовательском режиме) с физическими адресами.

Если ProcessHandle имеет значение 0, AgpReserveVirtual выделяет диапазон виртуальных адресов в системном пространстве и автоматически сопоставляет (фиксирует) весь диапазон виртуальных адресов с физическими адресами. Несмотря на то, что AgpReserveVirtual фиксирует весь виртуальный диапазон, необходимо вызвать AgpCommitVirtual , прежде чем любой код обращается к виртуальному диапазону.

При вызове AgpReserveVirtual для выделения диапазона виртуальных адресов в системном пространстве (то есть, если для ProcessHandle задано значение 0), весь диапазон физических адресов, определенных PhysicalReserveContext , должен быть зафиксирован на заблокированных страницах физической памяти предыдущим вызовом AgpCommitPhysical.

Драйвер мини-порта может несколько раз вызвать AgpReleaseVirtual , чтобы зарезервировать несколько небольших диапазонов адресов, а не один большой диапазон.

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

Требования

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

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

AgpCommitPhysical

AgpCommitVirtual

AgpReleaseVirtual

AgpReservePhysical