DllImportAttribute.ThrowOnUnmappableChar 필드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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되지 않습니다. 이 조합은 보안 모델을 손상할 수 있습니다.
적용 대상
추가 정보
.NET