DllImportAttribute.SetLastError Campo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Indica se il chiamante imposta un errore (SetLastError
in Windows o errno
in altre piattaforme) prima di restituire dal metodo con attributi.
public: bool SetLastError;
public bool SetLastError;
val mutable SetLastError : bool
Public SetLastError As Boolean
Valore del campo
Esempio
In alcuni casi, gli sviluppatori di Visual Basic usano , anziché usare l'istruzioneDllImportAttributeDeclare
, per definire una funzione DLL nel codice gestito. L'impostazione del SetLastError campo è uno di questi casi.
[DllImport("user32.dll", SetLastError = true)]
int MessageBoxA(IntPtr hWnd, String^ Text,
String^ Caption, unsigned int Type);
internal static class NativeMethods
{
[DllImport("user32.dll", SetLastError = true)]
internal static extern int MessageBoxA(
IntPtr hWnd, string lpText, string lpCaption, uint uType);
}
Friend Class NativeMethods
<DllImport("user32.dll", SetLastError:=True)>
Friend Shared Function MessageBoxA(hWnd As IntPtr, lpText As String,
lpCaption As String, uType As UInteger) As Integer
End Function
End Class
Commenti
true
per indicare che il chiamante imposta un errore tramite SetLastError
Windows o errno
in altre piattaforme; in caso contrario, false
. Il valore predefinito è false
.
Se questo campo è impostato su true
, il marshalling runtime chiama GetLastError
o errno
memorizza nella cache il valore restituito per impedire che venga sovrascritto da altre chiamate API.
È possibile recuperare il codice di errore chiamando GetLastPInvokeError .NET 6.0 e versioni successive o successive o in .NET 5 e versioni successive o GetLastWin32Error .NET Framework.
In .NET le informazioni sull'errore vengono cancellate (impostate su 0
) prima di richiamare la chiamata quando questo campo è impostato su true
. In .NET Framework le informazioni sull'errore non vengono cancellate.
Ciò significa che le informazioni sugli errori restituite da GetLastPInvokeError e GetLastWin32Error in .NET rappresentano solo le informazioni sull'errore dell'ultimo p/invoke con DllImportAttribute.SetLastError impostato su true
. In .NET Framework le informazioni sull'errore possono essere mantenute da una p/invoke alla successiva.