| 分類:[C#]
初めましてK2Eと申します。
とあるシステムのライブラリを使用しているのですがC/C++用に
GetDoResults(unsigned int handle, unsigned int * addr, unsigned int maxLen, unsigned int * len);-@
という関数が与えられています。
この関数は「Do() ←引数省略してます 」関数実行後の結果をaddrへ、返ってきたaddrの数をlenで取得するのですが、 例えば、C/C++の場合
------------------------------------------ unsigned int addr[5]; unsigned int len; int i; //Do()を実行する GetDoResults(uHandle, addr, 5, &len);
for(i = 0; i < len; i++) { printf("addr %d: %d", i, addr[i]) } ------------------------------------------ のようにGetDoResults実行後len=3が入ってくるような場合、addr[0],addr[1], addr[2]にも値が 入ってきたことを確認できています。
これと同様のことをC#でも行いたいのですが、 このシステムではC#用にもラッパークラスファイル(.csファイル)が用意されているようで@に該当する関数が
GetDoResults(unsigned int handle, out int addr, unsigned int maxLen, unsigned int aLen);-A
と定義されています。
"out int addr"引数に上記@の例のように配列の形で渡して、返ってきた結果一気に取得したいのですが、 引数をどのように宣言し、渡せばよいかわかりません。
配列の形で引数を渡す場合、色々調べてみたのですが「Func(out addr[] int)」のように渡さなくてはならないらしく Aの関数ではそのようになっていません。
試しに引数を
int addr;
と宣言し”out addr”と渡した場合、当然ながら一つだけ値が入ってきたことを確認しましたが、 ラッパーということなので、@のように”out int addr”に正しい引数をきちんと渡すことで 複数個(lenに入ってくる値分)取得できるはずと考えています。
引数をどのように宣言すればよいか、アドバイスをいただけないでしょうか? よろしくお願いします。
|