Compartir vía


DllImportAttribute.ThrowOnUnmappableChar Campo

Definición

Habilita o deshabilita el inicio de una excepción cuando un carácter Unicode que no se puede asignar se convierte en un carácter ANSI "?".

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

Valor de campo

Ejemplos

En algunos casos, los desarrolladores de Visual Basic usan para DllImportAttribute definir una función DLL en código administrado, en lugar de usar la Declare instrucción . Establecer el ThrowOnUnmappableChar campo es uno de esos casos. En el ejemplo siguiente se muestra cómo aplicar la seguridad de asignación de caracteres más estricta a las definiciones de métodos de invocación de plataforma especificando el juego de caracteres ANSI, deshabilitando el comportamiento de asignación de ajuste óptimo e iniciando una excepción en caracteres Unicode sin asignar.

[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

Comentarios

true para indicar que se produce una excepción cada vez que el serializador de interoperabilidad convierte un carácter no aplicable; false para indicar que el ThrowOnUnmappableChar campo está deshabilitado. Este campo es false de forma predeterminada.

Precaución

Algunos caracteres Unicode se convierten en caracteres peligrosos, como el carácter de barra diagonal inversa '\', que puede cambiar accidentalmente una ruta de acceso. Al establecer el ThrowOnUnmappableChar campo trueen , puede indicar la presencia de un carácter no aplicable al autor de la llamada iniciando una excepción.

Precaución

No se pueden cambiar los valores predeterminados proporcionados por los BestFitMapping campos y ThrowOnUnmappableChar al pasar una matriz administrada cuyos elementos son caracteres ANSI o LPSTR a una matriz segura no administrada. La asignación más adecuada siempre está habilitada y no se produce ninguna excepción. Tenga en cuenta que esta combinación puede poner en peligro el modelo de seguridad.

Se aplica a

Consulte también