これは私にとってトリッキーです。
const int * const buffer[]
現在、以下のように翻訳しています。
byte[] buffer
問題は、DLL が上記のパラメーターを使用して関数を呼び出しているときに、AccessViolation 例外が発生することです。
手伝ってくれてありがとう。
確かに2 const
の場合、変更が許可されていないことを十分に示しているはずです:-)。しかし、真剣に、これらの状態の 1 つはポインターが変更されるべきではないと述べており、もう 1 つはポインターが指すデータが変更されるべきではないと述べています。
そのため、アクセス違反が発生しています。
あなたがする必要があるのは、データをキャストするだけでなく、constがやや少ない別のバッファにコピーすることです。ヒント: Buffer.BlockCopy が最適です。
const 修飾子は、データの処理方法に影響を与える可能性がありますが、PInvoke シグネチャには影響しません。buffer パラメーターは整数へのポインターの配列であるため、正しい変換は次のようになります。
IntPtr[] buffer;
編集: AccessViolation の例外はありませんが、そのような配列からデータを適切に取得する方法がわかりません。
サンプル ファイルは、このタイプのアクセスを使用しています。
buffer[0][i]
buffer[1][i]
しかし、バッファ[]にはポインタが1つしかありません。そのポインタは 2 次元配列へのポインタですか? それを.NETにマーシャリングする方法は? ありがとう!