I asked because I am not sure to understand (actually I am pretty sure I do not understand ) C/C++ and similar code, so it's just a "cosmetic matter" or "leftover" in the comments, like:
I am not a good c++ dev guy either but I understand Akeo dropped the friendly name in favor of the hardwareid.
And it does actually reflect in the below code :
// We can't use the friendly name to find if a drive is a VHD, as friendly name string gets translated
// according to your locale, so we poke the Hardware ID
memset(&props, 0, sizeof(props));
memset(buffer, 0, sizeof(buffer));
props.is_VHD = SetupDiGetDeviceRegistryPropertyA(dev_info, &dev_info_data, SPDRP_HARDWAREID,
&datatype, (LPBYTE)buffer, sizeof(buffer), &size) && IsVHD(buffer);
There you can see he retrieves the hardwareid and then use the IsVHD function (mentionned in my previous post) to (exact) match it against a list of known hardware id's : "Arsenal_________Virtual_", "KernSafeVirtual_________", "Msft____Virtual_Disk____" .