Bagikan melalui


Marshal.GetHRForLastWin32Error Metode

Definisi

Mengembalikan HRESULT yang sesuai dengan kesalahan terakhir yang dikeluarkan oleh kode Win32 yang dijalankan menggunakan Marshal.

public:
 static int GetHRForLastWin32Error();
[System.Security.SecurityCritical]
public static int GetHRForLastWin32Error ();
public static int GetHRForLastWin32Error ();
[<System.Security.SecurityCritical>]
static member GetHRForLastWin32Error : unit -> int
static member GetHRForLastWin32Error : unit -> int
Public Shared Function GetHRForLastWin32Error () As Integer

Mengembalikan

HRESULT yang sesuai dengan kode kesalahan Win32 terakhir.

Atribut

Contoh

Contoh berikut menunjukkan cara mengambil HRESULT yang sesuai dengan kode kesalahan Win32 menggunakan metode .GetHRForLastWin32Error

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

Keterangan

Fungsi target harus memiliki setLastError set bendera metadata. Misalnya, SetLastError bidang System.Runtime.InteropServices.DllImportAttribute harus true. Proses untuk mengatur bendera ini tergantung pada bahasa sumber yang digunakan: C# dan C++ secara false default, tetapi Declare pernyataan di Visual Basic adalah true.

Berlaku untuk

Lihat juga