SafeArrayAccessData を使用して、マネージ コードによって渡される SAFEARRAY をロックする必要がある場合について質問があります。これが私たちのコードです。VARIANT は、マネージド コードによって文字列配列と共に渡されます。コード レビュー中に、SafeArrayAccessData/SafeArrayUnAccessData の使用を提案する人がいます。しかし、彼はその理由と利点について確信が持てません。あなたの経験のいくつかを共有できますか?ありがとう!
STDMETHODIMP Base::Method1(VARIANT values, VARIANT_BOOL result)
{
CComSafeArray<BSTR> ids;
ids.Attach(values.parray);
unsigned int size = ids.GetCount();
for(unsigned int i = 0; i < size; ++i)
{
// use ids[i] here
}
// ...
}