你CreateFile的参数又是怎么设置的?

解决方案 »

  1.   

    FAT系统中可能引起死锁,网络文件也可能。
    http://support.microsoft.com/kb/326493/en-us
      

  2.   

    //设置串口名
    TCHAR szPort[15];
    wsprintf(szPort, L"COM%d:", gPortNo);
    //打开串口
    HANDLE hComm = CreateFile(
    szPort,
    GENERIC_READ | GENERIC_WRITE, //允许读和写
    0, //独占方式(共享模式)
    NULL,
    OPEN_EXISTING, //打开而不是创建(创建方式)
    NULL,
    NULL 
    );
    CloseHandle(hComm);
      

  3.   

    BOOL gIsOpenSuccess = FALSE;
    // 检测串口是否能打开
    DWORD CSeries::OpenThreadFunc(LPVOID lparam)
    {
    //设置串口名
    TCHAR szPort[15];
    wsprintf(szPort, L"COM%d:", (UINT)lparam);
    //打开串口
    HANDLE hComm = CreateFile(
    szPort,
    GENERIC_READ | GENERIC_WRITE, //允许读和写
    0, //独占方式(共享模式)
    NULL,
    OPEN_EXISTING, //打开而不是创建(创建方式)
    NULL,
    NULL 
    );
    CloseHandle(hComm);
    gIsOpenSuccess = TRUE;
    return 0;
    }
    int CSeries::OpenPort(HWND hOwner,UINT portNo,UINT baud,UINT parity,UINT databits,UINT stopbits)
    {
    m_hOwner = hOwner; // 已经打开的话,直接关闭
    if (m_hComm != INVALID_HANDLE_VALUE)
    {
    //关闭串口
    CloseHandle (m_hComm); m_hComm = INVALID_HANDLE_VALUE;
    m_bOpened = FALSE;
    } // 开个线程打开串口测试
    DWORD dwOpenThreadID;
    gIsOpenSuccess = FALSE;
    HANDLE  hThreadOpen = CreateThread(NULL,0,OpenThreadFunc,&portNo,0,&dwOpenThreadID);
    DWORD dwTime = GetTickCount();
    while(!gIsOpenSuccess && ((GetTickCount()-dwTime)<2000))
    Sleep(100);
    TerminateThread(hThreadOpen,0);
    hThreadOpen = NULL;
    dwOpenThreadID = NULL; if (!gIsOpenSuccess)
    return FALSE; //设置串口名
    TCHAR szPort[15];
    wsprintf(szPort, L"COM%d:", portNo);
    //打开串口
    m_hComm = CreateFile(
    szPort,
    GENERIC_READ | GENERIC_WRITE, //允许读和写
    0, //独占方式(共享模式)
    NULL,
    OPEN_EXISTING, //打开而不是创建(创建方式)
    NULL,
    NULL 
    );
      

  4.   

    当卡死在那个线程里面时,我想结束进程都不行。用exit(0)都不行。求解,谢谢