summaryrefslogtreecommitdiffstats
path: root/qga/commands-win32.c
diff options
context:
space:
mode:
authorChen Hanxiao2018-06-14 10:06:07 +0200
committerMichael Roth2018-07-03 18:38:05 +0200
commitc07e5e6ef3b5a2737387f86912ac30d1e9d48909 (patch)
tree5dcc2cbd58a691fa7d8a3a5c476a7e48832820f0 /qga/commands-win32.c
parentqga: add mountpoint usage info to GuestFilesystemInfo (diff)
downloadqemu-c07e5e6ef3b5a2737387f86912ac30d1e9d48909.tar.gz
qemu-c07e5e6ef3b5a2737387f86912ac30d1e9d48909.tar.xz
qemu-c07e5e6ef3b5a2737387f86912ac30d1e9d48909.zip
qga-win: add driver path usage to GuestFilesystemInfo
This patch adds support for getting the usage of windows driver path. The usage of fs stored as used_bytes and total_bytes. Cc: Michael Roth <mdroth@linux.vnet.ibm.com> Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Diffstat (limited to 'qga/commands-win32.c')
-rw-r--r--qga/commands-win32.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 73f31fa8c2..318d760a74 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -670,6 +670,7 @@ static GuestFilesystemInfo *build_guest_fsinfo(char *guid, Error **errp)
char fs_name[32];
char vol_info[MAX_PATH+1];
size_t len;
+ uint64_t i64FreeBytesToCaller, i64TotalBytes, i64FreeBytes;
GuestFilesystemInfo *fs = NULL;
GetVolumePathNamesForVolumeName(guid, (LPCH)&mnt, 0, &info_size);
@@ -699,10 +700,21 @@ static GuestFilesystemInfo *build_guest_fsinfo(char *guid, Error **errp)
fs_name[sizeof(fs_name) - 1] = 0;
fs = g_malloc(sizeof(*fs));
fs->name = g_strdup(guid);
+ fs->has_total_bytes = false;
+ fs->has_used_bytes = false;
if (len == 0) {
fs->mountpoint = g_strdup("System Reserved");
} else {
fs->mountpoint = g_strndup(mnt_point, len);
+ if (GetDiskFreeSpaceEx(fs->mountpoint,
+ (PULARGE_INTEGER) & i64FreeBytesToCaller,
+ (PULARGE_INTEGER) & i64TotalBytes,
+ (PULARGE_INTEGER) & i64FreeBytes)) {
+ fs->used_bytes = i64TotalBytes - i64FreeBytes;
+ fs->total_bytes = i64TotalBytes;
+ fs->has_total_bytes = true;
+ fs->has_used_bytes = true;
+ }
}
fs->type = g_strdup(fs_name);
fs->disk = build_guest_disk_info(guid, errp);