다음을 통해 공유


DllImportAttribute.SetLastError 필드

정의

호출 수신자가 특성화된 메서드에서 반환하기 전에 오류(SetLastError Windows 또는 errno 다른 플랫폼에서)를 설정하는지 여부를 나타냅니다.

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

필드 값

예제

경우에 따라 Visual Basic 개발자는 문을 사용하는 대신 를 사용하여 DllImportAttributeDeclare 관리 코드에서 DLL 함수를 정의합니다. 필드 설정 SetLastError 은 이러한 경우 중 하나입니다.

[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

설명

true수신자가 Windows 또는 errno 다른 플랫폼에서 오류를 SetLastError 설정함을 나타내려면 이고, false그렇지 않으면 입니다. 기본값은 false입니다.

이 필드가 로 설정된 true경우 런타임 마샬러는 반환된 값을 호출 GetLastError 하거나 errno 캐시하여 다른 API 호출에 의해 덮어쓰지 않도록 합니다. .NET 6.0 이상 또는 .NET 5 이하 또는 GetLastWin32Error .NET Framework에서 를 호출 GetLastPInvokeError 하여 오류 코드를 검색할 수 있습니다.

.NET에서 오류 정보는 이 필드가 로 설정된 경우 호출 수신자를 호출하기 전에 지워집니다(로 설정0true). .NET Framework에서는 오류 정보가 지워지지 않습니다. 즉, .NET에서 및 GetLastWin32Error 에서 반환된 GetLastPInvokeError 오류 정보는 로 설정된 true마지막 p/invoke DllImportAttribute.SetLastError 의 오류 정보만 나타냅니다. .NET Framework에서 오류 정보는 한 p/invoke에서 다음 p/invoke로 유지될 수 있습니다.

적용 대상

추가 정보