Skip to content

Gendarme.Rules.Interoperability.GetLastErrorMustBeCalledRightAfterPInvokeRule(2.10)

Sebastien Pouliot edited this page Jan 22, 2011 · 2 revisions

GetLastErrorMustBeCalledRightAfterPInvokeRule

Assembly: Gendarme.Rules.Interoperability
Version: 2.10

Description

This rule will fire if Marshal.GetLastWin32Error() is called, but is not called immediately after a P/Invoke. This is a problem because other methods, even managed methods, may overwrite the error code.

Examples

Bad example:

public void DestroyError ()
{
    MessageBeep (2);
    Console.WriteLine ("Beep");
    int error = Marshal.GetLastWin32Error ();
}

Good example:

public void GetError ()
{
    MessageBeep (2);
    int error = Marshal.GetLastWin32Error ();
    Console.WriteLine ("Beep");
}
public void DontUseGetLastError ()
{
    MessageBeep (2);
    Console.WriteLine ("Beep");
}
Clone this wiki locally