Freigeben über


DllImportAttribute.ThrowOnUnmappableChar-Feld

 

Veröffentlicht: Oktober 2016

Aktiviert bzw. deaktiviert das Auslösen einer Ausnahme bei einer nicht zuzuordnenden Unicode-Zeichen, die in ein ANSI konvertiert wird "?" Zeichen.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Syntax

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

Feldwert

Type: System.Boolean

Hinweise

true um anzugeben, dass jedes Mal eine Ausnahme ausgelöst wird, wenn der Interop-Marshaller ein zuzuordnendes Zeichen konvertiert. false Gibt an, dass die ThrowOnUnmappableChar Feld ist deaktiviert. Dieses Feld ist false standardmäßig.

Die common Language Runtime konvertiert wird, in ANSI-Zeichen, die alle verwalteten Unicode-Zeichen, die eine nicht verwaltete Methode übergeben unter Windows 98 oder Windows Me. Zuordnung mit ähnlichen Zeichen ermöglicht den Interop-Marshaller eine-Zeichen angeben, wenn keine genaue Übereinstimmung vorhanden ist. Der Marshaller konvertiert z. B. das copyright Unicode-Zeichen 'c', nicht verwaltete Methoden, die ANSI-Zeichen akzeptieren. Einige Zeichen ist keine optimale Darstellung; Diese Zeichen heißen nicht zugeordnet werden kann. Zuzuordnenden Zeichen werden normalerweise in der Standardeinstellung '?' ANSI-Zeichen.

Achtung

Bestimmte Unicode-Zeichen werden in gefährliche Zeichen konvertiert, wie z. B. der umgekehrte Schrägstrich ' \'-Zeichen, die versehentlich einen Pfad ändern können. Durch Festlegen der ThrowOnUnmappableChar Feld true, Sie können das Vorhandensein eines nicht zuzuordnenden Zeichens an den Aufrufer durch Auslösen einer Ausnahme zu signalisieren.

Achtung

Sie können nicht die Standardwerte durch Ändern der BestFitMapping und ThrowOnUnmappableChar Felder, wenn einem verwaltetes Array übergeben, dessen Elemente ANSI-Zeichen oder LPSTRs sind an ein nicht verwaltetes sicheres Array wird. Zuordnung mit ähnlichen Zeichen ist immer aktiviert, und es wird keine Ausnahme ausgelöst. Denken Sie daran, dass diese Kombination Ihr Sicherheitsmodell gefährden kann.

Beispiele

In einigen Fällen verwenden Visual Basic-Entwickler die DllImportAttribute definieren Sie eine DLL-Funktion in verwaltetem Code anstelle der Declare Anweisung. Festlegen der ThrowOnUnmappableChar Feld ist ein solcher Fall. Das folgende Beispiel zeigt, wie die strengste angewendet Zeichen Zuordnung Sicherheit zu einer Plattform aufrufen Methodendefinitionen durch Angeben der ANSI-Zeichensatz, optimale Zuordnungsverhalten deaktivieren und eine Ausnahme auf nicht zugeordnete Unicode-Zeichen.

[DllImport("My.dll", CharSet=CharSet.Ansi,
               BestFitMapping=false,
               ThrowOnUnmappableChar=true)]
static extern int SomeFuncion2(int parm);
<DllImport("My.dll", CharSet := CharSet.Ansi, _
               BestFitMapping := false, _
               ThrowOnUnmappableChar := true)> _
Public Shared Function SomeFuncion2(parm As Integer) As Integer
End Function
[DllImport("My.dll", CharSet=CharSet::Ansi,
               BestFitMapping=false,
               ThrowOnUnmappableChar=true)]
int SomeFuncion2(int parm);

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone
Verfügbar seit 8.1

Siehe auch

CharSet
BestFitMapping
DllImportAttribute-Klasse
System.Runtime.InteropServices-Namespace
Interop Marshaling

Zurück zum Anfang