■■怎么把驱动中截取的信息正确的写入到文件中?

■■如何把驱动中截取的信息正确的写入到文件中??????????
DWORD   pcbNeeded=0;
    DWORD   pcReturned=0;
    JOB_INFO_2   *   pJobInfo=NULL;
    SYSTEMTIME   st;
    pJobInfo   =   (JOB_INFO_2   *)   LocalAlloc(LPTR,   pcbNeeded);      
GetJob(pdevobj-> hPrinter,dwJobId,1,(LPBYTE)pJobInfo,pcbNeeded,(LPDWORD)&pcReturned);

                HANDLE       hDIBFile   =   NULL;
                    hDIBFile   =   CreateFile(TEXT( "c:\\ffdgfaa4aa.xml "),   GENERIC_WRITE,   0,   NULL,   CREATE_ALWAYS,   FILE_ATTRIBUTE_NORMAL,   NULL);
                    BOOL   bRet   =   FALSE;
                    DWORD   NumByteWritten   =   0;
                    char   *log= " <Log> <printlog> <job_id> ";

//int   iSize;
//char*   pszMultiByte;
//
//iSize   =   WideCharToMultiByte(CP_ACP,   0,   pJobInfo-> pDocument,   -1,   NULL,   0,   NULL,   NULL);
//pszMultiByte   =   (char*)malloc((iSize+1)/**sizeof(char)*/);
//WideCharToMultiByte(CP_ACP,   0,   pJobInfo-> pDocument,   -1,   pszMultiByte,   iSize,   NULL,   NULL);
                    bRet   =   WriteFile(hDIBFile,log,strlen(log)   ,   &NumByteWritten,   NULL);
                    bRet   =   WriteFile(hDIBFile,pJobInfo-> pDocument,sizeof(pJobInfo-> pDocument),   &NumByteWritten,   NULL);
                    CloseHandle(hDIBFile);


写到文件中的东西是乱码!!!!!!!!!!!!!!!!!!!!
why
???????

------解决方案--------------------
char *log= " <Log> <printlog> <job_id> ";

=============>

TCHAR log[255] = TEXT( " <Log> <printlog> <job_id> ");


------解决方案--------------------
在你的代码中,前面log是ANSI,而后面pDocument是LPTSTR,会根据编译选项而变化,因此在Unicode编译下会造成乱码(如果是ANSI就不会有此问题)。建议全部转换为Unicode,把Log声明成LPCTSTR lpcszLog = _T( ".... ");,然后把pDocument转换成Unicode(在ANSI编译下pDocument应该是ANSI,所以需要转换,而在Unicode下无需转换),可以用ATL的宏T2W来作此转换,可以正确处理Unicode和非Unicode的情况,而不能直接使用MultiByteToWideChar等函数。文件头最好再加上字节顺序编码,如0xFFFE。
当然了,也可以全部转换成ANSI,思路类似。