yetty
驱动牛犊
驱动牛犊
  • 注册日期2004-01-10
  • 最后登录2009-07-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1556回复:5

用DeviceIoControl这样通信为什么会蓝屏

楼主#
更多 发布于:2004-06-07 18:08
传输的数据结构
typedef struct DataTransfer
{
HANDLE hCurrentProcess;
PROC* DatapfnNew;
PROC* Datappfn;
int isize;
};
应用层
DataTransfer* datatransferin;
DataTransfer* datatransferout;
int iLengthIn=sizeof(DataTransfer);
int iLengthOut=sizeof(DataTransfer);
datatransferin=new DataTransfer;
datatransferout=new DataTransfer;
        datatransferin->DatapfnNew=&pfnNew;
datatransferin->Datappfn=ppfn;
datatransferin->isize=sizeof((*ppfn));
datatransferin->hCurrentProcess=GetCurrentProcess();
HANDLE g_SysHandle = ::CreateFile("\\\\.\\Apihook.vxd"
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_DELETE_ON_CLOSE,//FILE_ATTRIBUTE_NORMAL,
NULL
);
BOOL bRc = ::DeviceIoControl(g_SysHandle,
HOOK_DATA_PROCESS,
&datatransferin,
iLengthIn,
&datatransferout,
iLengthOut,
NULL,
NULL
);
delete datatransferin;
delete datatransferout;
CloseHandle(g_SysHandle);
驱动层
DataTransfer* datatransferin;
DataTransfer* datatransferout;
datatransferin=new DataTransfer;
datatransferout=new DataTransfer;
memcpy(&datatransferin,(DataTransfer*)pDIOCParams->dioc_InBuf,sizeof(DataTransfer));
datatransferout->isize=datatransferin->isize;
int size=pDIOCParams->dioc_cbOutBuf;
memcpy((DataTransfer*)pDIOCParams->dioc_OutBuf,&datatransferout,sizeof(DataTransfer));
delete datatransferin;
delete datatransferout;
yetty_forever
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-08 00:52
看看
http://www.driverdevelop.com/forum/html_69860.html?1086626849

另外
BOOL bRc = :eviceIoControl(g_SysHandle,
HOOK_DATA_PROCESS,
&datatransferin,
iLengthIn,
&datatransferout,
iLengthOut,
NULL,
NULL
);
修改为
BOOL bRc = :eviceIoControl(g_SysHandle,
HOOK_DATA_PROCESS,
datatransferin,
iLengthIn,
datatransferout,
iLengthOut,
NULL,
NULL
);
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
yyhabc
驱动小牛
驱动小牛
  • 注册日期2003-01-06
  • 最后登录2013-03-18
  • 粉丝0
  • 关注0
  • 积分327分
  • 威望47点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-09 10:06
如果是你自己写的驱动,仔细检查驱动代码,没什么说的,你的驱动程序有问题。如果不是你开发的,下载新启动。
yetty
驱动牛犊
驱动牛犊
  • 注册日期2004-01-10
  • 最后登录2009-07-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-09 10:10
我按照前面的例子重新改了一下,蓝屏问题解决了。


[编辑 -  6/9/04 by  yetty]
yetty_forever
houjun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-21
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-17 20:30
我想问一下,当应用程序调用DeviceIoControl函数成功后,驱动中应该实现什么函数来响应它?
myswin
驱动小牛
驱动小牛
  • 注册日期2003-10-13
  • 最后登录2005-11-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-18 09:30
发送特定 IRP,驱动响应~~
=========== D =========== R =========== I =========== V =========== E ---------抵制日货-------
游客

返回顶部