我有一個gtop11dotnet.dll。它是金雅拓網站上用於Windows v2.2.0.9的.NET PKCS#11 Library。 DLL包含C_GetCardProperty方法,可用於檢索智能卡的序列號或GUID。根據PKCS#11用戶指南和.NET集成指南,它是「byte [] GetCardProperty(字節屬性,字節標誌)」。它接收兩個字節作爲參數並檢索例如序列號或字節數組形式的GUID。 我的問題是如何獲取序列號並將其存儲到託管字節數組中?在c中從gtop11dotnet.dll獲取一個字節數組#
這裏是我的嘗試:
[DllImport("gtop11dotnet.dll")]
public static extern byte[] C_GetCardProperty(byte property, byte flags);
public static void Main()
{
byte[] bytes = new byte[12];
bytes = C_GetCardProperty(0x06, 0x00) //Error at this line -> Cannot marshal 'return value': Invalid managed/unmanaged type combination.
}
感謝您的幫助。
是的,它是一個專有的金雅拓功能。我從[Gemalto網站]下載(http://www.gemalto.com/products/dotnet_card/resources/libraries.html?toggler=0),安裝並獲得了C:\ Program Files \ Gemalto \ DotNet中的gtop11dotnet.dll PKCS11。在那個DLL裏面有C函數C_GetCardProperty,我用Dependency Walker對它進行了雙重檢查。但是如何獲得該函數返回的序列號或GUID? – Almir
對不起,你需要問金雅拓。更好的是 - 告訴他們放棄該功能或將其重命名爲Gemalto_GetCardProperty - 濫用PKCS#11不會導致任何問題。 –