seny11
驱动牛犊
驱动牛犊
  • 注册日期2007-02-12
  • 最后登录2012-12-21
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2551回复:2

【求助】【求助】关于键盘过滤驱动中写入文件的问题

楼主#
更多 发布于:2011-04-15 08:28
能顺利获取到扫描码并转化成字符,
可是在工作线程中将字符写入文件时,打开却都是乱码,不知为何?
求教各位大侠!

//----------------------
首先:获取扫描码
buf = (PCHAR)Irp->AssociatedIrp.SystemBuffer;
ch1=(CHAR)buf[2];   //这里扫描码要转换为CHAR型
再通过一个表将扫描码转化成字符:
CHAR chn=ascii;

调用工作线程:
VOID ThreadFunc(..)
{
......
DbgPrint(("Get a char:%c\n",chn)); //在这里还能输出正常,获取转化后的字符成功
ZwWriteFile(                   //写入文件
 hfile,
 NULL,
 NULL,
 NULL,
&ioStatus,
 &chn,
 1,
 NULL,
 NULL);  //执行写入,打开都是乱码
.....
}

问题:
1.就算把CHAR改成UCHAR也一样,能获取转化后的字符,但在写入文件时都是乱码

后来我又把char转存到Ansi_String中:
CHAR *p=&chn;
 RtlInitAnsiString(&keys,p); //以P指针指向的chn字符(串)来初始化ansi string
 DbgPrint(("buffer is %Z\n",&keys));
DbgPrint(("buffer2 is %s\n",keys.Buffer));  //到这里。所有的输出都正常,都获取到了按键字符,
可是接下来,,恶梦又来了:

ZwWriteFile(                   //写入文件
 hfile,
 NULL,
 NULL,
 NULL,
&ioStatus,
 keys.Buffer,
 keys.Length,
 NULL,
 NULL);  //执行写入,打开都是乱码
.....

实在无奈,只能上网来求教各位大侠,还请不吝赐教!谢谢!
seny11
驱动牛犊
驱动牛犊
  • 注册日期2007-02-12
  • 最后登录2012-12-21
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-04-16 12:26
没有大侠帮一下吗?谢谢
wshcdr
驱动牛犊
驱动牛犊
  • 注册日期2003-07-17
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分125分
  • 威望250点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2012-03-12 23:42
我想问你的键盘过滤驱动是如何安装到系统里的啊 WIN7的系统
游客

返回顶部