|
分類:[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に入ってくる値分)取得できるはずと考えています。
引数をどのように宣言すればよいか、アドバイスをいただけないでしょうか?
よろしくお願いします。
|