关于物理内存读写的问题,高手请指教............
宏鑫晶科 2003-08-31 12:47:40 一块ISA通讯卡,卡上4K双口RAM映射到PC存储器地址空间 0xb0000000-起始地址,
用TURBU c编程在DOS下可以用far 指针访问,用DEBUG DB000:0000也可以读取数据(win98 debug也可以),现需要在98/2000下编制应用程序,我用driverworks写了一个wdm驱动,读写物理内存用如下方式:
NTSTATUS HDLCIsaDevice::OnStartDevice(KIrp I)中:
status = m_MemoryRange0.Initialize(
pResListTranslated,
pResListRaw,
0,
TRUE
);
if (!NT_SUCCESS(status))
{
Invalidate();
return status;
}
//读存储器
NTSTATUS HDLCIsaDevice::HDLCISA_IOCTL_801_Handler(KIrp I)
{
NTSTATUS status = STATUS_SUCCESS;
PUCHAR ioBuffer = (PUCHAR)I.IoctlBuffer();
ULONG ioInSize = I.IoctlInputBufferSize();
ULONG ioOutSize = I.IoctlOutputBufferSize();
UCHAR p[40];
p[0]=0xaa;
p[1]=0xaa;
p[2]=0xaa;
p[3]=0xaa;
p[4]=0xaa;
//m_MemoryRange0.inb(0, (PUCHAR)ioBuffer, ioInSize);
//m_MemoryRange0.inb(0, p, 20);
for(UCHAR i=0; i<20; i++)
{
p[i] = m_MemoryRange0.inb(i);
//ioBuffer[i] = m_MemoryRange0.inb(i);
t << "p[i] " << p[i] << EOL;
}
I.Information() = sizeof(PUCHAR);
status = STATUS_SUCCESS;
return status;
}
在WDM中用m_MemoryRange0.inb(0), 读取的数据都是0XFF,读不出ISA上存储
区的数据,问题出在哪里,请指教!