阅读:1959回复:8
关于在驱动程序中使用全局变量
HI:
我从应用程序收到一串数据,我想在驱动的很多地方都用到,不知道能否用一个全局变量。 不知道有没有更好的办法! |
|
最新喜欢:![]() |
沙发#
发布于:2003-06-17 11:01
能用,但最好放在设备扩展中(DeviceObject->DeviceExtension)。
|
|
|
板凳#
发布于:2003-06-17 11:07
支持楼上的!
|
|
地板#
发布于:2003-06-17 11:18
swf2003:
谢谢你的回答!能否给我说的详细一点!我没有这样用过! |
|
地下室#
发布于:2003-06-17 12:22
在创建设备对象时,调用IoCreateDevice(
IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName OPTIONAL, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject ) 它有一个参数DeviceExtensionSize,由I/0管理器给设备对象申请一块非分页内存,大小为 DeviceExtensionSize, 在设备对象指针(DEVICE_OBJECT)中有一个指针域 PVOID DeviceExtension指向这块空间,你的驱动中可以在这快空间中保存一些信息。 希望对你有用! |
|
|
5楼#
发布于:2003-06-18 09:22
如果全局变量占用空间小,其实放在任何一个头文件里都可以的,:)
|
|
|
6楼#
发布于:2003-06-18 12:06
我还是建议放在设备扩展(DeviceExtension)里。如果放在头文件
里面,当碰到驱动复用的情况时很容易出问题。 |
|
7楼#
发布于:2003-06-18 15:52
我想问的是,如果用DRIVERSTUDIO的话,我申请的全局变量放在什么地方?DS里没有设备扩展结构。
我的问题也就是,我想申请一片非分页内存,里面存放一些驱动中常用到的信息,而且能使驱动里的例程能访问这片内存,在DS里该怎么做? |
|
|
8楼#
发布于:2003-06-20 20:42
全局变量占堆栈空间,太大了不太好的
|
|
|