FlexLM 借用的许可证LM_BORROW_STAT结构

flexlm borrowed licenses LM_BORROW_STAT struct

本文关键字:BORROW STAT 结构 LM 许可证 FlexLM      更新时间:2023-10-16

我需要修复一些包装flexlm 11的遗留代码。 该代码显然适用于早期的 FlexLM 版本,并且在版本 11 的LM_BORROW_STAT中一定发生了某些更改。

该代码使用

lc_get_attr(_jobData->_job, LM_A_BORROW_STAT, (short*) &pBorrowStatus)

它们在 LM_BORROW_STAT 结构中返回,如下所示:

typedef struct _lm_borrow_stat {
struct _lm_borrow_stat *next;
char feature[MAX_FEATURE_LEN+1];
char vendor[MAX_VENDOR_NAME + 1];
time_t start;
time_t end;
char code[MAX_CRYPT_LEN + 1];
int borrow_binary_id;
} LM_BORROW_STAT;

问题是结束日期总是返回 0 - 功能、供应商和开始日期正常工作,因此结束的结构或定义LM_BORROW_STAT一定发生了变化。我知道结束日期正确存储在借用的许可证中,因为flexlm接受许可证有效。

由于flexlm将过期的借用许可证保留在注册表中并在枚举时返回它们,因此我需要访问结束日期以查看哪些借用的许可证仍然有效且可用。

不幸的是,我找不到 flexlm 11 的任何开发人员/API 参考。

有谁知道读取flexlm 11借用许可证结束日期的正确方法,或者只是检索有效/未过期的借用许可证?

自版本 11 以来,FlexLM API 似乎确实发生了变化。

由于我也没有找到版本 11 的文档(Flexera 文档区域有完全不同的东西?),我只能告诉您结构中似乎有两个新值,并且end已被转移。

typedef struct _lm_borrow_stat {
    struct _lm_borrow_stat *next;
    char feature[MAX_FEATURE_LEN+1];
    char vendor[MAX_VENDOR_NAME + 1];
    time_t start;
    long new_var_1;
    time_t end;
    long new_var_2;
    char code[MAX_CRYPT_LEN + 1];
    int borrow_binary_id;
} LM_BORROW_STAT;

事实上,这固定了end在我眼中的值,这也意味着,在后台他们直接从内存中读取这个结构。

因此,实际上,当您使用版本 11 时,从 end 开始的所有内容都可能在旧代码中存在缺陷。