클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (514) N
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (301) N
      • C# (84) N
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • c#
  • .NET
  • Windows API
  • asp.net core
  • NestJS
  • node.js
  • Kotlin
  • CSS3
  • jQuery
  • ASP.NET
  • Entity Framework
  • HTML5
  • asp.net core web api
  • android studio
  • 변수
  • android
  • JavaScript
  • MariaDB
  • exception
  • LINQ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

.NET/Windows API for .NET

GetDiskFreeSpace - 지정한 Disk의 용량확인

2019. 8. 6. 11:37
728x90

GetDiskFreeSpace함수는 원하는 Disk의 총용량과 사용량을 구하는 함수입니다.

Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, ByRef lpSectorsPerCluster As Integer, ByRef lpBytesPerSector As Integer, ByRef lpNumberOfFreeClusters As Integer, ByRef lpTotalNumberOfClusters As Integer) As Integer

▶VB.NET 선언

[DllImport("kernel32")]
public static extern int GetDiskFreeSpace(string lpRootPathName, ref int lpSectorsPerCluster, ref int lpBytesPerSector, ref int lpNumberOfFreeClusters, ref int lpTotalNumberOfClusters);

▶C# 선언

 

GetDiskFreeSpace함수의 첫번째 인수는 용량을 확인할 Drive의 Root경로를 지정합니다. 그리고 두번째 인수는 Cluster당 Sector, 세번째 인수는 Sector당 Byte, 네번째 인수는 사용하지 않는 Cluster수 그리고 마지막 다섯번째 인수는 전체 Cluster가 저장될 수 있는 변수를 지정합니다.

Dim iSector_Clustor As Integer = 0
Dim iByte_Sector As Integer = 0
Dim iFree_Clustor As Integer = 0
Dim iTotal_Clustor As Integer = 0

▶VB.NET

int iSector_Clustor = 0;
int iByte_Sector = 0;
int iFree_Clustor = 0;
int iTotal_Clustor = 0;

▶C#


위 인수를 토대로 C Drive의 용량정보를 확인하려면 GetDiskFreeSpace함수는 다음과 같이 호출될 수 있습니다.

GetDiskFreeSpace("C:\", iSector_Clustor, iByte_Sector, iFree_Clustor, iTotal_Clustor)

▶VB.NET 선언

GetDiskFreeSpace("C:\\",ref iSector_Clustor,ref iByte_Sector,ref iFree_Clustor,ref iTotal_Clustor);

▶C# 선언

 

이제 변수에 전달된 값을 토대로 C Drive에서 사용하지 않는 용량을 확인해 보려면 다음과 같이 계산합니다.

iSpace = iFree_Clustor * iSector_Clustor
iSpace *= iByte_Sector
iSpace / (1024 * 1024)

▶VB.NET

iSpace = iFree_Clustor * iSector_Clustor;
iSpace *= iByte_Sector;
iSpace / (1024 * 1024);

▶C#

 

위 계산대로라면 iSpace변수에는 현재 C Drive에서 사용가능한 용량을 MB(Mega Byte)단위로 가지게 됩니다. 초기 용량에 해당하는 각 변수의 값은 Byte단위이므로 이것은 Kilo Byte단위로 바꾸려면 1024를 곱해야 하고 Mega Byte단위로 바꾸려면 1024를 한번더 곱해야 하는 것입니다. 단연히 GB단위로 바꾸려면 1024를 다시 한번 더 곱하면 됩니다.

만일 현재 Drive의 총용량을 계산하려면 iFree_Clustor대신 ITotal_Clustor변수로만 바꿔서 다시 계산합니다.

iSpace = iTotal_Clustor * iSector_Clustor

▶VB.NET

iSpace = iFree_Clustor * iSector_Clustor;

▶C#

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'.NET > Windows API for .NET' 카테고리의 다른 글

ShowWindow - Window Vision설정및 상태조정  (2) 2019.08.06
GetParent - 자식 Window에 대한 부모 Window찾기  (0) 2019.08.06
MoveWindow - 지정한 Window의 위치및 크기 변환  (0) 2019.08.06
SetForegroundWindow - 작업 Window설정  (0) 2019.08.05
DrawEdge - 테두리 그리기  (0) 2019.08.05
    '.NET/Windows API for .NET' 카테고리의 다른 글
    • ShowWindow - Window Vision설정및 상태조정
    • GetParent - 자식 Window에 대한 부모 Window찾기
    • MoveWindow - 지정한 Window의 위치및 크기 변환
    • SetForegroundWindow - 작업 Window설정
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바