kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1477回复:16

pxe基本信息查询

楼主#
更多 发布于:2004-05-20 14:33
各位老大:
   PXE (preboot execute environment)是由Intel 公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程.
   偏偏我要解决这个问题,现在我在自己的scsi驱动中需要访问PXE里缓冲IP地址信息,在Windows 2000 Boot stage 0下,如何解决?
我使用了这样的代码
NTSTATUS GetphysicMem(LONG baseaddr)
{
UNICODE_STRING ObjName;
OBJECT_ATTRIBUTES obj_ar;
HANDLE hSection;
PVOID pBaseAddr;
LARGE_INTEGER phyAddr;
SIZE_T size;

// size=0xffff;
size=BASEMEMORYSIZE;

pBaseAddr=NULL;
// phyAddr.LowPart=0x000f0000; //物理内存的基址,就是f000:0000
phyAddr.LowPart=baseaddr;
// phyAddr.LowPart=0x000000a0;
phyAddr.HighPart=0x00000000;

RtlInitUnicodeString(&ObjName,L\"\\\\device\\\\physicalmemory\");

InitializeObjectAttributes( &obj_ar, &ObjName,
OBJ_CASE_INSENSITIVE, (HANDLE) NULL,
(PSECURITY_DESCRIPTOR) NULL );

ZwOpenSection(&hSection,SECTION_ALL_ACCESS,&obj_ar);
ZwMapViewOfSection(
(HANDLE)hSection, //打开Section时得到的句柄
(HANDLE)0xffffffff, //将要映射进程的句柄,
&pBaseAddr, //映射的基址
0, //没怎么看明白,设为0就好了
BASEMEMORYSIZE, //分配的大小
&phyAddr, //物理内存的地址
&size, //指向读取内存块大小的指针
ViewShare, //子进程的可继承性设定
0, //分配类型
ViewUnmap); //保护类型

RtlCopyMemory(gBaseBuffer,pBaseAddr,size);
ZwUnmapViewOfSection((HANDLE)0xffffffff,pBaseAddr);

return STATUS_SUCCESS;
}
但没有查到,各位高手有没有办法?


最新喜欢:

TOMG2004TOMG20...
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-05-20 16:57
没有查到,是什么意思??是影射的物理内存里没有你的东西,还是压根就没有影射???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-20 17:12
呵呵,在dos实模式下应该是可以查到的,我现在需要确认两个问题:
1、映射的内存里面没有我的东西
2、我的映射方法是否正确
我是在scsi驱动启动之初读取内存的,但没有查找到我要的东西,我估计和实模式/保护模式有关系,同时映射方法是否正确也是一个问题,希望大虾能够解决
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-11 16:25
to wowocock老大:
  我在scsi驱动里面调用上面的方法能够查询到实模式下640k~1M的数据吗?方法是否正确(scsi在第0级保护模式下启动)
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-14 09:14
如果你启动的时候没有装载过pxe,那你是察看不出来pxe的程序的,i am sure.
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-14 10:06
你的意思是,我的这种方法应该是正确的吗?
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-14 11:12
我的感觉是你的方法是正确的,问题是pxe没load进来,你可以在dos下写个程序试验,pxe spec上面有的,一般来说pxe是肯定没加载的
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-14 11:33
我同事曾经在dos下看到过这个数据,我就怀疑在实模式下的数据,到了保护模式下,就看不到了,需要使用特殊的方法,但我不知道除了我这种方法之外还有什么其他的方法可以看到.
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-15 09:19
你去问问看你的同事怎么在dos下看到的?怀疑他用pxe启动然后再用int19h载入dos。不然我想象不出pxe怎么出现
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-15 10:38
不是的,直接使用了pxe网络启动dos,之后就能在高端内存看到
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-15 10:42
那就是啊,你现在也是从pxe启动的么?windows启动好像只使用512k以下的内存啊。
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-15 11:09
不错,我现在也是从pxe启动,但这个高端内存在驱动中好像搜索不到
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-06-15 11:54
在2000下面一般物理内存map到kernel memory都是8000000开始的,你用softice看看吧。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-15 13:43
各位老大:
   PXE (preboot execute environment)是由Intel 公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程.
   偏偏我要解决这个问题,现在我在自己的scsi驱动中需要访问PXE里缓冲IP地址信息,在Windows 2000 Boot stage 0下,如何解决?
我使用了这样的代码
NTSTATUS GetphysicMem(LONG baseaddr)
{
UNICODE_STRING ObjName;
OBJECT_ATTRIBUTES obj_ar;
HANDLE hSection;
PVOID pBaseAddr;
LARGE_INTEGER phyAddr;
SIZE_T size;

// size=0xffff;
size=BASEMEMORYSIZE;

pBaseAddr=NULL;
// phyAddr.LowPart=0x000f0000; //物理内存的基址,就是f000:0000
phyAddr.LowPart=baseaddr;
// phyAddr.LowPart=0x000000a0;
phyAddr.HighPart=0x00000000;

RtlInitUnicodeString(&ObjName,L"\\device\\physicalmemory");

InitializeObjectAttributes( &obj_ar, &ObjName,
OBJ_CASE_INSENSITIVE, (HANDLE) NULL,
(PSECURITY_DESCRIPTOR) NULL );

ZwOpenSection(&hSection,SECTION_ALL_ACCESS,&obj_ar);
ZwMapViewOfSection(
(HANDLE)hSection, //打开Section时得到的句柄
(HANDLE)0xffffffff, //将要映射进程的句柄,
&pBaseAddr, //映射的基址
0, //没怎么看明白,设为0就好了
BASEMEMORYSIZE, //分配的大小
&phyAddr, //物理内存的地址
&size, //指向读取内存块大小的指针
ViewShare, //子进程的可继承性设定
0, //分配类型
ViewUnmap); //保护类型

RtlCopyMemory(gBaseBuffer,pBaseAddr,size);
ZwUnmapViewOfSection((HANDLE)0xffffffff,pBaseAddr);

return STATUS_SUCCESS;
}
但没有查到,各位高手有没有办法?


 


你确保信息放在这个地址吗?
如果没有你当然得不到。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-06-15 17:03
我现在是查了从0开始查,查到1M都没有找到,8000000是个什么地址?我算了一下,如果是16进制应该是128M呢,你的意思是实模式下的数据到保护模式后应该在128M以上吗?
terrychen
驱动小牛
驱动小牛
  • 注册日期2002-04-15
  • 最后登录2014-03-13
  • 粉丝0
  • 关注0
  • 积分174分
  • 威望68点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-06-15 17:18
一般来说2000下,物理内存0是从80000000h开始的,这里是windows核心内存的开始的地方.当然你也可以用MmMapIoSpace()去把物理内存map一下。直接去拿试试看吧
kangzh
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2012-08-06
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-06-21 10:21
哈哈,这个问题已经在上周得到圆满解决,pxe的数据已经全部得到,谢谢各位大虾的帮助
游客

返回顶部