Condividi tramite


DllImportAttribute.ThrowOnUnmappableChar Campo

Definizione

Abilita o disabilita la generazione di un'eccezione su un carattere Unicode di cui non è possibile eseguire il mapping convertito in un carattere ANSI "?".

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

Valore del campo

Esempio

In alcuni casi, gli sviluppatori di Visual Basic usano per DllImportAttribute definire una funzione DLL nel codice gestito anziché usare l'istruzione Declare . L'impostazione del ThrowOnUnmappableChar campo è uno di questi casi. Nell'esempio seguente viene illustrato come applicare la sicurezza più rigorosa del mapping dei caratteri a una piattaforma richiama le definizioni dei metodi specificando il set di caratteri ANSI, disabilitando il comportamento di mapping più adatto e generando un'eccezione su caratteri Unicode non mappati.

[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

Commenti

true per indicare che viene generata un'eccezione ogni volta che il marshalling dell'interoperabilità converte un carattere non valido; false per indicare che il ThrowOnUnmappableChar campo è disabilitato. Questo campo è false per impostazione predefinita.

Attenzione

Alcuni caratteri Unicode vengono convertiti in caratteri pericolosi, ad esempio la barra rovesciata '\', che può modificare inavvertitamente un percorso. Impostando il ThrowOnUnmappableChar campo su true, è possibile segnalare la presenza di un carattere non valido al chiamante generando un'eccezione.

Attenzione

Non è possibile modificare i valori predefiniti forniti dai BestFitMapping campi e ThrowOnUnmappableChar quando si passa una matrice gestita i cui elementi sono caratteri ANSI o LPSTR a una matrice sicura non gestita. Il mapping ottimale è sempre abilitato e non viene generata alcuna eccezione. Tenere presente che questa combinazione può compromettere il modello di sicurezza.

Si applica a

Vedi anche