我有一個JavaCard,可以調用JCSystem.getAvailableMemory(MEMORY_TYPE_PERSISTENT)並從我的小程序返回,但我想要一個確切的值,如果它超過32767字節。是否有可能爲GlobalPlatform智能卡查詢剩餘的永久內存?
0
A
回答
1
一般來說,不可能使用標準Java Card API從卡中獲得確切數量的可用內存。由於大多數Java卡甚至沒有整數支持,所以您可以從API方法獲得的最大值是32767(簽名short的上限)。
如果幸運的話,卡/ OS製造商可能會有一些專有的API方法。我已經看到了恩智浦JCOP卡的一些專有API,但如果它超出了簽名short的上限,它們都不能獲得可用內存量。
2
Java卡與GP 2.2 + ETSI支持
如果你的卡支持全球平臺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]中的定義進行編碼。的TLV編碼的數據對象的值稱爲參照控制參數P1以及所述命令消息的P2是:
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
,因爲它是用TLV格式,該命令的響應並不限於short
值,這意味着你可以檢查超過32767字節的空閒內存
相關問題
- 1. 智能卡查詢
- 2. 是否有可能獲得永久重複的RX可觀察
- 3. 智能卡:pyscard從apdu獲得剩餘字節
- 4. 是否有可能擁有「永久」佔位符?
- 5. 智能卡讀卡器是否支持所有智能卡模型?
- 6. 是否有可能創建永久的對象別名
- 7. 是否有可能通過軟件永久損壞硬件?
- 8. VB.NET剩餘功能
- 9. 是否有可能在windows Phone 8模擬器上永久保存聯繫人
- 10. 是否有可能實現MySQL查詢
- 11. 是否有可能使用ngResours查詢
- 12. 是否可以在Windows中爲特定的智能卡硬件ID禁用自動智能卡minidriver安裝?
- 13. 如何將數據永久保存在智能手機中
- 14. 是否有可能獲得預定芹菜任務的剩餘秒數
- 15. 查詢取消剩餘的查詢
- 16. Java智能卡 - 讀Scosta智能卡
- 17. 隱藏智能卡內容
- 18. 爲什麼java在剩餘大量內存時可能拋出OutOfMemoryError?
- 19. Android:如何檢查剩餘內存量?
- 20. Bokeh是否能夠成爲永久性的現場儀表板
- 21. 是否有可能擁有冗餘S3存儲桶?
- 22. VB6自動完成(智能感知)突然變爲永久
- 23. 媒體查詢是否適用於所有智能手機
- 24. 是否有可能避免這種查詢的子查詢?
- 25. 是否有Valgrind用智能指針檢測「內存泄漏」
- 26. 是否有可能隱藏智能表中的繁忙指標?
- 27. 此查詢中不存在SQL - 是否有可能
- 28. filterFunction是否永久?
- 29. 是否有可能在斯卡拉
- 30. 是否有可能在斯卡拉
我真正想要的是通過GlobalPlatform界面詢問卡的方法。如果這樣的事情不存在,那就是我的答案。 –
有沒有這樣的事情,有你的答案。 groissi提到了專有的API,並且GP 2.2中還有內存配額管理,但它是否在任何給定的卡上實現取決於製造商。即使存在,卡片也難以爲您提供確切數量的可用內存 - 它們肯定會爲交易和內部操作保留一筆不錯的數額。 – foo