DllImportAttribute.SetLastError Bidang

Definisi

Menunjukkan apakah penerima panggilan menetapkan kesalahan (SetLastError di Windows atau errno di platform lain) sebelum kembali dari metode yang diatribusikan.

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

Nilai Bidang

Contoh

Dalam beberapa kasus, pengembang Visual Basic menggunakan DllImportAttribute, alih-alih menggunakan Declare pernyataan , untuk menentukan fungsi DLL dalam kode terkelola. SetLastError Mengatur bidang adalah salah satu kasus tersebut.

[DllImport("user32.dll", SetLastError = true)]
int MessageBoxA(IntPtr hWnd, String^ Text,
    String^ Caption, unsigned int Type);
internal static class NativeMethods
{
    [DllImport("user32.dll", SetLastError = true)]
    internal static extern int MessageBoxA(
        IntPtr hWnd, string lpText, string lpCaption, uint uType);
}
Friend Class NativeMethods
    <DllImport("user32.dll", SetLastError:=True)>
    Friend Shared Function MessageBoxA(hWnd As IntPtr, lpText As String,
        lpCaption As String, uType As UInteger) As Integer
    End Function
End Class

Keterangan

true untuk menunjukkan bahwa penerima panggilan akan mengatur kesalahan melalui SetLastError pada Windows atau errno di platform lain; jika tidak, false. Default adalah false.

Jika bidang ini diatur ke true, runtime marshaler memanggil GetLastError atau errno dan menyimpan cache nilai yang dikembalikan untuk mencegahnya ditimpa oleh panggilan API lainnya. Anda dapat mengambil kode kesalahan dengan memanggil GetLastPInvokeError pada .NET 6.0 ke atas atau GetLastWin32Error di .NET 5 ke bawah atau .NET Framework.

Pada .NET, informasi kesalahan dibersihkan (diatur ke 0) sebelum memanggil penerima panggilan ketika bidang ini diatur ke true. Pada .NET Framework, informasi kesalahan tidak dihapus. Ini berarti bahwa informasi kesalahan yang dikembalikan oleh GetLastPInvokeError dan GetLastWin32Error di .NET hanya mewakili informasi kesalahan dari p/invoke terakhir dengan DllImportAttribute.SetLastError diatur ke true. Pada .NET Framework, informasi kesalahan dapat bertahan dari satu p/panggil ke p berikutnya.

Berlaku untuk

Lihat juga