Я пишу драйвер режима ядра в Windows 10 (64-разрядная версия), основная цель которого - чтение из DMA, и мне было интересно, вместо копирования блоков памяти из пространства ядра в буферы, выделенные в пользовательском пространстве, Я мог бы каким-то образом предоставить адрес в пользовательском пространстве (конечно, не физический адрес) и сэкономить на операции копирования памяти.
Возможно что-то вроде этого:
Выделение блока непрерывной физической памяти (и отображение физического адреса на виртуальный адрес в пространстве ядра).
Отображение виртуального адреса в пространстве ядра на виртуальный адрес в пользовательском пространстве.
Кстати, поскольку есть только одно пространство ядра и столько пользовательских пространств, сколько процессов, запущенных в системе (это правильно?), Мне пришлось бы использовать какой-то дескриптор вызывающего процесса, чтобы получить виртуальный адрес в соответствующем процессе ...
Спасибо за ваше время!