Проецирование непрерыного участка памяти
Некоторые устройства, особенно работающие с DMA, требуют, чтобы их буферы находились в физически непрерывном участке памяти в адресном пространстве CPU. Кроме того, эти устройства должны получать доступ к буферам памяти используя настоящий физический адрес, а не виртуальный адрес, используемый Win32 или RTSS процессом.
Для выделения физически непрерывного участка памяти и перевода виртуального адреса в физический используются функции RtAllocateContiguousMemory и RtGetPhysicalAddress соответственно.
API
Следующие функции служат для работы с физически непрерывным участком памяти:
RtAllocateContiguousMemory - выделяет физически непрерывный участок памяти и проецирует эту память в виртуальное адресное пространство процесса
RtFreeContiguousMemory - высвобождает ранее выделенный физически непрерывный участок памяти
RtGetPhysicalAddress - возвращает физический адрес по виртуальному адресу ранее выделенного физически непрерывного участка памяти
Замечания по программированию
Данный
демонстрирует выделение непрерывного участка памяти.