busi2002
驱动牛犊
驱动牛犊
  • 注册日期2002-11-17
  • 最后登录2003-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1287回复:5

关于deviceioconctrol和irp的几个问题!!

楼主#
更多 发布于:2002-12-08 22:52
BOOL DeviceIoControl(
  HANDLE hDevice,              // handle to device
  DWORD dwIoControlCode,       // operation
  LPVOID lpInBuffer,           // input data buffer
  DWORD nInBufferSize,         // size of input data buffer
  LPVOID lpOutBuffer,          // output data buffer
  DWORD nOutBufferSize,        // size of output data buffer
  LPDWORD lpBytesReturned,     // byte count
  LPOVERLAPPED lpOverlapped    // overlapped information
);

LPVOID lpInBuffer, LPVOID lpOutBuffer,nInBufferSize,nOutBufferSize, 和IRP中的AssociatedIrp.SystemBuffer,MdlAddress,UserBuffer,还有DeviceIoControl结构中的Type3InputBuffer,OutputBufferLength,InputBufferlength       有什么样的对应关系????????
没有头绪了,希望哪个大侠能详细的给讲课,给我点时间,多谢了!!!!!        
valey
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2003-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-11 21:23
那是不是DWORD dwIoControlCode对应于IoGetCurrentIrpStackLocation(Irp)->parameters.DeviceIoControl.IoControlCode?
不知我得理解对否?
yellowdog
驱动牛犊
驱动牛犊
  • 注册日期2002-10-11
  • 最后登录2010-01-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-10 20:10
BOOL DeviceIoControl(
  HANDLE hDevice,              // handle to device
  DWORD dwIoControlCode,       // operation
  LPVOID lpInBuffer,           // input data buffer
  DWORD nInBufferSize,         // size of input data buffer
  LPVOID lpOutBuffer,          // output data buffer
  DWORD nOutBufferSize,        // size of output data buffer
  LPDWORD lpBytesReturned,     // byte count
  LPOVERLAPPED lpOverlapped    // overlapped information
);

LPVOID lpInBuffer, LPVOID lpOutBuffer,nInBufferSize,nOutBufferSize, 和IRP中的AssociatedIrp.SystemBuffer,MdlAddress,UserBuffer,还有DeviceIoControl结构中的Type3InputBuffer,OutputBufferLength,InputBufferlength       有什么样的对应关系????????
没有头绪了,希望哪个大侠能详细的给讲课,给我点时间,多谢了!!!!!        
 

在BUFFERED方式下,lpInBuffer和AssociatedIrp.SystemBuffer对应,在DIRECT方式下,和MdlAddress对应
mxd
mxd
驱动牛犊
驱动牛犊
  • 注册日期2002-03-21
  • 最后登录2003-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-10 16:02
BOOL DeviceIoControl(
  HANDLE hDevice,              // handle to device
  DWORD dwIoControlCode,       // operation
  LPVOID lpInBuffer,           // input data buffer
  DWORD nInBufferSize,         // size of input data buffer
  LPVOID lpOutBuffer,          // output data buffer
  DWORD nOutBufferSize,        // size of output data buffer
  LPDWORD lpBytesReturned,     // byte count
  LPOVERLAPPED lpOverlapped    // overlapped information
);

LPVOID lpInBuffer, LPVOID lpOutBuffer,nInBufferSize,nOutBufferSize, 和IRP中的AssociatedIrp.SystemBuffer,MdlAddress,UserBuffer,还有DeviceIoControl结构中Type3InputBuffer,OutputBufferLength,InputBufferlength       有什么样的对应关系????????
没有头绪了,希望哪个大侠能详细的给讲课,给我点时间,多谢了!!!!!        
 


这是个Win32函数,主要是实现ring3和ring0的通讯的,按你的顺序:输入数据的地址,大小,接下来的俩个设为NULL和0(在应用程序中调用时)。具体的你可以参考NTDDK帮助,那里解析的很清楚。
给分不?加分!
因为爱好而做,因为生活而工作。 互相帮助,共同发展
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-12-10 10:46
nInBufferSize  <--->  InputBufferlength
nOutBufferSize <--->  OutputBufferLength
易水
danielxu22
驱动中牛
驱动中牛
  • 注册日期2002-11-22
  • 最后登录2014-03-24
  • 粉丝0
  • 关注1
  • 积分2分
  • 威望18点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-10 10:29
我也来听
今天我发现我家的金鱼淹死了,:(
游客

返回顶部