Добрый день
Суть проблемы:
-есть устройство PCI, которое, при соответствующем программировании, осуществляет передачу данных
в некий буфер, адрес которого я и должен указать ему.
Сразу оговорюсь, устройство является Bus Master-ом, но оно все делает само, т.е., я отношения к DMA не имею
Так вот, нужно:
- выделить непрерывный участок в памяти и его физический адрес передать в устройство
- этот же участок памяти должен быть доступен в приложении пользователя (3-е кольцо) для обработки данных, поступающих
от устройства
Пробую делать так:
MmAllocateContigouoseMemory(Size,....)
BuildMDL()
LockMdl
ProbeAndLockPages(...UserMode) - здесь получил адрес буфера в приложении пользователя (соответственно, через IOCTL)
А от какой функции брать теперь MmGetPhysicalAddress
Или вообще, моя концепция неправильная - может, нужно MmMapIoSpace использовать?
Тогда, от чего его (MmMapIoSpace) брать?
В общем, помогите, кто чем может, а то совсем запутался
С уважением, Алексей Локис
flash2001@newmail.ru