From 8e1bdfdca2ad2157fd74cedc1a6768a1b1c0849d Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周日, 09 2月 2020 04:48:55 +0800 Subject: [PATCH] identifiers next work --- src/library/pc_identifier/disk_strategy.cpp | 36 ++++++++++++++++++++++++++++-------- 1 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/library/pc_identifier/disk_strategy.cpp b/src/library/pc_identifier/disk_strategy.cpp index b2e6c1f..20fe310 100644 --- a/src/library/pc_identifier/disk_strategy.cpp +++ b/src/library/pc_identifier/disk_strategy.cpp @@ -10,14 +10,16 @@ using namespace std; namespace license { +namespace pc_identifier { -static FUNCTION_RETURN generate_disk_pc_id(vector<array<uint8_t, 6>> &v_disk_id, bool use_id) { +static FUNCTION_RETURN generate_disk_pc_id(vector<array<uint8_t, PC_IDENTIFIER_PROPRIETARY_DATA>> &v_disk_id, + bool use_id) { size_t disk_num, available_disk_info = 0; FUNCTION_RETURN result_diskinfos; unsigned int i; DiskInfo *diskInfos; - result_diskinfos = getDiskInfos(NULL, &disk_num); + result_diskinfos = getDiskInfos(nullptr, &disk_num); if (result_diskinfos != FUNC_RET_OK && result_diskinfos != FUNC_RET_BUFFER_TOO_SMALL) { return result_diskinfos; } @@ -26,6 +28,9 @@ } diskInfos = (DiskInfo *)malloc(disk_num * sizeof(DiskInfo)); + if (diskInfos == nullptr) { + return FUNC_RET_NOT_AVAIL; + } memset(diskInfos, 0, disk_num * sizeof(DiskInfo)); result_diskinfos = getDiskInfos(diskInfos, &disk_num); if (result_diskinfos != FUNC_RET_OK) { @@ -42,7 +47,7 @@ } v_disk_id.reserve(available_disk_info); for (i = 0; i < disk_num; i++) { - array<uint8_t, 6> a_disk_id; + array<uint8_t, PC_IDENTIFIER_PROPRIETARY_DATA> a_disk_id; if (use_id) { if (diskInfos[i].disk_sn[0] != 0) { memcpy(&a_disk_id[0], &diskInfos[i].disk_sn[2], a_disk_id.size()); @@ -51,7 +56,7 @@ } else { if (diskInfos[i].label[0] != 0) { a_disk_id.fill(0); - // strncpy((&a_disk_id[0], diskInfos[i].label, a_disk_id.size()); + strncpy((char *)&a_disk_id[0], diskInfos[i].label, a_disk_id.size()); v_disk_id.push_back(a_disk_id); } } @@ -71,7 +76,7 @@ } FUNCTION_RETURN DiskStrategy::identify_pc(PcIdentifier &pc_id) const { - vector<array<uint8_t, 6>> data; + vector<array<uint8_t, PC_IDENTIFIER_PROPRIETARY_DATA>> data; FUNCTION_RETURN result = generate_disk_pc_id(data, m_use_id); if (result == FUNC_RET_OK) { pc_id.set_data(data[0]); @@ -79,16 +84,31 @@ return result; } -std::vector<PcIdentifier> DiskStrategy::alternative_ids() const {} +std::vector<PcIdentifier> DiskStrategy::alternative_ids() const { + vector<array<uint8_t, PC_IDENTIFIER_PROPRIETARY_DATA>> data; + FUNCTION_RETURN result = generate_disk_pc_id(data, m_use_id); + vector<PcIdentifier> identifiers; + if (result == FUNC_RET_OK) { + identifiers.resize(data.size()); + for (auto &it : data) { + PcIdentifier pc_id; + pc_id.set_identification_strategy(identification_strategy()); + pc_id.set_data(it); + identifiers.push_back(pc_id); + } + } + return identifiers; +} LCC_EVENT_TYPE DiskStrategy::validate_identifier(const PcIdentifier &identifier) const { - vector<array<uint8_t, 6>> data; + vector<array<uint8_t, PC_IDENTIFIER_PROPRIETARY_DATA>> data; FUNCTION_RETURN generate_ethernet = generate_disk_pc_id(data, m_use_id); LCC_EVENT_TYPE result = IDENTIFIERS_MISMATCH; if (generate_ethernet == FUNC_RET_OK) { - // result = const_cast<IdentificationStrategy *>(this)->validate_identifier(identifier, data); + result = validate_identifier(identifier, data); } return result; } +} // namespace pc_identifier } /* namespace license */ -- Gitblit v1.9.1