flexlm借用了LM_BORROW_STAT结构的许可证

时间:2014-11-28 11:03:50

标签: c++ flexlm

我需要修复一些包含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借用许可证的结束日期的正确方法,或者只是检索有效/未过期的借用许可证?

1 个答案:

答案 0 :(得分:1)

自版本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向下开始的所有内容都可能与旧代码存在缺陷。