我有一個託管程序,它與非託管DLL庫配合使用。在託管代碼中填充非託管數組
庫構造一個對象,該對象詢問(通過回調函數轉換爲委託)託管主機以填充非託管數組。數組本身通過指針(IntPtr)以及關於其大小的信息傳遞。這種類型是雙方都知道的。關鍵是,我如何安全地使用託管代碼填充非託管陣列中的數據?有兩個限制:沒有不安全的代碼,最好不創建額外的數組。如果存在這個數組,可能會以另一種方式傳遞數組。
讓回調具有以下原型:
typedef void (__stdcall * FillData)(double * array, int count);
讓代表有下列原型:
protected delegate void FillData(IntPtr array, int count);
你可以分享回調的簽名嗎? –
按要求添加了回撥簽名。 – Spook
什麼是PInvoke等價物;你正在使用? –