c#调用DLL
本文選自當初開發項目時的部分代碼。
c++函數原型
extern WINSCARDAPI LONG WINAPI
SCardEstablishContext(
? ? _In_ DWORD dwScope,
? ? _Reserved_ LPCVOID pvReserved1,
? ? _Reserved_ LPCVOID pvReserved2,
? ? _Out_ LPSCARDCONTEXT phContext);
c#定義
[DllImport("winscard.dll", EntryPoint = "SCardEstablishContext", CallingConvention = CallingConvention.Winapi)]
? ? ? ? public static extern Int32 SCardEstablishContext([In] Int32 dwScope, [In] IntPtr pvReserved1, [In] IntPtr pvReserved2, [In, Out] ref IntPtr phContext);
c++函數原型
SCardListReadersA(
? ? _In_ SCARDCONTEXT hContext,
? ? _In_opt_ LPCSTR mszGroups,
? ? _When_(_Old_(*pcchReaders) == SCARD_AUTOALLOCATE, _At_((LPSTR*)mszReaders, _Outptr_result_buffer_maybenull_(*pcchReaders) _At_(*_Curr_, _Post_z_ _Post_ _NullNull_terminated_)))
? ? _When_(_Old_(*pcchReaders) != SCARD_AUTOALLOCATE, _Out_writes_opt_(*pcchReaders) _Post_ _NullNull_terminated_)
? ? ? ? ? ? ?LPSTR mszReaders,
? ? _Inout_ ?LPDWORD pcchReaders);
c#定義
[DllImport("winscard.dll", EntryPoint = "SCardListReaders", CallingConvention = CallingConvention.Winapi)]
? ? ? ? public static extern Int32 SCardListReaders([In] IntPtr hContext, [In] byte[] mszGroups, [Out] byte[] mszReaders, [In, Out] ref int pcchReaders);
使用
IntPtr hReader = new IntPtr();
rc = SCardEstablishContext(0, IntPtr.Zero, IntPtr.Zero, ref hReader);
int pcchReaders = 2048;
byte[] response = new byte[pcchReaders?];
rc = SCardListReaders(hReader, null, response, ref pcchReaders);
總結
- 上一篇: android和ios HybridAp
- 下一篇: android jni开发方式