функция обратного вызова 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 |