windows mbbile 5.0 下使用DeviceIoControl 出现NotSupportedException 错误

Ricekeg 2008-10-07 11:23:39
源码如下:
DeviceControlCode deviceCC= new DeviceControlCode(DeviceType.Disk,0x709,DeviceMethod.Buffered,DeviceAccess.Any);
DeviceControlCode是一个自定义的结构体

IntPtr hDevice = CreateFile("DSK1:", GENERIC_READ + GENERIC_WRITE, 0, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL + FILE_FLAG_OVERLAPPED,0);

CreateFile没有问题,编译也没有问题,运行到DeviceIoControl才会弹出NotSupportedException 错误

DeviceIoControl(hDevice, deviceCC.Code, null, 0, out sdInfo, 3000,ref bytesReturned, IntPtr.Zero)

[DllImport("CoreDll.dll")]
public static extern int DeviceIoControl(IntPtr hDevice, uint dwIoControlCode, byte[] lpInBuffer,
UInt32 nInBufferSize, out byte[] lpOutBuffer, Int32 nOutBufferSize, ref Int32 lpBytesReturned, IntPtr lpOverlapped);

不知道是不是参数有问题啊?如果有问题是哪里的问题呢?
...全文
76 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ricekeg 2008-10-09
  • 打赏
  • 举报
回复
终于我还是调成功了!我用的是
public static extern bool DeviceIoControl(
IntPtr hDevice, uint dwIoControlCode,
byte[] lpInBuffer, int nInBufferSize,
byte[] lpOutBuffer, int nOutBufferSize,
ref int lpBytesReturned,
IntPtr lpOverlapped);

参看MSDN中调用API时,对应的CLR参数类型转换
http://msdn.microsoft.com/zh-cn/library/aa686045.aspx
文斌 2008-10-08
  • 打赏
  • 举报
回复
设备不支持这个指令
Ricekeg 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caowenbin 的回复:]
设备不支持这个指令
[/Quote]

应该不是这个问题。我就是想访问SD卡获取设备号,我今天已经不会弹出不支持的错误了,我肯定是参数的问题。还有确切的DeviceIoControl的原型,因为我现在用的是public static extern bool DeviceIoControl(IntPtr hDevice, UInt32 dwIoControlCode,IntPtr lpInBuffer, Int32 nInBufferSize,IntPtr lpOutBuffer, Int32 nOutBufferSize,ref UInt32 lpBytesReturned,IntPtr lpOverlapped);

为什么这里DeviceIoControl的返回类型是bool型?参数类型也不一样

还有一个做comm通讯的调用DeviceIoControl使用的参数类型是自定义的结构体,我有点疑惑~~

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