Ejemplo n.º 1
0
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);
 }
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}