[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 10/14] qga-win: report disk serial number
From: |
Tomáš Golembiovský |
Subject: |
[Qemu-devel] [PATCH v5 10/14] qga-win: report disk serial number |
Date: |
Tue, 23 Oct 2018 13:23:19 +0200 |
Signed-off-by: Tomáš Golembiovský <address@hidden>
---
qga/commands-win32.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 5ebacd241f..e7d9cdea62 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -609,6 +609,31 @@ static void get_disk_properties(HANDLE vol_h,
GuestDiskAddress *disk,
disk->bus_type = find_bus_type(dev_desc->BusType);
g_debug("bus type %d", disk->bus_type);
+ /* Query once more. Now with long enough buffer. */
+ size = dev_desc->Size;
+ dev_desc = g_malloc0(size);
+ if (!DeviceIoControl(vol_h, IOCTL_STORAGE_QUERY_PROPERTY, &query,
+ sizeof(STORAGE_PROPERTY_QUERY), dev_desc,
+ size, &received, NULL)) {
+ error_setg_win32(errp, GetLastError(), "failed to get serial number");
+ goto out_free;
+ }
+ if (dev_desc->SerialNumberOffset > 0) {
+ if (dev_desc->SerialNumberOffset >= received) {
+ error_setg(errp, "offset outside the buffer");
+ goto out_free;
+ }
+ const char *serial = (char *)dev_desc + dev_desc->SerialNumberOffset;
+ size_t len = received - dev_desc->SerialNumberOffset;
+ if (*serial != 0) {
+ disk->serial = g_strndup(serial, len);
+ disk->has_serial = true;
+ g_debug("serial number %s", disk->serial);
+ }
+ }
+out_free:
+ g_free(dev_desc);
+
return;
}
--
2.19.0
- [Qemu-devel] [PATCH v5 00/14] qga: report serial number and disk node, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 02/14] qga: linux: report disk serial number, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 05/14] qga-win: fsinfo: pci-info: allow partial info, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 04/14] qga-win: prevent crash when executing fsinfo command, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 03/14] qga: linux: return disk device in guest-get-fsinfo, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 01/14] configure: add test for libudev, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 09/14] qga-win: refactor disk properties (bus), Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 06/14] *additonal fixup for NULL pci_controller field, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 11/14] qga-win: refactor disk info, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 10/14] qga-win: report disk serial number,
Tomáš Golembiovský <=
- [Qemu-devel] [PATCH v5 07/14] build: rename CONFIG_QGA_NTDDDISK to CONFIG_QGA_NTDDSCSI, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 08/14] qga-win: add debugging information, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 12/14] qga-win: handle multi-disk volumes, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 14/14] qga-win: demystify namespace stripping, Tomáš Golembiovský, 2018/10/23
- [Qemu-devel] [PATCH v5 13/14] qga-win: return disk device in guest-get-fsinfo, Tomáš Golembiovský, 2018/10/23
- Re: [Qemu-devel] [PATCH v5 00/14] qga: report serial number and disk node, Michael Roth, 2018/10/29