szTif="c:\\aaaa\aaaaaaaa\aa\a.tif";
以下为源代码的一段的一部分,在执行完sprintf以后,hTif值自动变化,导致错误。如果我改变路径以后,别处的sprintf语句执行完后,相应句柄值也发生变化导致错误。 求教各位高手指点, hTif = CreateFileA(szTif,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
}
if(hTif == INVALID_HANDLE_VALUE)
{
sprintf(buf,"Create File (%s)Failed. %d",szTif,GetLastError());
writelog( buf );
return 0 ;
}
sprintf(buf,"Create File(%s) Succeed. %d",szTif,GetLastError());
writelog( buf );
init_stream_data(&sdata); i=sr_create_tiff_header(hTif);void writelog(char *buf)
{
log = fopen("c:\\pt.log","a+");
if(log==NULL)
{
return;
} fprintf( log, "%s\n", buf );
fclose( log );
return;
}
以下为源代码的一段的一部分,在执行完sprintf以后,hTif值自动变化,导致错误。如果我改变路径以后,别处的sprintf语句执行完后,相应句柄值也发生变化导致错误。 求教各位高手指点, hTif = CreateFileA(szTif,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
}
if(hTif == INVALID_HANDLE_VALUE)
{
sprintf(buf,"Create File (%s)Failed. %d",szTif,GetLastError());
writelog( buf );
return 0 ;
}
sprintf(buf,"Create File(%s) Succeed. %d",szTif,GetLastError());
writelog( buf );
init_stream_data(&sdata); i=sr_create_tiff_header(hTif);void writelog(char *buf)
{
log = fopen("c:\\pt.log","a+");
if(log==NULL)
{
return;
} fprintf( log, "%s\n", buf );
fclose( log );
return;
}
HGLOBAL hMem = NULL;
DWORD dwSize = 0, cbRead = 0;
unsigned char *TTMxBuffer = NULL;
char buf[32];
多谢everandforever兄的提示,以上是我在文件中buf的定义.的确应该是缓冲区太小的缘故,麻烦能不能把这些变量在内存中的位置讲得更详细些,在程序的下半段出现过hMem变化的情况。
writelog( buf );把buf开的足够大。另外可以用 fprintf 的。
另外,你的日志不要写到文件中,驱动里面直接调用DbgPrint,应用层调用OutDebugString即可,然后到www.sysinternals.com去下载Dbgview工具看日志输出。