System.Runtime.InteropServices 命名空間

提供多種成員,可以支援 COM Interop 和平台叫用服務。 如果您不熟悉這些服務,請參閱與 Unmanaged 程式碼互通

類別

AllowReversePInvokeCallsAttribute

允許 Unmanaged 方法呼叫 Managed 方法。

AutomationProxyAttribute

指定類型是否應使用 Automation 封送處理器或自訂的 Proxy 和 Stub 來進行封送處理。

BestFitMappingAttribute

控制 Unicode 字元是否要轉換成最相近的 ANSI 字元。

BStrWrapper

VT_BSTR 型別的資料從 Managed 封送處理成 Unmanaged 程式碼。 此類別無法獲得繼承。

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

包裝封送處理器應將其當做 VT_CY 來封送處理的物件。

DefaultCharSetAttribute

指定 CharSet 列舉型別的值。 此類別無法獲得繼承。

DefaultDllImportSearchPathsAttribute

指定用來搜尋提供平台叫用函式之 DLL 的路徑。

DefaultParameterValueAttribute

設定從支援預設參數的語言呼叫參數時,該參數的預設值。 此類別無法獲得繼承。

DispatchWrapper

包裝封送處理器應將其當做 VT_DISPATCH 來封送處理的物件。

DispIdAttribute

指定方法、欄位或屬性的 COM 分派識別項 (DISPID)。

DllImportAttribute

表示由 Unmanaged 動態連結程式庫 (DLL) 公開做為靜態進入點的屬性化方法。

DynamicInterfaceCastableImplementationAttribute

GetInterfaceImplementation(RuntimeTypeHandle) 所傳回任何類型所需的屬性。

ErrorWrapper

包裝封送處理器應將其當做 VT_ERROR 來封送處理的物件。

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 使用哪個 IDispatch 實作。

ImmutableCollectionsMarshal

不安全的類別,提供一組方法來存取不可變集合的基礎資料標記法。

ImportedFromTypeLibAttribute

指示在組件內定義的型別原來是定義在型別程式庫中。

InAttribute

表示資料應從呼叫端封送處理至被呼叫端,但不會封送處理回呼叫端。

InterfaceTypeAttribute

指示 Managed 介面公開給 COM 時是否為雙重、僅分派或 IUnknown

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 環境的資訊之 static 方法的集合,。

RuntimeInformation

提供 .NET 執行階段安裝的相關資訊。

SafeArrayRankMismatchException

當連入 SAFEARRAY 的順序不符合 Managed 簽章中指定的順序時,所擲回的例外狀況。

SafeArrayTypeMismatchException

當連入 SAFEARRAY 的型別不符合 Managed 簽章中指定的型別時,所擲回的例外狀況。

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

包裝封送處理器應將其當做 VT_UNKNOWN 來封送處理的物件。

UnmanagedCallConvAttribute

指定呼叫 Unmanaged 程式碼中實作之 P/Invoke 方法所需的呼叫慣例。

UnmanagedCallersOnlyAttribute

任何以 UnmanagedCallersOnlyAttribute 標記的方法,都可直接從機器碼呼叫。 函式語彙基元可使用 C# 中的 address-of 運算子載入至區域變數,並以回呼的形式傳遞至原生方法。

UnmanagedFunctionPointerAttribute

控制當做 Unmanaged 函式指標在 Unmanaged 程式碼之間來回傳遞之委派簽章的封送處理行為。 此類別無法獲得繼承。

VariantWrapper

VT_VARIANT | VT_BYREF 型別的資料從 Managed 封送處理成 Unmanaged 程式碼。 此類別無法獲得繼承。

WasmImportLinkageAttribute

提供多種成員,可以支援 COM Interop 和平台叫用服務。 如果您不熟悉這些服務,請參閱與 Unmanaged 程式碼互通

結構

ArrayWithOffset

在指定陣列中封裝陣列和位移。

BIND_OPTS

請改用 BIND_OPTS

BINDPTR

請改用 BINDPTR

CLong

CLong 是不可變的實值型別,表示 long C 和 C++ 中的類型。 它是用來作為 Managed/Unmanaged 界限上的交換類型,以精確地表示使用 型別的 long Managed 程式碼 Unmanaged API。 此類型在所有 Windows 平臺和 32 位 Unix 平臺上都有 32 位的儲存體。 它在 64 位 Unix 平臺上有 64 位的儲存體。

ComWrappers.ComInterfaceDispatch

COM 介面之函式分派的應用程式二進位介面。

ComWrappers.ComInterfaceEntry

目標 VTable 的介面類別型與指標。

CONNECTDATA

請改用 CONNECTDATA

CULong

