PDA

View Full Version : How to use WMI to get info provided in STORAGE_DEVICE_DESCRIPTOR structure


idelsoni3647
Sep 4, 2009, 08:11 AM
I have C++ code that I am converting to C#. The C++ code uses the following code
status = DeviceIoControl(hDevice, IOCTL_STORAGE_QUERY_PROPERTY,
&query, sizeof(STORAGE_PROPERTY_QUERY),
&buf, 512, &length, NULL);
if ( status )
{
PSTORAGE_DEVICE_DESCRIPTOR device = (PSTORAGE_DEVICE_DESCRIPTOR)buf;
media.Bus = BusType[device->BusType];
media.DeviceType = device->DeviceType;
media.Removable = (bool)device->RemovableMedia;
if (device->VendorIdOffset)
media.Vendor = &buf[device->VendorIdOffset];
else
media.Vendor = BusType[0]; //unknown
if (device->ProductIdOffset)
media.Product = &buf[device->ProductIdOffset];
else
media.Product = BusType[0]; //unknown
if (device->ProductRevisionOffset)
media.Revision = &buf[device->ProductRevisionOffset];
else
media.Revision = BusType[0]; //unknown
if (device->SerialNumberOffset)
media.SerialNum = &buf[device->SerialNumberOffset];
else
media.SerialNum = BusType[0]; //unknown

After much thought I have decided that it would be better to use WMI in the new code instead of trying to "PInvoke" the Win32 API calls. I can not find any equivalent in the WMI world to get values like VendorID offset, BusType, SerialNumber offse.

Can anyone offer any help?