从6.0.0(20) 开始,新增提供应用进程信息查询接口,可以获取设备上已启动的应用进程信息。进程信息包括进程ID、指令命令行、父进程PID、用户ID、用户组ID、进程启动时间、进程所有者ID类型、进程所有者ID等相关信息。
接口如下表,更多接口及使用方法请参见API参考。
| 接口名 | 描述 |
|---|---|
| int32_t HMS_SecurityAudit_QueryAllProcesses(char** result) | 获取所有的应用进程信息。 |
| int32_t HMS_SecurityAudit_QueryProcesses(uint64_t* pids, uint64_t count, char** result) | 获取输入的pid的应用进程信息。 |
在CMakeLists.txt中导入安全审计共享库,并链接该库。
find_library(dsm-lib libsecurityaudit_ndk.z.so)
target_link_libraries(entry PUBLIC libace_napi.z.so ${dsm-lib}) 导入安全审计的头文件。
#include <cstdio> #include "DeviceSecurityKit/security_audit.h"
开发者根据实际场景,获取单个或所有应用进程信息。
开发者应用根据应用进程信息进行业务处理后,需要释放查询接口出入参的内存。
char* result = nullptr;
uint64_t pids[] = {3266};
int32_t ret = HMS_SecurityAudit_QueryProcesses(pids, sizeof(pids)/sizeof(pids[0]), &result);
if (ret == 0 && result != nullptr) {
printf("HMS_SecurityAudit_QueryProcesses result: %s\n", result);
} else {
printf("HMS_SecurityAudit_QueryProcesses failed with error: %d\n", ret);
}
// ...
if (result != nullptr) {
delete[] result;
result = nullptr;
} char* result = nullptr;
int32_t ret = HMS_SecurityAudit_QueryAllProcesses(&result);
if (ret == 0 && result != nullptr) {
printf("HMS_SecurityAudit_QueryAllProcesses result: %s\n", result);
} else {
printf("HMS_SecurityAudit_QueryAllProcesses failed with error: %d\n", ret);
}
// ...
if (result != nullptr) {
delete[] result;
result = nullptr;
}