liyan
驱动牛犊
驱动牛犊
  • 注册日期2001-08-20
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3004回复:17

Creatfile的问题,急救!

楼主#
更多 发布于:2001-09-10 11:32
各位大侠帮帮忙,为什么我用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不能返回正确值???

最新喜欢:

jmzz003jmzz00...
chuxuezhe
leerom
驱动小牛
驱动小牛
  • 注册日期2001-06-08
  • 最后登录2010-08-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-10 11:54
你这个调用打开的是文件“DMASAMPLE.VXD”,而不是设备。
leerom
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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]
liyan
驱动牛犊
驱动牛犊
  • 注册日期2001-08-20
  • 最后登录2002-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-09-10 15:07
多谢blue的指点,可是不好意思,我一直不知怎么给分,能否告我一声。另外,我用你的,OPEN_EXISTING参数,返回值依然是0xffffffff。我很困惑。
chuxuezhe
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-09-10 16:21
你检查一下硬件是否安装好?
你的情况我也不清楚,故也帮不上太大忙,你可以这样:
hDevice=CreateFile(...);
if(hDevice==INVALID_HANDLE_VALUE)
{
    wResult=GetLastError();
}
然后到MSDN中查这个错误代码是什么。
你的第一个贴子下面有一行图标,"资料',"编辑"..."给分","添分"点击给分即可,但现在我也没看到这个图标.
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-09-13 20:13
你要看看你驱动程序中的与CreateFile相对应的那个函数返回的值是什么,他不成功的话CreateFile返回的肯定是0xffffffff.还有应该调用getlasterror()来看看什么错误
请原谅我的无知与直率
lillianzou
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-09-16 19:44
只有发表话题者才能看到自己发表的话题下面有"给分","添分"的图标,要不然别人也能去给分了。


--------------------------------------------------------------------------------
Lillian
Linsuyi
驱动牛犊
驱动牛犊
  • 注册日期2001-05-26
  • 最后登录2003-04-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-09-21 20:48
liyan,如果您能肯定你的VXD中文件的节都有正确的属性的话,那可能是你的系统中已经有一个和你的VXD的设备ID一样的驱动程序(我在使用SoftICE时碰巧才发现),这是我曾经遇到过的两个情况,不知你是不是也是类似情况。
箫林(Lsy)
Buddha
驱动老牛
驱动老牛
  • 注册日期2001-04-29
  • 最后登录2013-05-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-09-27 10:54
静态加载的vxd:const PCHAR DynVxDName = "\\\\.\\PCICFG.VXD";

动态加载的vxd:const PCHAR StaticVxDName = "\\\\.\\PCICFG";
<table style="filter: glow(color=sky blue, strength=10)"> <font color=white> 猫生病了, 老鼠大声朗诵诗集, 并修剪盆花. 猫生病了, 老鼠慢慢刷牙洗脸, 并打扫房间. 猫生病了, 老鼠倚在窗边欣赏夜色, 并对流星许愿. 猫生病了, 老鼠也病了, 它说:"我还是习惯那种时时紧张, 处处小心, 夜夜逃亡的生活." 午夜, 我听到老鼠在叹息, 且不再读诗了. </font></table>
zwwzm
驱动牛犊
驱动牛犊
  • 注册日期2001-06-25
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-09-28 09:23
  去掉那个CRATE_NEW,换成0,还有blue说的是异步调用的问题,
对您可造成冲突.
zwwzm 人需要冒险!
vcshcn
驱动牛犊
驱动牛犊
  • 注册日期2001-09-23
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2001-10-21 02:21
我也不太清楚.不过我看了一本书,大概叫vxd权威指南,就是用你这样的代码打开的,我的vxd也打不开,我都烦了.
vcshcn
yww
yww
驱动牛犊
驱动牛犊
  • 注册日期2001-05-07
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分322分
  • 威望34点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-10-22 00:18
把你的VXD拷贝到c:\windows\system
harold
驱动牛犊
驱动牛犊
  • 注册日期2001-08-26
  • 最后登录2002-10-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-10-24 19:25
我也碰到过同样的问题,我做的那个VXD,一旦把声卡(是ISA的声卡)拔掉createfile的返回值就可以,把声卡插上就不行.我也不知道是不是冲突造成的.按理说应该和硬件无关才对.
z_j_cd
驱动中牛
驱动中牛
  • 注册日期2001-09-13
  • 最后登录2012-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2001-10-25 10:37
没碰到过,学习一下
harold
驱动牛犊
驱动牛犊
  • 注册日期2001-08-26
  • 最后登录2002-10-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2001-10-29 20:37
可能是ID冲突,但不知道ID应该怎样设比较好
hcbcj
驱动牛犊
驱动牛犊
  • 注册日期2001-10-23
  • 最后登录2002-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2001-10-31 19:20
ID设置为UNDEFINED_ID可以吗?
baobaoj
驱动牛犊
驱动牛犊
  • 注册日期2001-11-07
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2001-11-11 13:18
DEVICE_ID是什么都无所谓.
在.mak文件里面定义
DYNIMIC=1
重新make就行了
ljian
驱动牛犊
驱动牛犊
  • 注册日期2001-07-02
  • 最后登录2002-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2001-11-23 19:08
老兄其实很简单,看你的代码应该是\\\\\\\\.\\\\*.vxd,看清楚六个斜杠
游客

返回顶部