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預設值。 一律會啟用最適合的對應,而且不會擲回任何例外狀況。 請注意,此組合可能會危害您的安全性模型。
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應