autoinfo.c

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <stdio.h>
#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <time.h>

void main(void)
  {
    int handle;
    struct stat buffer;

    if ((handle = open("//AUTOEXEC.BAT", O_RDONLY)) == -1)
     printf("Error opening //AUTOEXEC.BAT/n");
    else
      {
        if (fstat(handle, &buffer))
          printf("Error getting file information/n");
        else
          printf("AUTOEXEC.BAT is %ld bytes Last used %s/n",
            buffer.st_size, ctime(&buffer.st_atime));
        close(handle);
      }
 }

          

 

namespace android { int32_t OplusClientRecorder::incProcessData(int32_t pid, const String8& processName) { std::scoped_lock lock(mProcessDataLock); auto itr = mProcessDataMap.find(pid); if (itr != mProcessDataMap.end()) { itr->second.layerCount++; } else { itr = mProcessDataMap.emplace(pid, OplusClientProcessData { .layerCount = 1, .processName = processName }).first; } return itr->second.layerCount; } int32_t OplusClientRecorder::decProcessData(int32_t pid) { std::scoped_lock lock(mProcessDataLock); int32_t result = 0; auto itr = mProcessDataMap.find(pid); if (itr != mProcessDataMap.end()) { result = --itr->second.layerCount; if (result <= 0) { mProcessDataMap.erase(itr); } } return result; } std::optional<String8> OplusClientRecorder::getProcessNameByPid(int32_t pid) { std::scoped_lock lock(mProcessDataLock); auto itr = mProcessDataMap.find(pid); if (itr != mProcessDataMap.end()) { return std::make_optional(itr->second.processName); } return std::nullopt; } std::optional<int32_t> OplusClientRecorder::getLayerCountByPid(int32_t pid) { std::scoped_lock lock(mProcessDataLock); auto itr = mProcessDataMap.find(pid); if (itr != mProcessDataMap.end()) { return std::make_optional(itr->second.layerCount); } return std::nullopt; } std::size_t OplusClientRecorder::getProcessNum() { std::scoped_lock lock(mProcessDataLock); return mProcessDataMap.size(); } void OplusClientRecorder::addOcsAuthInfo(OcsAuthInfo &&authInfo) { ATRACE_CALL(); std::scoped_lock lock(mOcsAuthInfoLock); ALOGI(“addOcsAuthInfo [%s]”, to_string(authInfo).c_str()); mOcsAuthInfoMap[authInfo.packageName] = std::move(authInfo); } bool OplusClientRecorder::checkOcsPermission(const std::string &packageName, uint32_t permission) { ATRACE_CALL(); std::scoped_lock lock(mOcsAuthInfoLock); auto itr = mOcsAuthInfoMap.find(packageName); if (itr != mOcsAuthInfoMap.end()) { ALOGI(“checkOcsPermission (0x%x) in cached ocsAuthInfo %s”, permission, to_string(itr->second).c_str()); return (itr->second.permission & permission) == permission; } return false; } bool OplusClientRecorder::removeOcsAuthInfo(const std::string &packageName) { ATRACE_CALL(); std::scoped_lock lock(mOcsAuthInfoLock); auto itr = mOcsAuthInfoMap.find(packageName); if (itr != mOcsAuthInfoMap.end()) { ALOGI(“removeOcsAuthInfo %s”, to_string(itr->second).c_str()); mOcsAuthInfoMap.erase(itr); return true; } return false; } void OplusClientRecorder::clearOcsAuthInfo() { std::scoped_lock lock(mOcsAuthInfoLock); mOcsAuthInfoMap.clear(); } void OplusClientRecorder::clear() { std::scoped_lock lock(mProcessDataLock, mOcsAuthInfoLock); mProcessDataMap.clear(); mOcsAuthInfoMap.clear(); } String8 OplusClientRecorder::dump() { std::scoped_lock lock(mProcessDataLock, mOcsAuthInfoLock); String8 result; result.appendFormat(" mProcessDataMap data: \n"); for (auto& [pid, processData] : mProcessDataMap) { result.appendFormat(" pid: %d, count: %d, procName: %s\n", pid, processData.layerCount, processData.processName.c_str()); } result.appendFormat(" mOcsAuthInfoMap data: \n"); for (auto& [_, autoInfo] : mOcsAuthInfoMap) { result.appendFormat(" pid: %d, procName: %s, ocs authInfo: 0x%x\n", autoInfo.pid, autoInfo.packageName.c_str(), autoInfo.permission); } return result; 代码含义
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值