C# で PInvoke を使用する方法を学習しようとして、単純な値の型を含むポインターを使用するさまざまなケースを処理する方法が少しわかりません。
アンマネージ DLL から次の 2 つの関数をインポートしています。
public int USB4_Initialize(short* device);
public int USB4_GetCount(short device, short encoder, unsigned long* value);
最初の関数はポインターを入力として使用し、2 番目の関数は出力として使用します。それらの使用法は、C++ ではかなり単純です。
// Pointer as an input
short device = 0; // Always using device 0.
USB4_Initialize(&device);
// Pointer as an output
unsigned long count;
USB4_GetCount(0,0,&count); // count is output
C# での最初の試行では、次の P/Invokes が発生します。
[DllImport("USB4.dll")]
public static extern int USB4_Initialize(IntPtr deviceCount); //short*
[DllImport("USB4.dll")]
public static extern int USB4_GetCount(short deviceNumber, short encoder, IntPtr value); //ulong*
これらの関数を上記の C++ コードと同じ方法で C# で使用するにはどうすればよいですか? おそらく を使用して、これらの型を宣言するより良い方法はありMarshalAs
ますか?