麻烦各位看看是否判断语句有错,谢谢!
BOOL CUSBCalcDlg::InstallDriver()
{
TCHAR System32Directory[_MAX_PATH];
CString m_hwid,m_infname;
if(IdentifyDevice())
{
#ifdef Debug_mode
MessageBox(NULL,TEXT("bwk8 is used"),NULL);
#endif
m_hwid = _T("USB\\Vid_C251&Pid_1301");
}
else
{
#ifdef Debug_mode
MessageBox(NULL,TEXT("bwk7 is used"),NULL);
#endif
m_hwid = _T("USB\\Vid_1267&Pid_6523");
}
BOOL RebootRequired =0; // Must be cleared.
//取得windows的路径
if(0 == GetWindowsDirectory(System32Directory,_MAX_PATH))
{
// AddWarningIcon();
return false;
}
m_infname=System32Directory;
m_infname+= _T("\\inf\\USBCalc.inf"); //取得inf文件夹
// 更新即插即用设备
if (!UpdateDriverForPlugAndPlayDevices(0, // No Window Handle
m_hwid, // Hardware ID
m_infname, // inf FileName
INSTALLFLAG_FORCE, // 强制安装
&RebootRequired)) // 是否需要重启
{
return false; // Install Failure
}
else //跟新成功
{
HANDLE hDevice;
if(UsbOpenDriver(&hDevice)) //打开设备
{
#ifdef Debug_mode
MessageBox(NULL,TEXT("OPEN DRIVER SUCCESSFUL"),NULL);
#endif
CloseKeypad(hDevice);
//创建键盘接收数据线程,并传入窗口指针
if(DeviceFlag)
{
AfxBeginThread((AFX_THREADPROC)ExecuteThreadProc, (LPVOID)this);
}
else
{
AfxBeginThread((AFX_THREADPROC)ExecuteBWK7ThreadProc, (LPVOID)this);
#ifdef Debug_mode
MessageBox(_T("open BWK7 device second successfully!"));
#endif
}
//DelIcon(); //删除图标
toTray(); //显示图标
}
}
return true;
}
DeviceFlag是BOOL型的!我做了一个标志,但是每次还是两个线程都会执行,这是怎么回事?
[解决办法]
你下个断点看下不就行了,你这个 DeviceFlag是哪来的,我搜了一下都没有定义,全局变量?那被改了也是有可能,而且你这个函数一定只运行了一次么
[解决办法]
这个是不可能的,你把两个线程相关的都贴出来吧,要不然谁知道是怎么回事!~