다음을 통해 공유


DllImportAttribute.ThrowOnUnmappableChar 필드

정의

ANSI "?" 문자로 변환되는 매핑할 수 없는 유니코드 문자가 나오면 예외를 throw하거나 throw하지 않습니다.

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

필드 값

예제

경우에 따라 Visual Basic 개발자는 문을 사용하는 대신 를 사용하여 DllImportAttribute 관리 코드에서 DLL 함수를 Declare 정의합니다. 필드 설정 ThrowOnUnmappableChar 은 이러한 경우 중 하나입니다. 다음 예제에서는 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 interop 마샬러가 적용할 수 없는 문자를 변환할 때마다 예외가 throw됨을 나타내려면 입니다. false 필드가 비활성화 ThrowOnUnmappableChar 되었음을 나타냅니다. 이 필드는 기본적으로 false입니다.

주의

특정 유니코드 문자는 실수로 경로를 변경할 수 있는 백슬래시 '\' 문자와 같은 위험한 문자로 변환됩니다. 필드를 로 ThrowOnUnmappableChartrue설정하면 예외를 throw하여 호출자에게 적용할 수 없는 문자의 존재를 알리는 신호를 보낼 수 있습니다.

주의

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

적용 대상

추가 정보