Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Метод Marshal.GetLastWin32Error ()

 

Опубликовано: Октябрь 2016

Возвращает код ошибки, возвращенный последней неуправляемой функцией, которая была вызвана с помощью платформы вызова с значением флага DllImportAttribute.SetLastError.

Пространство имен:   System.Runtime.InteropServices
Сборка:  mscorlib (в mscorlib.dll)

[SecurityCriticalAttribute]
public static int GetLastWin32Error()

Возвращаемое значение

Type: System.Int32

Код последней ошибки, заданный вызовом функции Win32 SetLastError.

GetLastWin32Error Win32 предоставляет GetLastError из Kernel32.DLL. Этот метод используется, так как не является безопасным сделать прямой вызов неуправляемого GetLastError для получения этих сведений. Если вы хотите получить доступ к этому коду ошибки, необходимо вызвать GetLastWin32Error вместо написания собственных определение вызова неуправляемого GetLastError и его вызов. Общеязыковая среда выполнения может выполнять внутренние вызовы интерфейсов API, переопределяющие GetLastError поддерживается операционной системой.

Этот метод можно использовать для получения кодов ошибок только в том случае, если применить System.Runtime.InteropServices.DllImportAttribute в сигнатуру метода и задайте SetLastError наtrue. Этот процесс зависит от используемого исходного языка: C# и C++ false по умолчанию, но Declare инструкции в Visual Basic — true.

В следующем примере демонстрируется вызов GetLastWin32Errorметод. В примере сначала демонстрируется вызов метода без ошибок и затем демонстрируется вызов метода с ошибкой.

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 normal parameters.

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

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

        // Get the last error and display it.
        int error = Marshal.GetLastWin32Error();

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

        // 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.

        error = Marshal.GetLastWin32Error();

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

    static void Main(string[] args)
    {
        Run();
    }
}
// This code example displays the following to the console: 
//
// Calling Win32 MessageBox without error...
// The last Win32 Error was: 0
// Calling Win32 MessageBox with error...
// The last Win32 Error was: 1400

SecurityCriticalAttribute

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

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 1.1
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1
Вернуться в начало
Показ: