【问题标题】:flexlm borrowed licenses LM_BORROW_STAT structflexlm 借用许可 LM_BORROW_STAT 结构
【发布时间】:2015-01-27 00:48:09
【问题描述】:

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

【问题讨论】:

    标签: c++ flexlm


    【解决方案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 的值这一事实也意味着,他们在后台直接从内存中读取这个结构。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多