阅读:1432回复:7
驱动中写文件,普通盘可以,usb盘却不响应,为什么?
主要代码在下面,如果是c,d 等本地硬盘,操作成功;但是当我指定我的usb盘h时,操作到这里就停止响应了;但也不是死机,重新开始干别的好像也行,就是好像explorer不行了,结束任务也不行,只有重启系统。
想请教大牛们,普通本地硬盘和usb盘有什么区别?为什么同样的代码两个结果? RtlInitUnicodeString(&uniName, L"\\DosDevices\\h:\\11.txt"); InitializeObjectAttributes(&objAttr, &uniName, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL); if(KeGetCurrentIrql() != PASSIVE_LEVEL) return STATUS_INVALID_DEVICE_STATE; ntstatus = IoCreateFileSpecifyDeviceObjectHint(&handle, GENERIC_WRITE|SYNCHRONIZE|GENERIC_READ, &objAttr, &ioStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT | FILE_NO_INTERMEDIATE_BUFFERING, NULL, 0, CreateFileTypeNone, NULL, IO_IGNORE_SHARE_ACCESS_CHECK, DeviceObject ); if(NT_SUCCESS(ntstatus)) { ntstatus = ZwWriteFile(handle, NULL, NULL, NULL, &ioStatusBlock, TempBuffer, 100, NULL, NULL); ZwClose(handle); ExFreePool(TempBuffer); } |
|
沙发#
发布于:2007-10-14 21:33
|
|
板凳#
发布于:2007-10-15 09:54
接着求救,大牛们帮忙指点指点,说说思路也可以阿,一个人搞真是很困难啊!
|
|
地板#
发布于:2007-10-23 21:26
Microsoft公布IoCreateFileSpecifyDeviceObjectHint的BUG
IoCreateFileSpecifyDeviceObjectHint所传入的DeviceObject不能是网络设备等对象, 否则返回STATUS_INVALID_PARAMETER(0xC000000DL)错误码 请见: http://support.microsoft.com/kb/322726/zh-cn 所以你的行不通.QQ:118118577 |
|
地下室#
发布于:2007-10-23 21:28
IoCreateFileSpecifyDeviceObjectHint function that is documented in the Windows XP Installable File System Kit (IFS Kit), the DeviceObject parameter cannot be a device object of a network file system. If this is the case, the function returns STATUS_INVALID_PARAMETER instead of STATUS_SUCCESS.
你自己看看吧! |
|
5楼#
发布于:2007-10-24 10:01
感谢回复
不过usb盘不是网络设备对象吧? |
|
6楼#
发布于:2007-10-24 10:02
应该是我程序其它地方写得有问题,单独往usb写没问题的!
|
|
禁止发言
|
7楼#
发布于:2007-10-24 10:20
用户被禁言,该主题自动屏蔽! |