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 end の定義で何かが変更されている必要があります。flexlm がライセンスを有効なものとして受け入れるため、借用したライセンスに終了日が正しく保存されていることはわかっています。

flexlm は期限切れの借用ライセンスをレジストリに保持し、それらを列挙して返すため、どの借用ライセンスがまだ有効で利用可能かを確認するには、終了日にアクセスする必要があります。

残念ながら、flexlm 11 の開発者/API リファレンスが見つかりません。

flexlm 11 の借用ライセンスの終了日を正しく読み取る方法、または有効な/期限切れでない借用ライセンスを取得する正しい方法を知っている人はいますか?

4

1 に答える 1

1

確かにバージョン 11 以降、FlexLM API に変更があったようです。

バージョン 11 のドキュメントも見つからなかったので (Flexera のドキュメント エリアにはまったく別のものがありますか?)、構造体に 2 つの新しい値があり、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 を使用する場合、下位から始まるすべてのコードにおそらく欠陥があります。

于 2015-11-02T14:35:03.033 に答える