bool Stream::GetData(unsigned char *pData, int &size) { if ( !QueryData(size) ) return false; if ( !ReadData(pData, size) ) { SeekMsg(); return false; } return true; }
QueryData DeepLinkQueryStringParser::ParseData(const AppInterface::UrlData& data) const { std::stringstream ssquery; if(data.query != NULL) { ssquery.str(data.query); } std::string segment; std::string indoorId = ""; std::string mapscene = ""; std::string queryString = ""; bool hasIndoorId = false; bool hasMapscene = false; bool hasQuery = false; bool parsedData = false; while(std::getline(ssquery, segment, '&')) { if(segment.find("indoor_id") == 0) { indoorId = segment.substr(segment.find("=") + 1); hasIndoorId = true; } if(segment.find("mapscene") == 0) { mapscene = segment.substr(segment.find("=") + 1); hasMapscene = true; } if(segment.find("query") == 0) { queryString = segment.substr(segment.find("=") + 1); hasQuery = true; } parsedData = true; } return QueryData(queryString, indoorId, mapscene, hasQuery, hasIndoorId, hasMapscene, parsedData); }
unsigned char* Stream::GetData(int &size) { size = 0; unsigned char *pData = NULL; if ( QueryData(0) ) { if ( !ReadData(pData, size) ) { if ( 0 < size ) { pData = new unsigned char[size]; if ( NULL == pData ) return NULL; ReadData(pData, size); } } } return pData; }
QueryData genDrivers(QueryContext& context) { QueryData results; auto devInfoset = setupDevInfoSet(); if (devInfoset == nullptr) { win32LogWARNING("Error getting device handle"); return results; } std::vector<SP_DEVINFO_DATA> devices; auto ret = getDeviceList(devInfoset, devices); if (!ret.ok()) { win32LogWARNING(ret.getMessage(), ret.getCode()); return results; } for (auto& device : devices) { char devId[MAX_DEVICE_ID_LEN] = {0}; if (CM_Get_Device_ID(device.DevInst, devId, MAX_DEVICE_ID_LEN, 0) != CR_SUCCESS) { win32LogWARNING("Failed to get device ID"); return QueryData(); } SP_DRVINFO_DATA drvInfo = {0}; SP_DRVINFO_DETAIL_DATA drvInfoDetail = {0}; ret = getDeviceDriverInfo(devInfoset, device, drvInfo, drvInfoDetail); Row r; r["device_id"] = devId; r["inf"] = drvInfoDetail.InfFileName; r["provider"] = drvInfo.ProviderName; r["manufacturer"] = drvInfo.MfgName; r["date"] = std::to_string(osquery::filetimeToUnixtime(drvInfo.DriverDate)); r["description"] = drvInfo.Description; ULARGE_INTEGER version; version.QuadPart = drvInfo.DriverVersion; r["version"] = std::to_string(HIWORD(version.HighPart)) + "." + std::to_string(HIWORD(version.LowPart)) + "." + std::to_string(LOWORD(version.HighPart)) + "." + std::to_string(LOWORD(version.LowPart)); for (const auto& elem : kAdditionalDeviceProps) { std::string val; ret = getDeviceProperty(devInfoset, device, elem.second, val); r[elem.first] = std::move(val); } if (r.count("driver_key") > 0) { if (!r.at("driver_key").empty()) { r["driver_key"].insert(0, kDriverKeyPath); } } if (r.count("service") > 0) { if (!r.at("service").empty()) { r["service_key"] = kServiceKeyPath + r["service"]; r["image"] = getDriverImagePath(r["service_key"]); } } results.push_back(r); } return results; }