VXD高手请到此一游
小弟曾用VTOOLSD FOR WIN9X开发了一个处理硬件中断并从硬件端口读取数据的东东,由于实际应用中,中断间隔为10毫秒,数据量巨大,处理该数据所占用的内存资源也较多,且需要和RING3的应用程序共享那些内存区域,为简便起见,采用在VXD内分配内存,然后通过DeviceIoControl调用将这些内存指针传递给应用程序。我使用的是VLockedPageObject类为我的应用分配内存,虽然所分配的内存数量巨大,但通过我的实际使用看来,还是可以办得到的。在32位模式下,系统的内存空间为4G,从理论上而言,分配我所需要的这些内存毫无困难,但由于我所采用的是从系统全局堆中分配内存的方式(好象是这样,还望各位大侠不要见笑),且我的VXD为动态加载方式,这就使我产生了一些忧虑:
1、在系统资源充沛的情况下,是否我每一次加载和卸载驱动程序,系统都能准确无误地为我分配那些内存?每一次加载和卸载驱动程序时系统的工作流程又是怎样的?
2、要是系统无法提供我所要求的内存量,在加载驱动程序时,它会给出加载失败的信息呢,还是照分配我的要求分配,但分配的量却达不到我的要求,以致在访问这些内存时失败?如果是后一种情况,我该如何检测我的内存指针是否有效?
3、用VTOOLSD FOR WIN9X开发比DDK方便快捷,但不知为什么它不支持浮点运算,只要在表达式中有浮点数,链接则无法通过,那位大侠知道是什么原因,亦或是它本来就不支持浮点运算?
我的E—MAIL是liyt@ihw.com.cn,希望能得到各位高手的点拨,修得上乘绝技,也希望与众多的武林同道切磋技艺。