Freigeben über


Marshal.GetHRForLastWin32Error-Methode: ()

 

Veröffentlicht: Oktober 2016

Gibt das HRESULT für den letzten Fehler zurück, der durch einen mit Marshal ausgeführten Win32-Code ausgelöst wurde.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Syntax

[SecurityCriticalAttribute]
public static int GetHRForLastWin32Error()
public:
[SecurityCriticalAttribute]
static int GetHRForLastWin32Error()
[<SecurityCriticalAttribute>]
static member GetHRForLastWin32Error : unit -> int
<SecurityCriticalAttribute>
Public Shared Function GetHRForLastWin32Error As Integer

Rückgabewert

Type: System.Int32

Das HRESULT für den letzten Win32-Fehlercode.

Hinweise

Muss die Zielfunktion hatten die setLastError Metadatenflag festgelegt. Zum Beispiel die SetLastError Feld der System.Runtime.InteropServices.DllImportAttribute muss true. Der Prozess zum Festlegen dieses Flags hängt von der verwendeten Quellsprache: c# und C++ sind false standardmäßig die Declare -Anweisung in Visual Basic ist true.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie ein Win32-Fehler Code mit entsprechenden HRESULT Abrufen der GetHRForLastWin32Error Methode.

using System;
using System.Runtime.InteropServices;

internal class Win32
{
    // Use DllImportAttribute to inport the Win32 MessageBox
    // function.  Set the SetLastError flag to true to allow
    // the function to set the Win32 error.
    [DllImportAttribute("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hwnd, String text, String caption, uint type);

}

class Program
{

    static void Run()
    {

        // Call the MessageBox with an invalid window handle to
        // produce a Win32 error.

        Console.WriteLine("Calling Win32 MessageBox with error...");

        Win32.MessageBox(new IntPtr(123132), "Press OK...", "Press OK Dialog", 0);

        // Get the last error and display it.

        int HRESULT = Marshal.GetHRForLastWin32Error();

        Console.WriteLine("The last Win32 Error was: " + HRESULT);
    }

    static void Main(string[] args)
    {
        Run();
    }
}
// This code example displays the following to the console: 
//
// Calling Win32 MessageBox with error...
// The last Win32 Error was: -2147023496
Imports System.Runtime.InteropServices

Module Win32
    ' Use DllImportAttribute to inport the Win32 MessageBox
    ' function.  Set the SetLastError flag to true to allow
    ' the function to set the Win32 error.
    <DllImportAttribute("user32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
    Function MessageBox(ByVal hwnd As IntPtr, ByVal text As String, ByVal caption As String, ByVal type As UInt32) As Integer
    End Function

End Module

Module Program


    Sub Run()



        ' Call the MessageBox with an invalid window handle to
        ' produce a Win32 error.

        Console.WriteLine("Calling Win32 MessageBox with error...")

        Win32.MessageBox(New IntPtr(123132), "Press OK...", "Press OK Dialog", 0)

        ' Get the last error and display it.
        Dim HRESULT As Integer

        HRESULT = Marshal.GetHRForLastWin32Error()

        Console.WriteLine("The last Win32 Error was: " + HRESULT)

    End Sub

    Sub Main(ByVal args() As String)

        Run()

    End Sub

End Module

' This code example displays the following to the console: 
'
' Calling Win32 MessageBox with error...
' The last Win32 Error was: -2147023496

Sicherheit

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1

Siehe auch

DllImportAttribute
Marshal-Klasse
System.Runtime.InteropServices-Namespace

Zurück zum Anfang