使用平台叫用封送處理資料

若要呼叫從 Unmanaged 程式庫匯出的函式,.NET Framework 應用程式需要表示 Unmanaged 函式之 Managed 程式碼中的函式原型 (Prototype)。若要建立原型,使平台叫用 (Invoke) 正確地封送處理資料,您必須執行以下動作:

  • DLLImportAttribute 屬性套用至 Managed 程式碼中的靜態 (Static) 函式或方法。

  • 以 Managed 資料型別代替 Unmanaged 資料型別。

藉由套用具有選擇性欄位的屬性以及以 Managed 資料型別替代 Unmanaged 型別,即可使用 Unmanaged 函式所隨附的文件來建構相等的 Managed 原型。如需有關如何套用 DllImportAttribute 的指示,請參閱使用 Unmanaged DLL 函式

本章節提供一些範例,示範如何建立 Managed 函式原型來將引數傳遞至 Unmanaged 程式庫匯出的函式,以及從 Unmanaged 程式庫匯出的函式中接收傳回值。這些範例還示範何時使用 MarshalAsAttribute 屬性和 Marshal 類別來明確封送處理資料。

在本節中

  • PinvokeLib.dll
    提供可定義 Pinvoke.dll 提供的程式庫函式之程式碼。
  • 封送處理字串
    描述如何以傳值 (By Value)、傳址 (By Reference)、結構、類別和陣列方式傳遞字串。
  • 封送處理型別的陣列
    描述如何以傳值方式傳遞整數的多維陣列,以及如何以傳址方式傳遞一維陣列。

相關章節