我需要以 64 位从 COM 获取 RECT 到 C#,所以我在 IDL 中定义了一个简单的方法:
[id(23), helpstring("method GetRect")] HRESULT GetRect([out,retval] RECT* pRect);
并在 C++ 中实现为
STDMETHODIMP CSpot::GetRect(RECT* pRect)
{
CRect rec = get_position();
*pRect = rec;
return S_OK;
}
我在 C# 中调用为:
tagRECT rec = pSpot.GetRect();
大多数时候都可以,但有时我会得到 0xC0000005:访问冲突写入位置 0x0000000000000000。
排队:
*pRect = rec;
什么可能导致此异常?