CULong 是不可變的實值型別,表示 unsigned long C 和 C++ 中的類型。 它是用來作為 Managed/Unmanaged 界限上的交換類型,以精確地表示使用 型別的 unsigned long Managed 程式碼 Unmanaged API。 此類型在所有 Windows 平臺和 32 位 Unix 平臺上都有 32 位的儲存體。 它在 64 位 Unix 平臺上有 64 位的儲存體。

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 位平臺上或 double 64 位平臺上使用 C 或 C++ float 類型別名的 Managed 程式碼 Unmanaged API 中正確表示,例如 Apple 所提供程式庫中的 CGFloat 類型。

OSPlatform

表示作業系統平台。

PARAMDESC

請改用 PARAMDESC

STATSTG

請改用 STATSTG

TYPEATTR

請改用 TYPEATTR

TYPEDESC

請改用 TYPEDESC

TYPELIBATTR

請改用 TYPELIBATTR

VARDESC

請改用 VARDESC

VARDESC.DESCUNION

請改用 VARDESC.DESCUNION

介面

_Activator

Activator 類別公開到 Unmanaged 程式碼。

_Assembly

公開 Assembly 類別的公用成員至 Unmanaged 程式碼。

_AssemblyBuilder

AssemblyBuilder 類別公開到 Unmanaged 程式碼。

_AssemblyName

AssemblyName 類別公開到 Unmanaged 程式碼。

_Attribute

Attribute 類別公開到 Unmanaged 程式碼。

_ConstructorBuilder

ConstructorBuilder 類別公開到 Unmanaged 程式碼。

_ConstructorInfo

公開 ConstructorInfo 類別的公用成員至 Unmanaged 程式碼。

_CustomAttributeBuilder

CustomAttributeBuilder 類別公開到 Unmanaged 程式碼。

_EnumBuilder

EnumBuilder 類別公開到 Unmanaged 程式碼。

_EventBuilder

EventBuilder 類別公開到 Unmanaged 程式碼。

_EventInfo

公開 EventInfo 類別的公用成員至 Unmanaged 程式碼。

_Exception

公開 Exception 類別的公用成員至 Unmanaged 程式碼。

_FieldBuilder

FieldBuilder 類別公開到 Unmanaged 程式碼。

_FieldInfo

公開 FieldInfo 類別的公用成員至 Unmanaged 程式碼。

_ILGenerator

ILGenerator 類別公開到 Unmanaged 程式碼。

_LocalBuilder

LocalBuilder 類別公開到 Unmanaged 程式碼。

_MemberInfo

公開 MemberInfo 類別的公用成員至 Unmanaged 程式碼。

_MethodBase

公開 MethodBase 類別的公用成員至 Unmanaged 程式碼。

_MethodBuilder

MethodBuilder 類別公開到 Unmanaged 程式碼。

_MethodInfo

公開 MethodInfo 類別的公用成員至 Unmanaged 程式碼。

_MethodRental

MethodRental 類別公開到 Unmanaged 程式碼。

_Module

Module 類別公開到 Unmanaged 程式碼。

_ModuleBuilder

ModuleBuilder 類別公開到 Unmanaged 程式碼。

_ParameterBuilder

ParameterBuilder 類別公開到 Unmanaged 程式碼。

_ParameterInfo

ParameterInfo 類別公開到 Unmanaged 程式碼。

_PropertyBuilder

PropertyBuilder 類別公開到 Unmanaged 程式碼。

_PropertyInfo

公開 PropertyInfo 類別的公用成員至 Unmanaged 程式碼。

_SignatureHelper

SignatureHelper 類別公開到 Unmanaged 程式碼。

_Thread

Thread 類別公開到 Unmanaged 程式碼。

_Type

公開 Type 類別的公用成員至 Unmanaged 程式碼。

_TypeBuilder

TypeBuilder 類別公開到 Unmanaged 程式碼。

ICustomAdapter

提供方法,讓用戶端存取實際物件,而不是自訂封送處理器所分配的配接器物件。

ICustomFactory

允許使用者撰寫擴充 MarshalByRefObject 的 Managed 物件的啟動程式碼。

ICustomMarshaler

提供用來處理方法呼叫的自訂包裝函式。

ICustomQueryInterface

讓開發人員提供 IUnknown::QueryInterface(REFIID riid, void **ppvObject) 方法的自訂 Managed 實作。

IDynamicInterfaceCastable

用來參與類型轉換失敗的介面。

IRegistrationServices

提供一組服務用來從 COM 註冊和取消註冊 Managed 組件。

ITypeLibConverter

提供一組服務,將 Managed 組件 (Assembly) 轉換為 COM 型別程式庫,反之亦然。

ITypeLibExporterNameProvider

在匯出至型別程式庫時提供對名稱大小寫的控制。

ITypeLibExporterNotifySink

提供回呼 (Callback) 機制給組件 (Assembly) 轉換子,以通知呼叫端轉換的狀態,並將呼叫端包含到轉換程序中。

