私は C/C++ プログラマーですが、デバイスと通信するために C# で記述されたプログラムを更新するように依頼されました。C# に関する私の知識は非常に基本的なものです。
以前のバージョンはすべて C# で記述されていましたが、実際にデバイスにアクセスする API が C に変更されました。C 関数の API を次のようにインポートできることがわかりました。
[DllImport("myapi.dll")]
public static extern int myfunct(
[MarshalAs(UnmanagedType.LPTStr)] string lpDeviceName,
IntPtr hpDevice);
C では、この関数プロトタイプは次のとおりです。
int myFunct( LPTStr lpDeviceName, HANDLE* hpDevice );
HANDLE は次のように定義されます。
typedef void *HANDLE;
ただし、この機能は期待どおりには機能しません。実際、C# コード呼び出しでは、どのような型を宣言して C# メソッドに渡す必要があるのでしょうか?
助けてくれてありがとう。愚かな質問でごめんなさい。