DllImportAttribute.SetLastError フィールド

属性付きメソッドから戻る前に、呼び出し先が SetLastError Win32 API 関数を呼び出すかどうかを示します。

Public SetLastError As Boolean
[C#]
public bool SetLastError;
[C++]
public: bool SetLastError;
[JScript]
public var SetLastError : Boolean;

解説

呼び出し先が SetLastError を呼び出すことを示す場合は true 。それ以外の場合は false 。既定値は false です (Visual Basic を除く)。

ランタイム マーシャラは GetLastError を呼び出し、返された値をキャッシュに格納して、他の API 呼び出しによる上書きを防止します。 GetLastWin32Error を呼び出して、エラー コードを取得できます。

使用例

[Visual Basic, C#, C++] 場合によっては、Visual Basic の開発者は、マネージ コードで DLL 関数を定義する際、 Declare ステートメントを使用する代わりに、 DllImportAttribute を使用します。 SetLastError フィールドの設定は、このような事例の 1 つです。

 
Imports System.Runtime.InteropServices
Public Class Win32
    <DllImport ("user32.dll", SetLastError := False)> _
    Public Shared Function MessageBoxA (ByVal hWnd As Integer, _
        ByVal txt As String, ByVal caption As String, _
        ByVal Typ As Integer) As Integer
    End Function
End Class
[C#] 
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("user32.dll", SetLastError=true)]
    public static extern int MessageBoxA(int hWnd, String text, 
                             String caption, uint type);
}
[C++] 
using namespace System::Runtime::InteropServices;
typedef void* HWND;
[DllImport("user32", SetLastError=true)]
extern "C" int MessageBoxA(HWND hWnd,
                          String* pText,
                          String* pCaption,
                          unsigned int uType);

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

DllImportAttribute クラス | DllImportAttribute メンバ | System.Runtime.InteropServices 名前空間 | GetLastWin32Error