我的程序在与驱动程序通迅是通过检查一个内存块的数据是否改变来进行的(在我的程序中必须采用这种方式,否则会有问题)。但在程序中检查内存块状态的线程不时会遇到因FS被修改而导致的访问违例。请问这是为什么?另:在WINDOWS中FS主要用来做什么用?
回复(18) 2002-10-28 15:53 来自版块 - 内核编程
表情
zuowei999应该也是softice之类的东东(2002-11-01 09:01)
Ares我是指能够在段寄存器被改变时发出通知 [quote] 有没有什么机制可以监视段寄存器的值? 用softice看 [/quote](2002-11-01 08:45)
creek 有没有什么机制可以监视段寄存器的值? 用softice看(2002-10-31 22:02)
Aresto lrx666: 我说得很清楚了啊。 我直接修改了8254并绕过系统接管IRQ0 to Tom_lyd: 你别说了一半就不管了啊!!! (2002-10-31 09:03)
lrx666呵呵呵,别这么急着要分嘛,我说过我这样做是没办法的! 因为必须实现50K以上的频率,所以我直接修改了8254并绕过系统接管IRQ0,所以不能使用事件来通知(我苦啊)。因此只能用这种方法来通迅。 出错的情况是FS被不明的代码从正确的38H改为0,这样一来就会访问违例:( ...(2002-10-30 14:34)
Ares用malloc分配会有什么问题咧?(2002-10-30 11:46)
Tom_lydto Tom_lyd: 我在应用层用malloc分配然后将指针传到驱动程序中再用ioallocatemdl()/mmbuildmdlfornonpagedpages()/mmmaplockedpages()锁定代驱动程序使用。 to Koms Bomb: 有没有什么...(2002-10-30 09:06)
Ares操!是我在中断处理程序中没有保存FS的值,难道有哪个API会修改FS吗?(2002-10-30 09:01)
Aresto Tom_lyd: 我在应用层用malloc分配然后将指针传到驱动程序中再用ioallocatemdl()/mmbuildmdlfornonpagedpages()/mmmaplockedpages()锁定代驱动程序使用。 to Koms Bomb: 有没有什么...(2002-10-29 10:22)
Tom_lydto Tom_lyd: 就是在应用层中分配一块内存然后在驱动中锁定啦。 to Koms Bomb: 好办法!我试试先 那么你是用什么函数分配的内存? 我建议你在驱动层分配内存,然后将内存映射给应用程序,这样,一方面可以保证绝不会造成Page Fault...(2002-10-29 08:59)

返回顶部