能力值:
( LV2,RANK:10 )
|
-
-
2 楼
。。为什么。。都没有大侠愿意帮助一下吗?。谢谢了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
后来我又把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); //执行写入,打开都是乱码
.....
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
没有人帮助一下吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
NTSTATUS
WriteLogFile(PMYFILEDATA PFilesData)
{
int i,j;
WCHAR TempName[500] = {0};
CHAR AnsiName[1024] = {0},WriteName[1024] = {0};
ANSI_STRING asFileName,asWrite;
UNICODE_STRING BackFile;
NTSTATUS status;
HANDLE LogHandle = NULL;
OBJECT_ATTRIBUTES ObjAttrib;
IO_STATUS_BLOCK IoStatusBlock={0};
FILE_STANDARD_INFORMATION fsi; //文件标准信息结构
FILE_POSITION_INFORMATION fpi;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化写入内容
sprintf(WriteName, "Operation is %s,FileName is %Z \n",PFilesData->Oper,&asFileName );
//RtlInitAnsiString(&asWrite,WriteName);
//WriteName[asWrite.Length] = 0;
DbgPrint("%s ",WriteName);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
status = ZwWriteFile(LogHandle,
NULL,
NULL,
NULL,
&IoStatusBlock,
WriteName,
strlen(WriteName),
NULL,
NULL);
if (!NT_SUCCESS(status))
{
DbgPrint(" ZwWriteFile Failed %08x\n",status);
if(LogHandle != NULL)
ZwClose(LogHandle);
return status;
}
if(LogHandle != NULL)
ZwClose(LogHandle);
return status ;
}
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
我解释一下:
注意你写入文件时是一个一个字符写入的,但是你用了字符串指针。举个例子,char a='a';
&a是指向以'a'开始的一个字符串,直至遇到NULL,如果字符'a'后不为NULL,而是一些不可打印字符,那么这些字符都会被写入文件,结果就出现了乱码,LZ复习一下关于c语言字符指针的部分吧。
|
|
|