DllImportAttribute.BestFitMapping 欄位
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將 Unicode 字元轉換成 ANSI 字元時,啟用或停用最適合對應行為。
public: bool BestFitMapping;
public bool BestFitMapping;
val mutable BestFitMapping : bool
Public BestFitMapping As Boolean
欄位值
範例
在某些情況下,Visual Basic 開發人員會使用 DllImportAttribute,而不是 Declare
語句,在 Managed 程式代碼中定義 DLL 函式。
BestFitMapping設定欄位是其中一個案例。 下列範例示範如何藉由指定 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
為 ,則會啟用最適合的對應行為,否則會停用最適合的對應。 欄位 BestFitMapping 預設為 true
。 此欄位的設定會覆寫屬性的任何層級設定 System.Runtime.InteropServices.BestFitMappingAttribute 。
警告
某些 Unicode 字元會轉換成危險字元,例如反斜杠 '\' 字元,這可能會不小心變更路徑。 藉由將 ThrowOnUnmappableChar 欄位設定為 true
,您可以藉由擲回例外狀況,向呼叫端發出無法套用字元的訊號。
警告
將元素為 ANSI Chars 或 LPSTR 的 Managed 陣列傳遞至 Unmanaged 安全陣列時,您無法變更和 ThrowOnUnmappableChar 欄位所提供的BestFitMapping預設值。 一律會啟用最適合的對應,而且不會擲回任何例外狀況。 請注意,此組合可能會危害您的安全性模型。