专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > PB

关于DeviceIoControl的调用解决方法

发布时间:2011-06-29 18:06:21 文章来源:www.iduyao.cn 采编人员:星星草
关于DeviceIoControl的调用
我要实现对U盘的某个特定的扇区进行读写。

FUNCTION Long DeviceIoControl(Long hDevice, Long dwIoControlCode, Blob lpInBuffer, Long nInBufferSize, REF DISK_GEOMETRY lpOutBuffer, Long nOutBufferSize, REF Long lpBytesReturned, Long lpOverlapped) LIBRARY "kernel32" 

FUNCTION Long CreateFile(String lpFileName, Long dwDesiredAccess, Long dwShareMode, Long lpSecurityAttributes, Long dwCreationDisposition, Long dwFlagsAndAttributes, Long hTemplateFile) LIBRARY "kernel32" ALIAS FOR "CreateFileA" 


CONSTANT Long FSCTL_LOCK_VOLUME = 589848 
CONSTANT Long GENERIC_WRITE = 1073741824

首先: createfile:
   ll_hDevice = CreateFile("\\.\PHYSICALDRIVE" + String(3), GENERIC_WRITE, 2 , 0, 4, 0, 0)

再下面 锁卷DeviceIoControl( ll_hDevice, FSCTL_LOCK_VOLUME, 0, 0, 0, 0, ll_BytesReturned,0) 保存程序时,
     报错: C0052: Bad argument for function: devieciocontrol。

大家帮忙看看什么问题呀, 或者有没有例程给我参考一下。





------解决方案--------------------
第3个参数是Blob lpInBuffer
第5个参数是REF DISK_GEOMETRY lpOutBuffer //这是一个结构体,你要先定义的,同时它是ref类型的,必须使用变量为参数,不能使用常量

这两个参数你都写错了类型
------解决方案--------------------
第5个参数是REF DISK_GEOMETRY lpOutBuffer
由于是ref的,所以调用时参数必须一致
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: