阅读:3004回复:17
Creatfile的问题,急救!
各位大侠帮帮忙,为什么我用hDevice=Creatfile("\\\\.\\DMASAMPLE.VXD",0,0,0,CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE,NULL),hDevice的值总是0xffffffff。我的.exe和.vxd在一个目录下,且我将DMASAMPLE.VXD拷到了C:\WINDOWS\SYSTEM下,可为什么Creatfile不能返回正确值???
|
|
最新喜欢:jmzz00...
|
沙发#
发布于:2001-09-10 11:54
你这个调用打开的是文件“DMASAMPLE.VXD”,而不是设备。
|
|
|
板凳#
发布于:2001-09-10 12:39
你的作法是正确的,是在打开设备,win98下就是这样打开设备,但可能参数还要调整。
具MSDN文档讲:对设备操作时dwCreationDisposition parameter 必须是OPEN_EXISTING. 我给你一个我的例子,我已能正常使用: hDevice = ::CreateFile("\\\\.\\*.VXD", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE | FILE_FLAG_OVERLAPPED, 0); 因为有FILE_FLAG_OVERLAPPED,需要定义一个OVERLAPPED a变量,并创建事件a..hEvent,此变量在DeviceIoControl中作为最后一个参数。这个参数需视你的驱动而言。 :)记得给分喔! [blue 编辑于 2001-09-10 12:54] |
|
地板#
发布于:2001-09-10 15:07
多谢blue的指点,可是不好意思,我一直不知怎么给分,能否告我一声。另外,我用你的,OPEN_EXISTING参数,返回值依然是0xffffffff。我很困惑。
|
|
|
地下室#
发布于:2001-09-10 16:21
你检查一下硬件是否安装好?
你的情况我也不清楚,故也帮不上太大忙,你可以这样: hDevice=CreateFile(...); if(hDevice==INVALID_HANDLE_VALUE) { wResult=GetLastError(); } 然后到MSDN中查这个错误代码是什么。 你的第一个贴子下面有一行图标,"资料',"编辑"..."给分","添分"点击给分即可,但现在我也没看到这个图标. |
|
5楼#
发布于:2001-09-13 20:13
你要看看你驱动程序中的与CreateFile相对应的那个函数返回的值是什么,他不成功的话CreateFile返回的肯定是0xffffffff.还有应该调用getlasterror()来看看什么错误
|
|
|
6楼#
发布于:2001-09-16 19:44
只有发表话题者才能看到自己发表的话题下面有"给分","添分"的图标,要不然别人也能去给分了。
-------------------------------------------------------------------------------- |
|
|
7楼#
发布于:2001-09-21 20:48
liyan,如果您能肯定你的VXD中文件的节都有正确的属性的话,那可能是你的系统中已经有一个和你的VXD的设备ID一样的驱动程序(我在使用SoftICE时碰巧才发现),这是我曾经遇到过的两个情况,不知你是不是也是类似情况。
|
|
|
8楼#
发布于:2001-09-27 10:54
静态加载的vxd:const PCHAR DynVxDName = "\\\\.\\PCICFG.VXD";
动态加载的vxd:const PCHAR StaticVxDName = "\\\\.\\PCICFG"; |
|
|
9楼#
发布于:2001-09-28 09:23
去掉那个CRATE_NEW,换成0,还有blue说的是异步调用的问题,
对您可造成冲突. |
|
|
10楼#
发布于:2001-10-21 02:21
我也不太清楚.不过我看了一本书,大概叫vxd权威指南,就是用你这样的代码打开的,我的vxd也打不开,我都烦了.
|
|
|
11楼#
发布于:2001-10-22 00:18
把你的VXD拷贝到c:\windows\system
|
|
12楼#
发布于:2001-10-24 19:25
我也碰到过同样的问题,我做的那个VXD,一旦把声卡(是ISA的声卡)拔掉createfile的返回值就可以,把声卡插上就不行.我也不知道是不是冲突造成的.按理说应该和硬件无关才对.
|
|
13楼#
发布于:2001-10-25 10:37
没碰到过,学习一下
|
|
14楼#
发布于:2001-10-29 20:37
可能是ID冲突,但不知道ID应该怎样设比较好
|
|
15楼#
发布于:2001-10-31 19:20
ID设置为UNDEFINED_ID可以吗?
|
|
16楼#
发布于:2001-11-11 13:18
DEVICE_ID是什么都无所谓.
在.mak文件里面定义 DYNIMIC=1 重新make就行了 |
|
17楼#
发布于:2001-11-23 19:08
老兄其实很简单,看你的代码应该是\\\\\\\\.\\\\*.vxd,看清楚六个斜杠
|
|