DllImportAttribute.ThrowOnUnmappableChar 欄位

定義

在無法對應的 Unicode 字元轉換為 ANSI "?" 字元時,啟用或停用例外狀況的擲回。

public: bool ThrowOnUnmappableChar;
public bool ThrowOnUnmappableChar;
val mutable ThrowOnUnmappableChar : bool
Public ThrowOnUnmappableChar As Boolean 

欄位值

範例

在某些情況下,Visual Basic 開發人員會使用 DllImportAttribute 在 Managed 程式代碼中定義 DLL 函式,而不是使用 Declare 語句。 ThrowOnUnmappableChar設定欄位是其中一個案例。 下列範例示範如何藉由指定 ANSI 字元集、停用最適合的對應行為,以及在未對應的 Unicode 字元上擲回例外狀況,將最嚴格的字元對應安全性套用至平臺調用方法定義。

[DllImport("My.dll", CharSet = CharSet::Ansi,
    BestFitMapping = false,
    ThrowOnUnmappableChar = true)]
int SomeFuncion2(int parm);
[DllImport("My.dll", CharSet = CharSet.Ansi,
    BestFitMapping = false,
    ThrowOnUnmappableChar = true)]
internal static extern int SomeFuncion2(int parm);
<DllImport("My.dll", CharSet:=CharSet.Ansi,
    BestFitMapping:=False,
    ThrowOnUnmappableChar:=True)>
Friend Shared Function SomeFuncion2(parm As Integer) As Integer
End Function

備註

true 表示每次 Interop 封送處理器轉換無法套用的字元時,都會擲回例外狀況; false 表示 ThrowOnUnmappableChar 欄位已停用。 此欄位預設為 false

警告

某些 Unicode 字元會轉換成危險字元,例如反斜杠 '\' 字元,這可能會不小心變更路徑。 藉由將 ThrowOnUnmappableChar 欄位設定為 true,您可以藉由擲回例外狀況,向呼叫端發出無法套用字元的訊號。

警告

將元素為 ANSI Chars 或 LPSTR 的 Managed 陣列傳遞至 Unmanaged 安全陣列時,您無法變更和 ThrowOnUnmappableChar 欄位所提供的BestFitMapping預設值。 一律會啟用最適合的對應,而且不會擲回任何例外狀況。 請注意,此組合可能會危害您的安全性模型。

適用於

另請參閱