0

gtop11dotnet.dllがあります。これは、GemaltoWebサイトの.NETPKCS#11 Library forWindowsv2.2.0.9です。DLLには、スマートカードのシリアル番号またはGUIDを取得するために使用できるC_GetCardPropertyメソッドが含まれています。PKCS#11ユーザーズガイドおよび.NET統合ガイドによると、これは「byte [] GetCardProperty(byte property、byteflags)」です。パラメータとして2バイトを受け取り、バイト配列の形式でシリアル番号やGUIDなどを取得します。私の質問は、シリアル番号を取得して管理対象バイト配列に格納する方法です。

これが私の試みです:

[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.
}

助けてくれてありがとう。

4

2 に答える 2

0

これを試して。

public static extern uint C_GetCardProperty(uint slotID、byte property、byte flags、byte [] blob、ref byte length);

于 2013-02-28T11:10:44.453 に答える
0

「.NET PKCS#11」とは?PKCS#11 v2.20 または v2.30 ドラフトには、「C_GetCardProperty」メソッドが含まれていません。あなたはおそらく、世界中で知られている PCKS#11 とは何の関係もない独自の Gemalto/.NET の問題に直面しているでしょう。Gemalto は、任意の関数の前に「C_」を付けて結果を cryptoki と呼ぶことで「良い」ことを行います。 . PKCS#11 は C インターフェイスであり、マネージ/アンマネージ コードまたは .NET とは関係ありません。

于 2011-06-30T18:21:36.793 に答える