System.Runtime.InteropServices 命名空間
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供多種成員,可以支援 COM Interop 和平台叫用服務。 如果您不熟悉這些服務,請參閱與 Unmanaged 程式碼互通。
類別
AllowReversePInvokeCallsAttribute |
允許 Unmanaged 方法呼叫 Managed 方法。 |
AutomationProxyAttribute |
指定類型是否應使用 Automation 封送處理器或自訂的 Proxy 和 Stub 來進行封送處理。 |
BestFitMappingAttribute |
控制 Unicode 字元是否要轉換成最相近的 ANSI 字元。 |
BStrWrapper |
將 |
ClassInterfaceAttribute |
表示要為公開至 COM 之類別所產生的類別介面類型 (如果產生介面的話)。 |
CoClassAttribute |
指定從類型程式庫匯入之 Coclass 的類別識別項。 |
CollectionsMarshal |
不安全的類別,會提供一組方法,供存取集合的基礎資料表示。 |
ComAliasNameAttribute |
表示參數或欄位類型的 COM 別名。 |
ComAwareEventInfo |
允許事件處理常式的晚期繫結註冊。 |
ComCompatibleVersionAttribute |
指出對於 COM 用戶端,所有目前組件版本中的類別都和組件之前版本中的類別相容。 |
ComConversionLossAttribute |
指示從型別程式庫匯入組件 (Assembly) 時,遺失類別或介面的相關資訊。 |
ComDefaultInterfaceAttribute |
指定要公開 (Expose) 至 COM 的預設介面。 此類別無法獲得繼承。 |
ComEventInterfaceAttribute |
識別來源介面,以及實作事件介面 (從 COM 類型程式庫匯入 Coclass 時所產生) 之方法的類別。 |
ComEventsHelper |
提供啟用 .NET 委派的方法,該委派會處理要在 COM 物件中加入及移除的事件。 |
COMException |
當 COM 方法呼叫傳回無法辨識的 HRESULT 時,所擲回的例外狀況。 |
ComImportAttribute |
表示 COM 中之前已定義屬性化類型。 |
ComRegisterFunctionAttribute |
指定當您登錄來自 COM 的所用組件 (Assembly) 時要呼叫的方法;這個方法可讓您在登錄程序期間執行使用者撰寫的程式碼。 |
ComSourceInterfacesAttribute |
識別公開為屬性化類別之 COM 事件來源的介面清單。 |
ComUnregisterFunctionAttribute |
指定當您移除登錄來自 COM 的所用組件 (Assembly) 時要呼叫的方法;這允許移除登錄程序期間的使用者撰寫程式碼的執行。 |
ComVisibleAttribute |
控制公開至 COM 之個別 Managed 類型或成員,或組件內所有類型的存取範圍。 |
ComWrappers |
管理 COM IUnknown 類型包裝函式的類別。 |
CriticalHandle |
代表控制代碼資源的包裝函式類別。 |
CurrencyWrapper |
包裝封送處理器應將其當做 |
DefaultCharSetAttribute |
指定 CharSet 列舉型別的值。 此類別無法獲得繼承。 |
DefaultDllImportSearchPathsAttribute |
指定用來搜尋提供平台叫用函式之 DLL 的路徑。 |
DefaultParameterValueAttribute |
設定從支援預設參數的語言呼叫參數時,該參數的預設值。 此類別無法獲得繼承。 |
DispatchWrapper |
包裝封送處理器應將其當做 |
DispIdAttribute |
指定方法、欄位或屬性的 COM 分派識別項 (DISPID)。 |
DllImportAttribute |
表示由 Unmanaged 動態連結程式庫 (DLL) 公開做為靜態進入點的屬性化方法。 |
DynamicInterfaceCastableImplementationAttribute |
GetInterfaceImplementation(RuntimeTypeHandle) 所傳回任何類型所需的屬性。 |
ErrorWrapper |
包裝封送處理器應將其當做 |
ExtensibleClassFactory |
啟用在建立期間從 Unmanaged 物件延伸的 Managed 物件的自訂。 |
ExternalException |
所有 COM Interop 例外狀況 (Exception) 和結構化例外狀況處理 (Structured Exception Handling,SEH) 例外狀況的基底例外狀況類型。 |
FieldOffsetAttribute |
表示類別或結構之 Unmanaged 表示中的欄位實體位置。 |
GuidAttribute |
不要自動 GUID 時,提供明確 Guid。 |
HandleCollector |
追蹤未釋放的控制代碼,並在達到指定的臨界值時強制進行記憶體回收。 |
IDispatchImplAttribute |
指示在顯露雙重介面 (Dual Interface) 和 COM 的分配介面 (Dispinterface) 時,Common Language Runtime 使用哪個 |
ImmutableCollectionsMarshal |
不安全的類別,提供一組方法來存取不可變集合的基礎資料標記法。 |
ImportedFromTypeLibAttribute |
指示在組件內定義的型別原來是定義在型別程式庫中。 |
InAttribute |
表示資料應從呼叫端封送處理至被呼叫端,但不會封送處理回呼叫端。 |
InterfaceTypeAttribute |
指示 Managed 介面公開給 COM 時是否為雙重、僅分派或 |
InvalidComObjectException |
使用無效的 COM 物件時便擲回的例外狀況。 |
InvalidOleVariantTypeException |
當封送處理器遇到無法封送處理成 Managed 程式碼之變數類型的引數時,所擲回的例外狀況。 |
LCIDConversionAttribute |
指示方法的 Unmanaged 簽章需要地區設定識別項 (LCID) 參數。 |
LibraryImportAttribute |
表示來源產生器應該建立函式來封送引數,而不是依賴執行時間在執行時間產生對等封送處理函式。 |
ManagedToNativeComInteropStubAttribute |
在 Managed 至 COM Interop 案例中,提供使用者自訂 Interop Stub 的支援。 |
Marshal |
提供方法的集合,方法用於配置 Unmanaged 記憶體、複製 Unmanaged 記憶體區塊和將 Managed 類型轉換為 Unmanaged 類型,也包括其他和 Unmanaged 程式碼互動時使用的方法。 |
MarshalAsAttribute |
表示如何在 Managed 和 Unmanaged 程式碼之間封送處理資料。 |
MarshalDirectiveException |
例外狀況,由封送處理器擲回於遭遇不支援的 MarshalAsAttribute 時。 |
MemoryMarshal |
提供與 、 ReadOnlyMemory<T> 、 Span<T> 和 ReadOnlySpan<T> 交互操作 Memory<T> 的方法。 |
NativeLibrary |
提供管理原生程式庫的 API。 |
NativeMemory |
這個類別包含主要用來管理原生記憶體的方法。 |
OptionalAttribute |
表示參數為選擇性。 |
OutAttribute |
表示資料應從被呼叫端封送處理至呼叫端。 |
PosixSignalContext |
提供事件的資料 PosixSignalRegistration 。 |
PosixSignalRegistration |
PosixSignal處理 。 |
PreserveSigAttribute |
表示應該隱藏 COM Interop 呼叫期間發生的 HRESULT 簽章轉換。 |
PrimaryInteropAssemblyAttribute |
表示使用屬性組件 (Assembly) 為主要 Interop 組件。 |
ProgIdAttribute |
允許使用者指定類別的 ProgId。 |
RegistrationServices |
提供一組服務用來從 COM 註冊和取消註冊 Managed 組件。 |
RuntimeEnvironment |
提供傳回 Common Language Runtime 環境的資訊之 |
RuntimeInformation |
提供 .NET 執行階段安裝的相關資訊。 |
SafeArrayRankMismatchException |
當連入 |
SafeArrayTypeMismatchException |
當連入 |
SafeBuffer |
提供可用於讀取和寫入的受控制記憶體緩衝區。 嘗試存取受控制緩衝區之外的記憶體 (不足和滿溢) 會引發例外狀況。 |
SafeHandle |
表示作業系統控制代碼的包裝函式類別 (Wrapper Class)。 這個類別必須被繼承。 |
SEHException |
代表結構化例外處理 (SEH) 錯誤。 |
SequenceMarshal |
提供與 ReadOnlySequence<T> 交互操作的方法集合。 |
SetWin32ContextInIDispatchAttribute |
這個屬性已被取代。 |
StandardOleMarshalObject |
使用標準 OLE STA 封送處理器,取代標準 Common Language Runtime (CLR) 無限制執行緒封送處理器。 |
StructLayoutAttribute |
讓您控制記憶體中類別或結構之資料欄位的實際配置。 |
SuppressGCTransitionAttribute |
指定發出未受控函式呼叫時,應略過記憶體回收轉換。 |
TypeIdentifierAttribute |
提供類型等價的支援。 |
TypeLibConverter |
提供一組服務,將 Managed 組件 (Assembly) 轉換為 COM 型別程式庫,反之亦然。 |
TypeLibFuncAttribute |
含有原來針對這個方法從 COM 型別程式庫匯入的 FUNCFLAGS。 |
TypeLibImportClassAttribute |
指定哪個 Type 會以獨佔方式使用介面。 此類別無法獲得繼承。 |
TypeLibTypeAttribute |
含有原來針對這個型別從 COM 型別程式庫匯入的 TYPEFLAGS。 |
TypeLibVarAttribute |
含有原來針對這個欄位從 COM 型別程式庫匯入的 VARFLAGS。 |
TypeLibVersionAttribute |
指定匯出型別程式庫的版本號碼。 |
UnknownWrapper |
包裝封送處理器應將其當做 |
UnmanagedCallConvAttribute |
指定呼叫 Unmanaged 程式碼中實作之 P/Invoke 方法所需的呼叫慣例。 |
UnmanagedCallersOnlyAttribute |
任何以 UnmanagedCallersOnlyAttribute 標記的方法,都可直接從機器碼呼叫。 函式語彙基元可使用 C# 中的 address-of 運算子載入至區域變數,並以回呼的形式傳遞至原生方法。 |
UnmanagedFunctionPointerAttribute |
控制當做 Unmanaged 函式指標在 Unmanaged 程式碼之間來回傳遞之委派簽章的封送處理行為。 此類別無法獲得繼承。 |
VariantWrapper |
將 |
結構
ArrayWithOffset |
在指定陣列中封裝陣列和位移。 |
BIND_OPTS |
請改用 BIND_OPTS。 |
BINDPTR |
請改用 BINDPTR。 |
CLong |
CLong 是不可變的實值型別,表示 |
ComWrappers.ComInterfaceDispatch |
COM 介面之函式分派的應用程式二進位介面。 |
ComWrappers.ComInterfaceEntry |
目標 VTable 的介面類別型與指標。 |
CONNECTDATA |
請改用 CONNECTDATA。 |
CULong |
CULong 是不可變的實值型別,表示 |
DISPPARAMS |
請改用 DISPPARAMS。 |
ELEMDESC |
請改用 ELEMDESC。 |
ELEMDESC.DESCUNION |
請改用 ELEMDESC.DESCUNION。 |
EXCEPINFO |
請改用 EXCEPINFO。 |
FILETIME |
請改用 FILETIME。 |
FUNCDESC |
請改用 FUNCDESC。 |
GCHandle |
提供從 Unmanaged 記憶體存取 Managed 物件的方法。 |
HandleRef |
將保有控制代碼的 Managed 物件包裝至要使用平台叫用傳遞至 Unmanaged 程式碼的資源。 |
IDLDESC |
請改用 IDLDESC。 |
NFloat |
NFloat 是不可變的實值型別,表示與原生整數大小相同的浮動類型。
它旨在用來作為 Managed/Unmanaged 界限上的交換類型,以在 32 位平臺上或 |
OSPlatform |
表示作業系統平台。 |
PARAMDESC |
請改用 PARAMDESC。 |
STATSTG |
請改用 STATSTG。 |
TYPEATTR |
請改用 TYPEATTR。 |
TYPEDESC |
請改用 TYPEDESC。 |
TYPELIBATTR |
請改用 TYPELIBATTR。 |
VARDESC |
請改用 VARDESC。 |
VARDESC.DESCUNION |
請改用 VARDESC.DESCUNION。 |
介面
列舉
委派
DllImportResolver |
提供用來透過回呼解析原生程式庫的委派。 |
ObjectCreationDelegate |
建立 COM 物件。 |
備註
此命名空間的成員提供數種功能類別,如下表所示。 屬性控制封送處理行為,例如如何排列結構或如何表示字串。 最重要的屬性是 DllImportAttribute ,您用來定義用來存取 Unmanaged API 的平台叫用方法,以及 MarshalAsAttribute ,用來指定在 Managed 和 Unmanaged 記憶體之間封送處理資料的方式。
意見反應
提交並檢視相關的意見反應