关于createfile的问题

来源:百度知道 编辑:UC知道 时间:2024/06/29 03:04:03
public readdriver(string driverName)
{
Load(driverName);
}
public void Load(string driverName)
{
if (driverName == null && driverName.Length == 0)
{
throw new ArgumentNullException("driverName");
}

handleValue = CreateFile("\\\\.\\"+driverName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_READ,IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
if (handleValue.IsInvalid)
{
Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
}
}
请大家看一下,问什么在读取光驱时很正常,在读取硬盘时就不成功呢?
按你这么说,那光盘也不应该读取出来,这是api编程,还有,createfile也可以打开文件的好不

感觉你的CreateFile里面的函数参数有问题,
1、FILE_SHARE_READ 你重复了两次

2、改一下这个试试:handleValue = CreateFile("\\\\.\\"+driverName, FILE_ALL_ACCESS, FILE_SHARE_READ|FILE_SHARE_WRITE,IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
3、不行,再试试:
handleValue = CreateFile("\\\\.\\"+driverName, FILE_ALL_ACCESS, FILE_SHARE_READ|FILE_SHARE_WRITE,IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero);