1

JavaCard があり、JCSystem.getAvailableMemory(MEMORY_TYPE_PERSISTENT) を呼び出してアプレットから返すことができますが、32767 バイトを超える場合は正確な値が必要です。

4

2 に答える 2

3

GP 2.2 + ETSI をサポートする Javacard

カードが Global Platform 2.2 および ETSI をサポートしている場合、GET DATA コマンドを使用できます。

GP カード仕様 2.2 セクション 11.3 は、次のように述べています。

Tag ‘FF21’: Extended Card Resources Information available for Card Content Management, as defined in ETSI TS 102 226.

また、ETSI 102.226 セクション 8.2.1.7.2 では:

コマンドの実行が成功した後、GET DATA 応答データ フィールドは、GlobalPlatform [4] で定義されているようにコーディングされます。コマンド メッセージの参照制御パラメータ P1 および P2 で参照される TLV コード化データ オブジェクトの値は次のとおりです。

Length Description                            Value
  1    Number of installed application tag    '81'
  1    Number of installed application length  X
  X    Number of installed application
  1    Free non volatile memory tag           '82'
  1    Free non volatile memory length         Y
  Y    Free non volatile memory
  1    Free volatile memory tag               '83'
  1    Free volatile memory length             Z
  Z    Free volatile memory

このコマンドの応答は、shortTLV 形式を使用しているため、値に制限されません。つまり、32767 バイトを超える空きメモリを確認できます。

于 2014-01-23T10:03:00.560 に答える
1

一般に、標準のJavaCardAPIを使用してカードから正確な量の空きメモリを取得することはできません。ほとんどのJavaCardは整数をサポートしていないため、APIメソッドから取得できる最大値は32767(signed shortの上限)です。

運が良ければ、カード/OSメーカーの独自のAPIメソッドがあるかもしれません。NXP JCOPカードの独自のAPIを見たことがありますが、署名されたショートの上限を超えた場合、それらのいずれも空きメモリの量を取得できません。

于 2011-07-29T11:09:33.803 に答える