.NET/Windows API for .NET

GlobalMemoryStatus - 현재 Memory상태 구하기

클리엘 2019. 8. 5. 17:07
728x90

GlobalMemoryStatus는 현재 Memory상태에 관한 정보를 반환하는 함수입니다.

Declare Sub GlobalMemoryStatus Lib "kernel32" Alias "GlobalMemoryStatus" (ByRef lpBuffer As MEMORYSTATUS)>

- VB.NET 선언

Structure MEMORYSTATUS
        Public ilength As Integer
        Public iusepsent As Integer
        Public iphymem As Integer
        Public iphymem_avail As Integer
        Public ipage As Integer
        Public ipage_avail As Integer
        Public ivirmem As Integer
        Public ivirmem_avail As Integer
End Structure

Dim st_Mem As MEMORYSTATUS
GlobalMemoryStatus(st_Mem)

st_Mem.iusepsent
st_Mem.iphymem
st_Mem.iphymem_avail
st_Mem.ipage
st_Mem.ipage_avail
st_Mem.ivirmem
st_Mem.ivirmem_avail

- VB.NET 호출

[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern void GlobalMemoryStatus(ref MEMORYSTATUS lpBuffer);

- C# 선언

struct MEMORYSTATUS{
            public int ilength;
            public int iusepsent;
            public int iphymem;
            public int iphymem_avail;
            public int ipage;
            public int ipage_avail;
            public int ivirmem;
            public int ivirmem_avail;
}

MEMORYSTATUS st_Mem = default(MEMORYSTATUS);
GlobalMemoryStatus(ref st_Mem);

st_Mem.iusepsent
st_Mem.iphymem
st_Mem.iphymem_avail
st_Mem.ipage
st_Mem.ipage_avail
st_Mem.ivirmem
st_Mem.ivirmem_avail

- C# 호출

 

C# 호출 위에서 각 구조체의 Member에 들어가는 값은 다음과 같습니다.

 member  값
 iusepsent  현재 Memory사용율
 iphymem  물리적 Memory용량
 iphymem_avail  물리적 Memory용량(남은 용량)
 ipage  Page Memory용량
 ipage_avail  Page Memory용량(남은 용량)
 ivirmem  가상 Memory용량
 ivirmem_avail  가상 Memory용량(남은 용량)
 ilength  구조체 길이(관련없음)

iusepsent를 제외한 다른 용량값은 Byte단위입니다.

 

728x90