Экспорт (0) Печать
Развернуть все
Развернуть Свернуть
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

Marshal.GetLastWin32Error - метод

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

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

public static int GetLastWin32Error()

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

Тип: System.Int32
Последний код ошибки, заданный вызовом функции SetLastError платформы Win32.

GetLastWin32Error предоставляет функцию Win32 GetLastError из библиотеки Kernel32.DLL. Этот метод используется, потому что использовать прямой вызов неуправляемого кода GetLastError для получения этих сведений небезопасно. Если нужен доступ к этому коду ошибки, вместо написания собственного определения вызова неуправляемого кода для GetLastError и последующего его вызова необходимо вызвать метод GetLastWin32Error. Среда CLR может выполнять внутренние вызовы интерфейсов 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


.NET Framework

Поддерживается в версиях: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

  • SecurityCriticalAttribute 

    требует полного доверия непосредственно вызывающему объекту. Данный член не может использоваться частично доверенным или прозрачным кодом.

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

Среда .NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft