DllImportAttribute.SetLastError Alan

Tanım

Çağıranın, öznitelikli yöntemden dönmeden önce bir hata ayarlayıp ayarlamadığını (SetLastError Windows'ta veya errno diğer platformlarda) gösterir.

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

Alan Değeri

Örnekler

Bazı durumlarda Visual Basic geliştiricileri, yönetilen kodda DllImportAttributebir DLL işlevi tanımlamak için deyimini kullanmak Declare yerine kullanır. SetLastError Alanı ayarlamak bu durumlardan biridir.

[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

Açıklamalar

trueçağıranın Windows'da veya errno diğer platformlarda aracılığıyla SetLastError bir hata ayarlayacağını belirtmek için; aksi takdirde, false. Varsayılan değer: false.

Bu alan olarak trueayarlanırsa, çalışma zamanı sıralayıcısı, diğer API çağrıları tarafından üzerine yazılmasını önlemek için döndürülen değeri çağırır GetLastError veya errno önbelleğe alır. Hata kodunu almak için .NET 6.0 ve üzerini veya .NET 5 ve altı ya da GetLastWin32Error .NET Framework'ü çağırabilirsinizGetLastPInvokeError.

.NET'te, bu alan olarak ayarlandığında çağrıyı çağırmadan önce hata bilgileri temizlenir (olarak ayarlanır0true). .NET Framework'te hata bilgileri temizlenmez. Bu, .NET üzerinde ve GetLastWin32Error tarafından GetLastPInvokeError döndürülen hata bilgilerinin yalnızca olarak ayarlanmış trueson p/invoke DllImportAttribute.SetLastError hata bilgilerini temsil ettiği anlamına gelir. .NET Framework'te hata bilgileri bir p/invoke'tan diğerine kalıcı olabilir.

Şunlara uygulanır

Ayrıca bkz.