dll中,在一个循环中使用CreateFile创建打开文件,当到6500个左右时候,程序直接退出,没有任何提示该循环是在一个线程中已经使用关闭函数。
这个dll是按  unicode 写的,在非unicode下正常for(  )
{HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if(hbmpFile== INVALID_HANDLE_VALUE)
{
m_logfile->AddText(GetLastError());
      
return FALSE;
}
//其他处理
if (NULL==CloseHandle(hbmpFile))
{
Msg(TEXT("CloseHandle failed"));
}}
当运行到6500次左右时候,不会提示任何错误,调用该dll的进程直接退出。

解决方案 »

  1.   

    Unicode Debug下就会这样
    但是在 Debug 或者Release下正常谢谢大家
    请帮忙
      

  2.   

    Unicode Release下也会悄然无声的退出
      

  3.   

    自己增加log输出,这样退出的时候先定位问题的语句等
      

  4.   

    已经定位到
    HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 在这一句前面加一个
    m_logfile->AddText("11111111111111");HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 
    后面加一个
    m_logfile->AddText("222222222222");就会很清楚的看到这一句中CreateFile函数无声无息的退出了
      

  5.   

    好像不是这个原因
    因为在非unicode下一秒钟创建20个左右
    可以连续运行一周都没有问题