我有一个托管程序,它与非托管DLL库配合使用。在托管代码中填充非托管数组
库构造一个对象,该对象询问(通过回调函数转换为委托)托管主机以填充非托管数组。数组本身通过指针(IntPtr)以及关于其大小的信息传递。这种类型是双方都知道的。关键是,我如何安全地使用托管代码填充非托管阵列中的数据?有两个限制:没有不安全的代码,最好不创建额外的数组。如果存在这个数组,可能会以另一种方式传递数组。
让回调具有以下原型:
typedef void (__stdcall * FillData)(double * array, int count);
让代表有下列原型:
protected delegate void FillData(IntPtr array, int count);
你可以分享回调的签名吗? –
按要求添加了回拨签名。 – Spook
什么是PInvoke等价物;你正在使用? –