다음을 통해 공유


DllImportAttribute.BestFitMapping 필드

정의

유니코드 문자를 ANSI 문자로 변환할 때 가장 적합한 매핑 동작을 활성화 또는 비활성화합니다.

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

필드 값

예제

경우에 따라 Visual Basic 개발자는 문 대신 Declare 를 사용하여 DllImportAttribute관리 코드에서 DLL 함수를 정의합니다. BestFitMapping 필드 설정은 이러한 경우 중 하나입니다. 다음 예제에서는 ANSI 문자 집합을 지정하고, 최상의 맞춤 매핑 동작을 사용하지 않도록 설정하고, 매핑되지 않은 유니코드 문자에 예외를 throw하여 플랫폼 호출 메서드 정의에 가장 엄격한 문자 매핑 보안을 적용하는 방법을 보여 줍니다.

[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 합니다.

주의

특정 유니코드 문자는 실수로 경로를 변경할 수 있는 백슬래시 '\' 문자와 같은 위험한 문자로 변환됩니다. 필드를 true로 설정 ThrowOnUnmappableChar 하면 예외를 throw하여 호출자에게 적용할 수 없는 문자가 있는지 신호를 표시할 수 있습니다.

주의

ANSI Chars 또는 LPSTR인 관리되는 배열을 관리되지 않는 안전 배열에 전달할 때 및 ThrowOnUnmappableChar 필드에서 제공하는 BestFitMapping 기본값을 변경할 수 없습니다. 가장 적합한 매핑은 항상 사용하도록 설정되며 예외가 throw되지 않습니다. 이 조합은 보안 모델을 손상할 수 있습니다.

적용 대상

추가 정보