MmMapIoSpace
От: ifed  
Дата: 18.03.10 14:38
Оценка:
Здравствуйте!
Пытаюсь получить доступ к регистрам устройства, подключенного через ISA (Windows CE).
Отображаю физический адрес на виртуальную память с помощью MmMapIoSpace().
Базовый адрес устройства 0xD0000;

Пишу следующий код:
PHYSICAL_ADDRESS a;
PVOID vad;
a.QuadPart = 0xD0000;
vad = MmMapIoSpace(a,4096,FALSE);

функция возвращается null. Что я делаю неверно?

Спасибо.
ps. Извиняюсь если не в той ветке, более подходящей не нашла...

18.03.10 17:47: Перенесено модератором из 'C/C++' — Кодт
Re: MmMapIoSpace
От: x64 Россия  
Дата: 18.03.10 15:36
Оценка:
I>vad = MmMapIoSpace(a,4096,FALSE);
I>функция возвращается null. Что я делаю неверно?

Я не большой спец по Windows CE, но может попробовать третий параметр выставить в TRUE?
Re: MmMapIoSpace
От: superlexx  
Дата: 18.03.10 16:32
Оценка:
BusTransBusAddrToVirtual
This function translates a bus address to a virtual system address.

http://msdn.microsoft.com/en-us/library/ms896154.aspx
Re[2]: MmMapIoSpace
От: ifed  
Дата: 19.03.10 07:44
Оценка:
Здравствуйте, x64, Вы писали:

I>>vad = MmMapIoSpace(a,4096,FALSE);

I>>функция возвращается null. Что я делаю неверно?

x64>Я не большой спец по Windows CE, но может попробовать третий параметр выставить в TRUE?


Из msdn третий параметр
CacheEnable
[in] Flag to indicate whether the physical address range can map as cached memory. For device registers, this value is usually FALSE.

Думаю ошибка со структурой PHYSICAL_ADDRESS... или с размером памяти отображаемой, но что-то по-разному пробовала, никак...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.