C++ で記述された単純な sdk (casmcard.dll) と一緒にスマートカードを持っています。
特定のブロックまたはセクターを読み書きするために、マネージ コード (C#) を介して上記の dll のメソッドを呼び出す必要があります。
casmcard.dll ラッパーが見つかりません。
何か案は?
相互運用性を掘り下げる必要があるようです。COM オブジェクトの場合は、インポートして .net にラッパーを作成させることができます。古い学校の dll 関数の場合は、それらをインポートするだけです。
相互運用性はちょっとした黒魔術なので、マッピングとマーシャリングの型についてググる必要があります。
編集
あなたの関数は次のようになりますか?
CasCLGetSN( IN SCARDHANDLE hCard, OUT LPBYTE pbCSNBuffer, IN DWORD cbCSNBufferSize, OUT LPDWORD pcbCSNLength )
これを試して:
CasCLGetSN(ScardHandle hCard, out IntPtr pbCSNBuffer, UInt32 cbCSNBufferSize, out UInt32 pcbCSNLength)
Marshal.Copy()
次に、オーバーロードされたを使用して、pbCSNBuffer の内容を取得する必要があります。また、scardHandle の定義を確認してください。構造体の場合は、宣言してSequential
属性を追加します。