aKnightChen
驱动牛犊
驱动牛犊
  • 注册日期2003-05-13
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1222回复:3

ReadFile和DeviceIoControl在读取数据有什么区别?

楼主#
更多 发布于:2003-06-16 15:25
ReadFile可以从后台读取数据,
DeviceIoControl也可以从后台读取数据。
二者在读后台数据方面有什么区别?
附例子如下:
======================
if( !ReadFile( hWdm1, &Rvalue, 1, &TxdBytes, NULL))
======================
if( !DeviceIoControl( hWdm1, IOCTL_WDM1_GET_BUFFER_SIZE,
NULL, 0, // Input
&BufferSize, sizeof(ULONG), // Output
&BytesReturned, NULL))
======================
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-16 16:49
区别不大,ReadFile 对应于驱动程序中的 IRP_MJ_READ ,DeviceIoControl 对应于驱动中的 IRP_MJ_DEVICE_CONTROL。
你的认可是对我最大的鼓励!
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-16 16:59
当然在驱动内部,IRP_MJ_READ 与 IRP_MJ_DEVICE_CONTROL的分发例程中内存访问方式不同,IRP_MJ_READ 是由 PDEVICE_OBJECT -> Flags 决定,而IRP_MJ_DEVICE_CONTROL 由你的  IOCTL_WDM1_GET_BUFFER_SIZE 定义有关。
你的认可是对我最大的鼓励!
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-17 22:18
除了这些就没别的区别了?
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
游客

返回顶部