Marshal.GetHRForLastWin32Error Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение HRESULT, соответствующее последней ошибке, вызванной кодом Win32, выполняемым с использованием класса 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
Возвращаемое значение
Значение HRESULT, соответствующее последнему коду ошибки Win32.
- Атрибуты
Примеры
В следующем примере показано, как получить HRESULT, соответствующий коду ошибки Win32, с помощью 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
Комментарии
Для целевой функции должен быть setLastError
установлен флаг метаданных. Например, SetLastError
поле System.Runtime.InteropServices.DllImportAttribute должно иметь значение true
. Процесс установки этого флага зависит от используемого исходного языка: по умолчанию используются false
C# и C++, но Declare
в Visual Basic используется true
оператор .