DllImportAttribute.ThrowOnUnmappableChar 欄位
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在無法對應的 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預設值。 一律會啟用最適合的對應,而且不會擲回任何例外狀況。 請注意,此組合可能會危害您的安全性模型。