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