在 .NET Compact Framework 中封送處理結構
更新:2007 年 11 月
您可以在結構中內嵌陣列和字串以進行封送處理 (Marshaling)。您必須使用 MarshalAsAttribute 屬性來指定要如何封送處理內嵌的字串,否則會擲回例外狀況。
將字串封送處理至 wchar_t*, 時,您可以指定下列任何屬性,這會將封送處理為 Unicode 字串的指標:
[MarshalAs(UnmanagedType.LPWStr)]
-或-
[MarshalAs(UnmanagedType.LPTStr)]
下表顯示從 Unmanaged 到 Managed 程式碼封送處理陣列和字串的結構定義。請注意,其中一些範例使用 MarshalAsAttribute。
要封送處理的資料 |
Unmanaged 結構 (C++) |
Managed 結構 (C#) |
---|---|---|
整數的陣列 |
|
|
字元的陣列 |
|
|
字串字元的陣列 |
|
|
字串的指標 |
|
|
指定結構配置
您可以指定如何使用 StructLayoutAttribute 屬性來配置平台叫用封送處理器的結構。.NET Compact Framework 支援所有三種 LayoutKind 列舉值:Auto (預設值)、Sequential 和 Explicit。
在 .NET Compact Framework 中,Auto 相當於 Sequential。
指定 Explicit 值之後,就必須對每個欄位都套用 FieldOffsetAttribute 屬性。位元組值必須在型別的界限之內。例如,2 個位元組的整數必須從偶數位址開始,4 個位元組的整數必須從可由 4 整除的位址開始,其他依此類推。
請注意不支援 StructLayoutAttribute.Pack 欄位。