Marshal.GetHRForLastWin32Error メソッド

定義

Marshal を使用して実行した Win32 コードが原因の最終エラーに対応する HRESULT を返します。

C#
[System.Security.SecurityCritical]
public static int GetHRForLastWin32Error();
C#
public static int GetHRForLastWin32Error();

戻り値

最終 Win32 エラー コードに対応する HRESULT。

属性

次の例では、 メソッドを使用して Win32 エラー コードに対応する HRESULT を取得する方法を GetHRForLastWin32Error 示します。

C#
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

注釈

ターゲット関数には、メタデータ フラグが設定されている setLastError 必要があります。 たとえば、 のフィールドは SetLastErrorSystem.Runtime.InteropServices.DllImportAttribute である true必要があります。 このフラグを設定するプロセスは、使用されるソース言語によって異なります。C# と C++ は false 既定でですが Declare 、Visual Basic の ステートメントは です true

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

こちらもご覧ください