функция обратного вызова 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 (include Video.h)
IRQL PASSIVE_LEVEL

См. также

AgpCommitPhysical

AgpCommitVirtual

AgpReleaseVirtual

AgpReservePhysical