ITypeLibImporterNotifySink

提供回呼 (Callback) 機制給型別程式庫轉換子,以通知呼叫端轉換的狀態,並將呼叫端包含到轉換程序中。

UCOMIBindCtx

請改用 BIND_OPTS

UCOMIConnectionPoint

請改用 IConnectionPoint

UCOMIConnectionPointContainer

請改用 IConnectionPointContainer

UCOMIEnumConnectionPoints

請改用 IEnumConnectionPoints

UCOMIEnumConnections

請改用 IEnumConnections

UCOMIEnumMoniker

請改用 IEnumMoniker

UCOMIEnumString

請改用 IEnumString

UCOMIEnumVARIANT

請改用 IEnumVARIANT

UCOMIMoniker

請改用 IMoniker

UCOMIPersistFile

請改用 IPersistFile

UCOMIRunningObjectTable

請改用 IRunningObjectTable

UCOMIStream

請改用 IStream

UCOMITypeComp

請改用 ITypeComp

UCOMITypeInfo

請改用 ITypeInfo

UCOMITypeLib

請改用 ITypeLib

列舉

Architecture

指出處理器架構。

AssemblyRegistrationFlags

定義註冊組件時所用的旗標集。

CALLCONV

請改用 CALLCONV

CallingConvention

指定呼叫 Unmanaged 程式碼中實作之方法所需的呼叫慣例。

CharSet

指定封送處理的字串應使用的字元集。

ClassInterfaceType

識別為類別所產生的類別介面類型。

ComInterfaceType

識別如何將介面公開至 COM。

ComMemberType

描述 COM 成員的類型。

CreateComInterfaceFlags

指定 GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) 方法的旗標。

CreateObjectFlags

指定 GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) 方法的旗標。

CustomQueryInterfaceMode

表示 GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) 方法的 IUnknown::QueryInterface 呼叫是否會使用 ICustomQueryInterface 介面。

CustomQueryInterfaceResult

提供 GetInterface(Guid, IntPtr) 方法的傳回值。

DESCKIND

請改用 DESCKIND

DllImportSearchPath

指定用來搜尋提供平台叫用函式之 DLL 的路徑。

ExporterEventKind

描述類型程式庫匯出工具在匯出類型程式庫時進行的回呼。

FUNCFLAGS

請改用 FUNCFLAGS

FUNCKIND

請改用 FUNCKIND

GCHandleType

表示類型可以配置的控制碼 GCHandle 類型。

IDispatchImplType

表示要用於特定類別的 IDispatch 實作。

IDLFLAG

請改用 IDLFLAG

IMPLTYPEFLAGS

請改用 IMPLTYPEFLAGS

ImporterEventKind

描述型別程式庫匯入工具在匯入型別程式庫時進行的回呼 (Callback)。

INVOKEKIND

請改用 INVOKEKIND

LayoutKind

控制匯出至 Unmanaged 程式碼時的物件配置。

LIBFLAGS

請改用 LIBFLAGS

PARAMFLAG

請改用 PARAMFLAG

PosixSignal

指定 POSIX 訊號。

RegistrationClassContext

指定一組執行內容,其中類別物件將可讓建構執行個體的要求使用。

RegistrationConnectionType

定義類別物件的連接類型。

StringMarshalling

指定如何封送處理產生的 p/invokes 字串

SYSKIND

請改用 SYSKIND

TYPEFLAGS

請改用 TYPEFLAGS

TYPEKIND

請改用 TYPEKIND

TypeLibExporterFlags

指示型別程式庫應該如何產生。

TypeLibFuncFlags

描述匯入這個方法之來源 COM 型別程式庫中 FUNCFLAGS 的原始設定。

TypeLibImporterFlags

指示組件 (Assembly) 應該如何產生。

TypeLibTypeFlags

描述匯入這個型別之來源 COM 型別程式庫中 TYPEFLAGS 的原始設定。

TypeLibVarFlags

描述匯入這個變數之來源 COM 型別程式庫中 VARFLAGS 的原始設定。

UnmanagedType

識別如何封送處理參數或欄位至 Unmanaged 程式碼。

VarEnum

指示從 Managed 至 Unmanaged 程式碼封送處理陣列為 SafeArray 時如何封送處理陣列元素。

VARFLAGS

請改用 VARFLAGS

委派

DllImportResolver

提供用來透過回呼解析原生程式庫的委派。

ObjectCreationDelegate

建立 COM 物件。

備註

此命名空間的成員提供數種功能類別,如下表所示。 屬性控制封送處理行為,例如如何排列結構或如何表示字串。 最重要的屬性是 DllImportAttribute ,您用來定義用來存取 Unmanaged API 的平台叫用方法,以及 MarshalAsAttribute ,用來指定在 Managed 和 Unmanaged 記憶體之間封送處理資料的方式。