使用平台叫用封送處理資料
更新:2007 年 11 月
若要呼叫從 Unmanaged 程式庫匯出的函式,.NET Framework 應用程式需要表示 Unmanaged 函式之 Managed 程式碼中的函式原型 (Prototype)。若要建立原型,使平台叫用 (Invoke) 正確地封送處理資料,您必須執行以下動作:
將 DLLImportAttribute 屬性套用至 Managed 程式碼中的靜態 (Static) 函式或方法。
以 Managed 資料型別代替 Unmanaged 資料型別。
藉由套用具有選擇性欄位的屬性以及以 Managed 資料型別替代 Unmanaged 型別,即可使用 Unmanaged 函式所隨附的文件來建構相等的 Managed 原型。如需有關如何套用 DllImportAttribute 的指示,請參閱使用 Unmanaged DLL 函式。
本章節提供一些範例,示範如何建立 Managed 函式原型來將引數傳遞至 Unmanaged 程式庫匯出的函式,以及從 Unmanaged 程式庫匯出的函式中接收傳回值。這些範例還示範何時使用 MarshalAsAttribute 屬性和 Marshal 類別來明確封送處理資料。
在本節中
平台叫用資料型別
提供 Managed 資料型別的清單和其對應的 Unmanaged 資料型別。PinvokeLib.dll
提供可定義 Pinvoke.dll 提供的程式庫函式之程式碼。封送處理字串
描述如何以傳值 (By Value)、傳址 (By Reference)、結構、類別和陣列方式傳遞字串。封送處理類別、結構和等位
描述如何以傳值方式傳遞類別、如何傳遞多種結構,以及如何以數值和混合型別傳遞等位。封送處理型別的陣列
描述如何以傳值方式傳遞整數的多維陣列,以及如何以傳址方式傳遞一維陣列。其他封送處理範例
描述有關影響 Interop 封送處理行為的記憶體回收和執行緒。
相關章節
Interop 封送處理
描述 COM Interop 和平台叫用的封送處理 (Marshaling)。預設的封送處理行為
描述 Interop 封送處理用來封送處理資料的規則。使用 Unmanaged DLL 函式
描述如何使用平台叫用呼叫 Unmanaged DLL 函式。