sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3197回复:26

在WDM驱动中调用PnP Bios 提供的函数接口(DMI 操作)的方法讨论

楼主#
更多 发布于:2005-05-18 16:45
背景:现在已知在某系统内存处会存储以下信息,其signature为 $PnP,从以下可得到对应函数的16 bit的 real /protected mode seg & offset的值。现在我已经能够在内存中找到$PnP,和函数地址的seg & offset值。

问题:
1)现在我想在WDM 驱动中调用该函数,也就是说我如何将16 bit的seg & offset 值转化为wdm 中32位的函数地址
2)大家还有什么好的方法,在WDM中搜索内存空间指定的内容?我是通过驱动将指定的物理地址映射到用户内存空间,让后再此空间查找

实现写 DMI 操作的 C 代码我已经实现,

Field               Offset   Length    Value

Signature          00h       4 BYTES   $PnP (ASCII)

Version            04h       BYTE      10h

Length             05h       BYTE      21h

Controlfield       06h       WORD     Varies

Checksum           08h       BYTE     Varies

Eventaddress       09h       DWORD    Varies

Real Mode 16-bit offset to entry point   0Dh   WORD   Varies

Real Mode 16-bit code segment address    0Fh   WORD   Varies

16BitProtectedModeoffset to entry point  11h   WORD   Varies

16BitProtectedModecode segment base addr 13h   DWORD  Varies
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-25 17:28
啊,这个啊,上面不是说了,我不知道吗!!!
你说的什么连到ad[16],不可能啊。。。
顶多和中断有联系的,是不是设备号哦。
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-25 14:59
Slot 1 AD____25___ INTAPIRQ_B___, INTBPIRQ__C___, INTCPIRQ__D___, INTDPIRQ__A___

1)INTAPIRQ_B___, INTBPIRQ__C___, INTCPIRQ__D___, INTDPIRQ__A___
  这个我明白,是设备的INTA --D 连到南桥PIRQ A--H上的,从硬件的电路图能看得出来。

2)我不明白的就是前面的: Slot 1 AD____25___,我就是不知道该25 是怎么得到的?
  A:是硬件直接连线的?如果是,怎么能看得出,也就是说给你硬件的电路图,你怎么在电路图上判断该值是25或其它值
  B:是BIOS设置的吗?如果是,BIOS根据什么规范来设在该地址?

麻烦你再告诉我一下
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-25 14:13
你的意思:是指那个AD对应着PCI插槽上的AD[31::00]?

1)这个地址是由硬件直接连线得到的?还是由BIOS设定的?
如果是BIOS设定的,我可通过什么知道该值?

2)那下面这个是不是也是同样的意思:
AGP Slot___ on bord ____, AD____16_____, INTA PIRQ___A___
就对应着AGP 插槽上的AD

不对啊,pirqA-H 在南桥上分别有对应的pin啊。。。没有明白你中间那个ad16是什么东西
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-25 13:57
发邮件给我啊!最近策划走人
sharpor@163.com
 



你想不想来我们公司,我们老大老早就叫我找找看,有没厉害的,如果你想来的话,发 mail 过来
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-25 12:28
你的意思:是指那个AD对应着PCI插槽上的AD[31::00]?

1)这个地址是由硬件直接连线得到的?还是由BIOS设定的?
如果是BIOS设定的,我可通过什么知道该值?

2)那下面这个是不是也是同样的意思:
AGP Slot___ on bord ____, AD____16_____, INTA PIRQ___A___
就对应着AGP 插槽上的AD
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-25 12:08
AD[31::00] Address and Data are multiplexed on the same PCI pins.
应该说的是这个。。。
你可以回你的同事说他是白痴,才接触bios又不可能什么都知道
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-25 12:05
你这个是讲pci设备对应的中断。那个ad 25 是地址线啊
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-25 10:25
我在我们的文档上看到,下面的东东,

Slot 1  AD____25___ INTAPIRQ_B___, INTBPIRQ__C___, INTCPIRQ__D___, INTDPIRQ__A___


请问 Slot 1  AD____25___  这个AD是什么意思?我问了一个同事,听说是地址,看看PCI系统结构的书就知道了,可我现在还不知道?
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-05-25 08:43
发邮件给我啊!最近策划走人
sharpor@163.com
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-24 17:28
是啊,最近的一个项目是EFI的。
我们也是OEM的。上海很缺BIOS的人,我们部门也是的,
有没上qq,啊,我在qq上,想跟你交流交流
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-24 15:54
命苦,oem nb
命苦,职位太低,参加不了培训。
你是在写efi的东西哦。那应该是phoenix的吧
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-05-24 15:45
对啊,马上要上efi了。你要参加吗?
――――――――――――――――
肯定去啊,也是我们老大叫我们去的,可以上三天的课


不知道上海有哪些公司在做bios,
我只知道phoenix有个分部在上海。
我在深圳。你那边行情如何
――――――――――――――――
对了,phoenxi是在上海是有分部,
在上海还很需要做BIOS的,不过大部分都是
一些台湾的代工PC,notebook,server工厂招人。
你是在做主板BIOS,还在哪家专门做BIOS的公司

[编辑 -  5/24/05 by  sunvan]
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-05-24 15:02
不知道上海有哪些公司在做bios,
我只知道phoenix有个分部在上海。
我在深圳。你那边行情如何
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-05-24 14:57
对啊,马上要上efi了。你要参加吗?
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-05-24 14:13
顺便说说,
Intel? Platform Innovation Framework for EFI (“the Framework”) Base Training will be held in Shanghai
at 8:30 AM on June 8(.9.10) on the 2F of ShanghaiMart.
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-05-24 14:08
不会吧。如果正常的话,我是上不了qq的,我用了一个代理软件(服务器在国外)上的(通常都是下午下班之后才上的)。
你在哪里啊?
偶在上海
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-05-24 14:04
我也不晓得,其实说不定我们在同一个公司上班,做bios的公司就那么几家。。。。。
我上不了qq,证明你和我不在同一家。哈哈
sharpor
驱动小牛
驱动小牛
  • 注册日期2005-04-04
  • 最后登录2007-05-10
  • 粉丝0
  • 关注0
  • 积分127分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-05-24 12:12
小弟工作一年多,只叫过别人大哥哈,不敢当呀。。。。。
我们的代码呢,别人写好的,也是从32位代码跳到16位来,中间设置了一系列的寄存器,我看起来头大,莫看懂。
不过被同事洗了脑壳,说16位的代码,那时侯跑应该没有问题,我郁闷老,不晓得他说得对不对。你可以按我上面哪个方法跑先,没有异常就可以了撒
sunvan
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2011-07-06
  • 粉丝0
  • 关注0
  • 积分-100分
  • 威望-9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-05-24 11:07
TO:sharpor

很受启发,谢谢

可我们这边的BIOS编译就用vc7和masm,asl,vc7不是32位的编译器吗,怎么编译生成的BIOS是16位的代码(其实我也不能确定该BIOS代码是不是16位的)?

因此我的问题是:用一个编译器,如何使编译生成的代码是16位和32位,大哥能否告知,或举个例子,不胜感激!!!
上一页
游客

返回顶部