关于DeviceIOControl这个API函数在DELPHI中的使用问题,请用过的人看一下!!(100分)

  • 主题发起人 主题发起人 delphi-i love
  • 开始时间 开始时间
D

delphi-i love

Unregistered / Unconfirmed
GUEST, unregistred user!
用DELPHI调用一VXD文件,编译时出错,情况如下,盼答,谢谢!<br>&nbsp; DeviceIOControl(handle, SETTIME, str, strlen(str) + 1, nil, 0,<br>&nbsp; &nbsp; &nbsp; 0,(光标停在此处) nil);<br><br>错误提示:Types of actual and formal var parameters must be identical<br><br>DeviceIOControl这个API函数在DELPHI中的应该如何使用?
 
Buffer : Array[0..BufferSize-1] of Byte;<br>BufferSize : DWORD;<br>cbBytesReturned: DWORD;<br>DeviceIoControl( handle, SETTIME, @Buffer, BufferSize, @Buffer, BufferSize, cbBytesReturned, nil)
 
谢谢dongberlin的参与[:)]<br>,[:(]<br>你的代码不行啊?我试了,类型定义部就<br>出错的
 
DeviceIoControl(hDevice:THandle; dwIoControlCode:DWORD; lpInBuffer:Byte; nInBufferSize:DWORD; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lpOutBuffer:Byte; nOutBufferSize:DWORD; lpBytesReturned:DWORD; lpOverlapped:PChar;)<br><br>hDevice 是从CreateFile返回的VxD句柄。<br>dwIoControlCode 是用来制定VxD将要进行的操作。<br>lpInBuffer 是包含了VxD完成dwIoControlCode所制定操作的数据的缓冲区地址。<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;如果这个操作不需要数据,可以传为NIL。<br>nInBufferSize 是由lpInBuffer所指向的缓冲区的地址的大小(byte)。<br>lpOutBuffer 是VxD程序在操作成功之后要将输出数据输出到的缓冲区。<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;如果这个操作没有任何返回值,这个值为NIL。<br>nOutBufferSize 是lpOutBuffer所指向的缓冲区的大小(byte)。<br>lpBytesReturned 是一个dword型变量的地址。这个变量用来接收VxD在lpOutBuffer中写入数据的大小。<br>lpOverlapped 是一个指针。如果你要一直等到操作完成,这个值应该赋为NIL。<br><br>例如:<br>var<br>&nbsp; &nbsp;A : THandle;<br>&nbsp; &nbsp;B : Byte;<br>&nbsp; &nbsp;C : DWORD;<br>DeviceIOControl (A, VWIN32_DIOC_DOS_INT13, @B, SizeOf (B), @B, SizeOf (B), C, nil) ;
 
YB_unique:谢谢啦,我先试试,没问题就发分
 
这是怎么会回事,我定义变量<br>c:DWORD;<br>后,将该语句该为如下即可通过,难道 Dword 类型不能取0值吗?<br><br>DeviceIOControl(handle, SETTIME, str, strlen(str) + 1, nil, 0,<br>&nbsp; &nbsp; &nbsp; C, nil);<br>
 
注意:lpBytesReturned 是一个dword型变量的地址。这个变量用来接收VxD在lpOutBuffer中写入数据的大小。<br>一个DWORD变量如果成功则返回句柄地址,否则返回NIL。
 
多人接受答案了。
 
后退
顶部