0

BYTE* へのポインターを返す特定の COM 関数 (C++ で記述) があります。

IDL :

HRESULT calculate([in] BSTR request, [out] BYTE* result, [out] LONG* size);

COM C++ コード:

STDMETHODIMP Calc::calculate(BSTR request, BYTE* result, LONG* size)
{
//calc
  int c_size = somesize();
  char* c_result = somearray();

//copy to result
  *size = c_size;
  result = new BYTE[c_size+1];
  memcpy(result, c_result, c_size);
  *(result+c_size) = '\0';

//free and return
  delete[] c_result;
  return S_OK;
}

これは、.NET/C# 相互運用で次のようになります。

calculate(string request, [out] byte result, [out] int size)

私の質問:

  1. 2 番目のパラメーターとして渡す型は? C# が提供するバイトは? しかし、それはC++の「バイトへのポインタ」ですか? 大丈夫ですか?

  2. C#で2番目のパラメータをバイト[]に変換する方法は?

ありがとう

4

0 に答える 0