HRESULT CSocketSelectDlg::ThreadStart( ) { HRESULT hResult; if (m_hThread == NULL) { m_hThread = CreateThread(NULL, 0, (PTHREAD_START_ROUTINE) ThreadProc, (LPVOID) this, CREATE_SUSPENDED, &m_dwThdId); if (m_hThread != NULL) { hResult = vciEnumDeviceOpen((PHANDLE) &m_hDevEnu); if (hResult == VCI_OK) ResumeThread(m_hThread); else ThreadStop(TRUE); } else { hResult = GetLastError(); } } else { hResult = NO_ERROR; } return(hResult); }
int CANDriver::initialize() { CHAR errorBuffer[VCI_MAX_ERRSTRLEN]; HRESULT vciResult; if ( (vciResult = vciInitialize()) != VCI_OK ) { vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer)); emit errorOccured(errorBuffer); return 1; } HANDLE hEnum; if ( (vciResult = vciEnumDeviceOpen(&hEnum)) != VCI_OK ) { vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer)); emit errorOccured(errorBuffer); return 1; } vciEnum_ptr phEnum(&hEnum, vciEnumDeviceClose); VCIDEVICEINFO deviceInfo; if ( (vciResult = vciEnumDeviceNext(hEnum, &deviceInfo)) != VCI_OK ) { vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer)); emit errorOccured(errorBuffer); return 1; } HANDLE hDevice; if ( (vciResult = vciDeviceOpen(deviceInfo.VciObjectId, &hDevice)) != VCI_OK ) { vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer)); emit errorOccured(errorBuffer); return 1; } vciDevice_ptr phDevice(&hDevice, vciDeviceClose); return 0; }