DllImportAttribute.BestFitMapping-Feld

 

Veröffentlicht: Oktober 2016

Aktiviert oder deaktiviert die Zuordnung mit ähnlichen Verhalten bei der Konvertierung von Unicode-Zeichen in ANSI-Zeichen.

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

Syntax

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

Feldwert

Type: System.Boolean

Hinweise

Wenn true, optimale Zuordnungsverhalten aktiviert ist; andernfalls Zuordnung mit ähnlichen Zeichen ist deaktiviert. Die BestFitMapping Feld true standardmäßig. Außerkraftsetzen von Einstellungen für dieses Feld auf alle Einstellungen für die System.Runtime.InteropServices.BestFitMappingAttribute Attribut.

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, statt die Declare Anweisung, um eine DLL-Funktion in verwaltetem Code zu definieren. Festlegen der BestFitMapping 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
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1

Siehe auch

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

Zurück zum Anfang