我正在编写一种驱动程序,可以直接将数据写入帧缓冲区,这样我就可以在屏幕上显示秘密信息,而用户空间中的应用程序无法获得它。下面是我的代码,试图将值写入帧缓冲区,但在我将值写入帧缓冲区后,从帧缓冲区检索到的值都为0。
我感到困惑,有人知道原因吗?或者有人知道如何在用户空间的应用程序无法获取消息内容时在屏幕上显示消息吗?非常感谢!
我感到困惑,有人知道原因吗?或者有人知道如何在用户空间的应用程序无法获取消息内容时在屏幕上显示消息吗?非常感谢!
#define FRAME_BUFFER_PHYSICAL_ADDRESS 0xA0000
#define BUFFER_SIZE 0x20000
void showMessage()
{
int i;
int *vAddr;
PHYSICAL_ADDRESS pAddr;
pAddr.QuadPart = FRAME_BUFFER_PHYSICAL_ADDRESS;
vAddr = (int *)MmMapIoSpace(pAddr, BUFFER_SIZE, MmNonCached);
KdPrint(("Virtual address is %p", vAddr));
for(i = 0; i < BUFFER_SIZE / 4; i++)
{
vAddr[i] = 0x11223344;
}
for(i = 0; i < 0x80; i++)
{
KdPrint(("Value: %d", vAddr[i])); // output are all zero
}
MmUnmapIoSpace(vAddr, BUFFER_SIZE);
}