DllImportAttribute.ThrowOnUnmappableChar Pole
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Włącza lub wyłącza zgłaszanie wyjątku dla niezatwierdzonego znaku Unicode, który jest konwertowany na znak ANSI "?"
public: bool ThrowOnUnmappableChar;
public bool ThrowOnUnmappableChar;
val mutable ThrowOnUnmappableChar : bool
Public ThrowOnUnmappableChar As Boolean
Wartość pola
Przykłady
W niektórych przypadkach deweloperzy języka Visual Basic używają DllImportAttribute klasy do definiowania funkcji DLL w kodzie zarządzanym zamiast używania instrukcji Declare
.
ThrowOnUnmappableChar Ustawienie pola jest jednym z tych przypadków. W poniższym przykładzie pokazano, jak zastosować najostrzejsze zabezpieczenia mapowania znaków do definicji metody wywołania platformy, określając zestaw znaków ANSI, wyłączając zachowanie mapowania najlepiej pasującego i zgłaszając wyjątek dla niezamapowanych znaków Unicode.
[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
Uwagi
true
aby wskazać, że wyjątek jest zgłaszany za każdym razem, gdy marshaler międzyoperacyjny konwertuje nienadzoralny znak; false
aby wskazać, że ThrowOnUnmappableChar pole jest wyłączone. To pole jest false
domyślnie.
Przestroga
Niektóre znaki Unicode są konwertowane na niebezpieczne znaki, takie jak ukośnik odwrotny "\", który może przypadkowo zmienić ścieżkę. Ustawiając ThrowOnUnmappableChar pole na true
, można zasygnalizować obecność niezastosowalnego znaku do obiektu wywołującego, zgłaszając wyjątek.
Przestroga
Nie można zmienić wartości domyślnych udostępnianych przez BestFitMapping pola i ThrowOnUnmappableChar podczas przekazywania tablicy zarządzanej, której elementy to ANSI Chars lub LPSTRs do niezarządzanej bezpiecznej tablicy. Mapowanie najlepszego dopasowania jest zawsze włączone i nie jest zgłaszany żaden wyjątek. Należy pamiętać, że ta kombinacja może naruszyć bezpieczeństwo modelu zabezpieczeń.