VB.netからC#に焼き直すときにモジュールの部分はどうすればいいですか?
'******************************************************************************* ' felicalib.dll のヘッダファイル felicalib.h を VB.NET 用に変換してみました。 ' このままでは使いづらいので、CFelicaLib.vb で多少は扱いやすいようにしています。 '******************************************************************************* Imports System.Runtime.InteropServices Imports UInt8 = System.Byte Module modFelicaLib Private Const MAX_SYSTEM_CODE = 8 Private Const MAX_AREA_CODE = 16 Private Const MAX_SERVICE_CODE = 256 '------------------------------- ' FeliCa の情報を格納する構造体 '------------------------------- <StructLayout(LayoutKind.Sequential)> _ Public Structure felica Public p As IntPtr 'PaSoRi ハンドル Public systemcode As UInt16 'システムコード <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> _ Public IDm() As UInt8 'IDm <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> _ Public PMm() As UInt8 'PMm 'systemcode Public num_system_code As UInt8 '列挙システムコード数 <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_SYSTEM_CODE)> _ Public system_code() As UInt16 '列挙システムコード 'area/service codes Public num_area_code As UInt8 'エリアコード数 <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_AREA_CODE)> _ Public area_code() As UInt16 'エリアコード <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_AREA_CODE)> _ Public end_service_code() As UInt16 'エンドサービスコード Public num_service_code As UInt8 'サービスコード数 <MarshalAs(UnmanagedType.ByValArray, SizeConst:=MAX_SERVICE_CODE)> _ Public service_code() As UInt16 'サービスコード End Structure '----------- ' constants '----------- 'システムコード (ネットワークバイトオーダ/ビックエンディアンで表記) Public Const POLLING_ANY = &HFFFF Public Const POLLING_EDY = &HFE00 'システムコード: 共通領域 (Edyなどが使用) Public Const POLLING_SUICA = &H3 'システムコード: サイバネ領域 '------ ' APIs '------ '【関 数 名】pasori_open '【第1引数】[in] dummy '【戻 り 値】pasori ハンドル <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function pasori_open(ByVal dummy As IntPtr) As IntPtr End Function '【関 数 名】pasori_close '【第1引数】[in] p pasoriハンドル (pasori_open で得たポインタを指定する) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Sub pasori_close(ByVal p As IntPtr) End Sub '【関 数 名】InteropServices '【第1引数】[in] p pasoriハンドル (pasori_open で得たポインタを指定する) '【戻 り 値】エラーコード <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function pasori_init(ByVal p As IntPtr) As Integer End Function '【関 数 名】felica_polling '【第1引数】[in] p pasoriハンドル (pasori_open で得たポインタを指定する) '【第2引数】[in] systemcode システムコード '【第3引数】[in] RFU RFU (使用しない) '【第4引数】[in] timeslot タイムスロット '【戻 り 値】felicaハンドル (MarshalクラスのPtrToStructureメソッドを使用) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function felica_polling( _ ByVal p As IntPtr, _ ByVal systemcode As UInt16, _ ByVal RFU As UInt8, _ ByVal timeslot As UInt8 _ ) As IntPtr End Function '【関 数 名】felica_free '【第1引数】[in] f felicaハンドル (felica構造体のポインタを指定する) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Sub felica_free(ByVal f As IntPtr) End Sub '【関 数 名】felica_getidm '【第1引数】[in] f felicaハンドル (felica構造体のポインタを指定する) '【第2引数】[out] buf IDm を格納するバッファ(8バイト) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Sub felica_getidm(ByVal f As IntPtr, ByVal buf As IntPtr) End Sub '【関 数 名】felica_getpmm '【第1引数】[in] f felicaハンドル (felica構造体のポインタを指定する) '【第2引数】[out] buf PMm を格納するバッファ(8バイト) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Sub felica_getpmm(ByVal f As IntPtr, ByVal buf As IntPtr) End Sub '【関 数 名】felica_read_without_encryption02 '【第1引数】[in] f felicaハンドル (felica構造体のポインタを指定する) '【第2引数】[in] servicecode サービスコード '【第3引数】[in] mode モード(使用しない) '【第4引数】[in] addr ブロック番号 '【第5引数】[out] data データ(16バイト) '【戻 り 値】エラーコード <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function felica_read_without_encryption02( _ ByVal f As IntPtr, _ ByVal servicecode As Integer, _ ByVal mode As Integer, _ ByVal addr As UInt8, _ ByVal buf As IntPtr _ ) As Integer End Function '【関 数 名】felica_write_without_encryption '【第1引数】[in] f felicaハンドル (felica構造体のポインタを指定する) '【第2引数】[in] servicecode サービスコード '【第3引数】[in] mode モード(使用しない) '【第4引数】[in] addr ブロック番号 '【第5引数】[out] data データ(16バイト) '【戻 り 値】エラーコード <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function felica_write_without_encryption( _ ByVal f As IntPtr, _ ByVal servicecode As Integer, _ ByVal addr As UInt8, _ ByVal buf As IntPtr _ ) As Integer End Function '【関 数 名】felica_enum_systemcode '【第1引数】[in] p pasoriハンドル (pasori_open で得たポインタを指定する) '【戻 り 値】felicaハンドル (felica構造体のポインタを指定する) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function felica_enum_systemcode(ByVal p As IntPtr) As IntPtr End Function '【関 数 名】felica_enum_service '【第1引数】[in] p pasoriハンドル (pasori_open で得たポインタを指定する) '【第2引数】[in] systemcode システムコード '【戻 り 値】felicaハンドル (felica構造体のポインタを指定する) <DllImport("felicalib.dll", CallingConvention:=CallingConvention.Cdecl)> _ Public Function felica_enum_service(ByVal p As IntPtr, ByVal systemcode As UInt16) As IntPtr End Function End Module
クラス化するしか方法はないのですか?

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/23 17:38