|
我使用VXI-USB控制器和VISA的API指令函数(viSetBuf) 来预留大量内存空间,但当我调用viScanf or viRead 的API指令函数从我的设备读取数据时,电脑出现蓝屏。
为什么会这样?
这是由于NI VXI-USB控制器与NI-VXI驱动引起的。
VISA的API函数命令viSetBuf将为用户预留其指定的内存大小。当需要的内存大小超过了电脑允许的范围,默认状态下操作系统将分配4KB的内存空间。当用户调用viScanf或者viRead函数时,VXI驱动将分配同样大小的非分页内存(Nonpaged Memory)作为数据缓存。但是当VXI不能分配这个内存时,计算机将出现蓝屏,这是由于驱动不能正确处理错误造成的。
为了避免以上的问题,必须保证利用viSetBuf预留的内存空间小于计算机允许的非分页内存(Nonpaged memory)大小。在Windows操作系统下,通过Windows任务管理器(Windows Task Manager)的性能(Performance)选项卡查看到计算机可用的非分页内存(Nonpaged memory)大小。如下图所示
|