阅读:2351回复:9
用WINOBJ看到符号连接名,但用CreateFile打开失败?
用WINOBJ看到符号连接名为hellWdm,但用CreateFile打开失败
CreateFile(\"\\\\\\\\.\\\\helloWdm\",GENERIC_ALL,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 返回值为-1,是什么原因? |
|
沙发#
发布于:2003-10-10 22:43
是不是应该这样:
hDevice = CreateFile( TEXT(\"\\\\\\\\.\\\\%S\"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (m_hDevice == INVALID_HANDLE_VALUE) |
|
板凳#
发布于:2003-10-11 13:16
是WDM驱动吗?
有没有 fdo->Flags &= ~DO_DEVICE_INITIALIZING; |
|
地板#
发布于:2003-10-11 14:13
用WINOBJ看到符号连接名为hellWdm,但用CreateFile打开失败 使用GENERIC_READ呢? 最好跟踪一下,看问题出在什么地方 |
|
|
地下室#
发布于:2003-10-13 08:27
是WDM驱动,用GENERIC_READ也不行,我在设备管理器中看到设备工作正常,WINOBJ也能看到符号连接名,但CreateFile返回-1,用GetLastError()函数看到返回值为1(Incorrect function),不明白什么原因,请教?
对了,是不是一定根IRP_MJ_CREATE 派遣例程才能用CreateFile打开?我没写这个派遣例程。 [编辑 - 10/13/03 by chudd] [编辑 - 10/13/03 by chudd] [编辑 - 10/13/03 by chudd] |
|
5楼#
发布于:2003-10-13 10:23
废话,这都返回失败,当然出错拉.
|
|
|
6楼#
发布于:2003-10-13 11:53
没有 IRP_MJ_CREATE 派遣例程当然不能用 CreateFile打开。
|
|
|
7楼#
发布于:2003-10-13 15:55
谢谢,CreateFile成功了!
IRP_MJ_WRITE的派遣例程为DispWrite,在测试程序中使用WriteFile向这个设备中写数据,执行失败。用softIce设断点bpx dispWrite,当测试程序执行WriteFile时却没有在驱动程序的DispWrite例程内中断,用同样的方法在DispCreate设断点,调试程序执行CreateFile能成功中断。不知出了什么错误? |
|
论坛版主
![]() |
8楼#
发布于:2003-10-13 16:02
IRP返回的状态是什么?先分清进没进DISPWRITE
|
|
9楼#
发布于:2003-10-13 16:05
对不起,是我搞错了,CreateFile的属性设成了只读,谢谢各位!
[编辑 - 10/13/03 by chudd] |
|