int CEnumerator::OnAddUnifyingReceiver(DEVINST dnDevInst, HANDLE HidDeviceObject, const wchar_t *DevicePath, PHIDD_ATTRIBUTES Attributes, int PreparsedData, HIDP_CAPS *Capabilities, int a8) { if(PowerUp(0, dnDevInst)) { return 0; } CHidDevice* pHidDevice = new CHidDevice(dnDevInst); if(!pHidDevice) { return 0; } if(CEnumerator::LinkRawDeviceHandleWithDevice(pThis, (CReceiver *)pHidDevice, 0xFFu)) { char ReportID = GetReportID(PreparsedData, Capabilities); HDEVNOTIFY hDevNotify = GetRegisteredDevNotify(HidDeviceObject); if (pHidDevice->Setup(HidDeviceObject, ReportID, (int)Capabilities, Attributes, DevicePath, hDevNotify) ) { pHidDevice->GenerateDeviceArrivalEvent(); if(m_ModelID) { pThis->field_EC = CDevice::GetRawDeviceHandle((CReceiver *)pHidDevice); v11 = (DFU *)DFUController::GetSingleton(); DFUController::UnknownY(v11, 6); } } return 1; } if(pHidDevice) { delete pHidDevice; } return 0; }
CBaseTCPConnection * CEasyNetLinkService::CreateConnection(CIPAddress& RemoteAddress) { if(m_IPList.GetCount()) { bool IsMatch=false; for(size_t i=0;i<m_IPList.GetCount();i++) { if(m_IPList[i].IsMatch(RemoteAddress)) { IsMatch=true; break; } } if(!IsMatch) { PrintNetLog(0xffffff,_T("连接[%s]不在IP列表中,被拒绝"),RemoteAddress.GetIPString()); return NULL; } } CEasyNetLinkConnection * pConnection=NULL; if(m_pManager) { pConnection=m_pManager->CreateAcceptConnection(GetReportID()); if(pConnection) { pConnection->SetMaxPacketSize(m_MaxPacketSize); pConnection->EnableReallocConnectionID(NeedReallocConnectionID()); } } return pConnection; }
int CEnumerator::OnAddReceiver(DEVINST dnDevInst, HANDLE HidDeviceObject, const wchar_t *DevicePath, HIDD_ATTRIBUTES *Attributes, int PreparsedData, HIDP_CAPS *Capabilities, int a8) { pReceiver = 0; v31 = 0; v30 = 0; v26 = 0; DEVINST* pdnDevInst; DEVINST dnDevInst; m_pfnCM_Get_Parent(&pdnDevInst, dnDevInst, 0); DWORD a2 = PowerUp(0, (PDEVINST)pdnDevInst); if ( a2 ) { pReceiver = (CReceiver *)GetDeviceHandle(a2); v30 = 1; } else { v29 = MatchProductIDs(pThis, Attributes->ProductID, (int)&v26); switch ( v29 ) { case 4: // CDJReceiver pReceiver = (CReceiver *)new CDJReceiver(pdnDevInst, 4); break; case 3: // CEQuadReceiver pReceiver = (CReceiver *)new CEQuadReceiver(pdnDevInst, 3); break; case 2: // CEQuadReceiver pReceiver = (CReceiver *)new CEQuadReceiver(pdnDevInst, 2); break; case 9: // CDJGamingReceiver pReceiver = (CReceiver *)new CDJGamingReceiver(pdnDevInst, 9); break; case 0: // CPalomarReceiver pReceiver = (CReceiver *)new CPalomarReceiver(pdnDevInst); break; case 10: // CEQuadReceiver pReceiver = (CReceiver *)new CEQuadReceiver(pdnDevInst, 10); break; default: break; } if(pReceiver && !LinkRawDeviceHandleWithDevice(pReceiver, 0xFFu)) { if(pReceiver) { delete pReceiver; } pReceiver = 0; } } if (pReceiver) { char ReportID = GetReportID(PreparsedData, Capabilities); if(!CHPPDevice::IsDeviceWithMatchingReportID((CHPPDevice *)&pReceiver->HPPDevice, ReportID)) { HDEVNOTIFY hDevNotify = CEnumerator::GetRegisteredDevNotify(pThis, (int)HidDeviceObject); v31 = CHPPDevice::AppendHidDevice((CHPPDevice *)&pReceiver->HPPDevice,dnDevInst,(int)HidDeviceObject,DevicePath,Capabilities,ReportID,hDevNotify); v23 = CHPPDevice::AreDevicesActive((CHPPDevice *)&pReceiver->HPPDevice, v26); if ( v31 ) { if ( v23 ) { (*(void (__thiscall **)(CReceiver *, HIDD_ATTRIBUTES *))(pReceiver->__parent.vtbl + 0x2C))(pReceiver,Attributes); (*(void (__thiscall **)(CReceiver *))(pReceiver->__parent.vtbl + 4))(pReceiver); CReceiver::ReceiverScan(pReceiver); } } } if ( v30 ) { pReceiver->DecrementRefCount(); } } return v31; }