Freigeben über


DllImportAttribute.ThrowOnUnmappableChar Feld

Definition

Aktiviert bzw. deaktiviert das Auslösen einer Ausnahme bei einem nicht zuzuordnenden Unicode-Zeichen, das in das ANSI-Zeichen „?“ konvertiert wird.

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

Feldwert

Beispiele

In einigen Fällen verwenden Visual Basic-Entwickler die DllImportAttribute , um eine DLL-Funktion in verwaltetem Code zu definieren, anstatt die Declare -Anweisung zu verwenden. Das Festlegen des ThrowOnUnmappableChar Felds ist einer dieser Fälle. Im folgenden Beispiel wird gezeigt, wie Sie die strengste Zeichenzuordnungssicherheit auf eine Plattformaufrufmethode anwenden, indem Sie den ANSI-Zeichensatz angeben, das Zuordnungsverhalten am besten deaktivieren und eine Ausnahme für nicht zugeordnete Unicode-Zeichen auslösen.

[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

Hinweise

true , um anzugeben, dass jedes Mal eine Ausnahme ausgelöst wird, wenn der Interop marshaler ein nicht verwendbares Zeichen konvertiert; false , um anzugeben, dass das ThrowOnUnmappableChar Feld deaktiviert ist. Dieses Feld ist standardmäßig auf false festgelegt.

Achtung

Bestimmte Unicode-Zeichen werden in gefährliche Zeichen konvertiert, z. B. der umgekehrte Schrägstrich "\", der versehentlich einen Pfad ändern kann. Wenn Sie das ThrowOnUnmappableChar Feld auf truefestlegen, können Sie dem Aufrufer das Vorhandensein eines nicht verwendbaren Zeichens signalisieren, indem Sie eine Ausnahme auslösen.

Achtung

Sie können die von den BestFitMapping Feldern und ThrowOnUnmappableChar bereitgestellten Standardwerte nicht ändern, wenn Sie ein verwaltetes Array übergeben, dessen Elemente ANSI-Chars oder LPSTRs sind, in ein nicht verwaltetes sicheres Array. Die am besten geeignete Zuordnung ist immer aktiviert, und es wird keine Ausnahme ausgelöst. Beachten Sie, dass diese Kombination Ihr Sicherheitsmodell gefährden kann.

Gilt für:

Weitere Informationen