能获取到扫描码,并成功转化为字符,但写入文件,打开却是乱码,调试无果,很是郁闷,哪位朋友帮看下是哪里没写好?
//----------------------首先:获取扫描码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也一样,能获取转化后的字符,但在写入文件时都是乱码2.后来我又把char转存到Ansi_String中:CHAR *p=&chn;RtlInitAnsiString(&keys,p); //以P指针指向的chn字符(串)来初始化ansi stringDbgPrint(("buffer is %Z/n",&keys));DbgPrint(("buffer2 is %s/n",keys.Buffer)); //到这里。所有的输出都正常,都获取到了按键字符,可是接下来,,恶梦又来了:ZwWriteFile( //写入文件hfile,NULL,NULL,NULL,&ioStatus,keys.Buffer,keys.Length,NULL,NULL); //执行写入,打开都是乱码..... 实在郁闷了。
后来改了:
改成: char keys[3]="0/0";.....keys[0]=chn;ZwWriteFile( //写入文件 hfile, 0, 0, 0, &ioStatus, &keys, strlen(keys), 0, 0);
就通过了.再也没有乱码了,天空一片睛朗!