MarshalMode 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表用於 CustomMarshallerAttribute 指示何時啟動編組器的不同編組模式。
public enum class MarshalMode
public enum MarshalMode
type MarshalMode =
Public Enum MarshalMode
- 繼承
欄位
| 名稱 | 值 | Description |
|---|---|---|
| Default | 0 | 所有模式。 如果沒有特定使用模式的指令器,則會使用該模式指定的 marshaller。 |
| ManagedToUnmanagedIn | 1 | 在管理到非管理的情境中,例如P/Invoke,使用參數 |
| ManagedToUnmanagedRef | 2 |
|
| ManagedToUnmanagedOut | 3 |
|
| UnmanagedToManagedIn | 4 | 在非管理到管理的情境中,例如反向 P/Invoke,則是按價值和 |
| UnmanagedToManagedRef | 5 |
|
| UnmanagedToManagedOut | 6 |
|
| ElementIn | 7 | 陣列元素在互操作情境中以 |
| ElementRef | 8 | 陣列元素在互操作情境中以 和 傳遞 |
| ElementOut | 9 | 陣列元素僅OutAttribute在互操作情境下以值傳遞 |
備註
每位成員名稱的模式 {CallDirection}{DataFlow}如下:
-
呼叫方向 (
ManagedToUnmanaged或UnmanagedToManaged)表示呼叫的一方發起。ManagedToUnmanaged適用於 P/Invoke 通話。UnmanagedToManaged適用於反向 P/Invoke 或 COM 情境,當原生程式碼呼叫受管理程式碼時。 -
資料流 (
In、Out或Ref)表示資料相對於通話的移動方式。In表示資料會從呼叫者流向被叫者。Out表示資料會從被叫方流向呼叫方,包含參數out與回傳值。Ref表示資料是雙向流動。
例如,當受管理程式碼呼叫非受管理程式碼(P/Invoke)且資料回流至呼叫者時,這 ManagedToUnmanagedOut 涵蓋 out 參數與回傳值。 此模式的調組器會將非管理型態轉換為管理型態。