GlobalMemoryStatusEx

C# Signature:

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool GlobalMemoryStatusEx( [In,Out] MEMORYSTATUSEX lpBuffer); //Used to use ref with comment below
                                    // but ref doesn't work.(Use of [In, Out] instead of ref 
                                    //causes access violation exception on windows xp
                                    //comment: most probably caused by MEMORYSTATUSEX being declared as a class
                                    //(at least at pinvoke.net). On Win7, ref and struct work.

    // Alternate Version Using "ref," And Works With Alternate Code Below.
    // Also See Alternate Version Of [MEMORYSTATUSEX] Structure With
    // Fields Documented.
    [return: MarshalAs( UnmanagedType.Bool )]
    [DllImport( "kernel32.dll", CharSet = CharSet.Auto, EntryPoint = "GlobalMemoryStatusEx", SetLastError = true )]
    static extern bool _GlobalMemoryStatusEx( ref MEMORYSTATUSEX lpBuffer );

VB.Net Signature:

Private Declare Function GlobalMemoryStatusEx Lib "kernel32" Alias "GlobalMemoryStatusEx" ( _
     <[In](), Out()>ByVal lpBuffer As MEMORYSTATUSEX _
     ) As <MarshalAs(UnmanagedType.Bool)> Boolean

Sample Code:

Sample Code:

Sample Code:

Sample Code:

Alternative Managed API:

Última actualización