DllImportAttribute.ThrowOnUnmappableChar Bidang

Definisi

Mengaktifkan atau menonaktifkan pelemparan pengecualian pada karakter Unicode yang tidak dapat dipetakan yang dikonversi ke karakter "?" ANSI.

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

Nilai Bidang

Contoh

Dalam beberapa kasus, pengembang Visual Basic menggunakan DllImportAttribute untuk menentukan fungsi DLL dalam kode terkelola, alih-alih menggunakan Declare pernyataan . ThrowOnUnmappableChar Mengatur bidang adalah salah satu kasus tersebut. Contoh berikut menunjukkan cara menerapkan keamanan pemetaan karakter paling ketat ke definisi metode pemanggilan platform dengan menentukan set karakter ANSI, menonaktifkan perilaku pemetaan yang paling sesuai, dan melemparkan pengecualian pada karakter Unicode yang tidak dipetakan.

[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

Keterangan

true untuk menunjukkan bahwa pengecualian dilemparkan setiap kali interop marshaler mengonversi karakter yang tidak dapat dipetakan; false untuk menunjukkan bahwa bidang dinonaktifkan ThrowOnUnmappableChar . Bidang ini false secara default.

Perhatian

Karakter Unicode tertentu dikonversi ke karakter berbahaya, seperti karakter garis miring terbalik '\', yang secara tidak sengaja dapat mengubah jalur. Dengan mengatur ThrowOnUnmappableChar bidang ke true, Anda dapat memberi sinyal keberadaan karakter yang tidak dapat dipetakan ke pemanggil dengan melemparkan pengecualian.

Perhatian

Anda tidak dapat mengubah nilai default yang disediakan oleh BestFitMapping bidang dan ThrowOnUnmappableChar saat meneruskan array terkelola yang elemennya adalah Karakter ANSI atau LPSTR ke array aman yang tidak dikelola. Pemetaan yang paling sesuai selalu diaktifkan dan tidak ada pengecualian yang dilemparkan. Ketahuilah bahwa kombinasi ini dapat membahayakan model keamanan Anda.

Berlaku untuk

Lihat juga