我需要修复一些包含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借用许可证的结束日期的正确方法,或者只是检索有效/未过期的借用许可证?
答案 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
向下开始的所有内容都可能与旧代码存在缺陷。