DllImportAttribute.ThrowOnUnmappableChar Bidang
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 cocok, 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 marshaler interop 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 bidang ke ThrowOnUnmappableChartrue
, 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 pas selalu diaktifkan dan tidak ada pengecualian yang dilemparkan. Ketahuilah bahwa kombinasi ini dapat membahayakan model keamanan Anda.