1

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

4

1 回答 1

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

于 2015-11-02T14:35:03.033 回答