Diskovery starts its scan by asking Windows Configuration Manager for all devices from the Disk and StoragePort classes. This produces a list of directly accessible drives, RAID volumes and SCSI disk controllers.

For each drive on the list the app first gathers all available information as provided by Windows. This includes drive's capacity, bus type, partition table, etc. It then attempts to communicate with the drive directly.Diskovery implements three options for talking to a drive - direct ATA queries, ATA pass-through queries and SCSI pass-through queries. It also uses SAT to query external drives in USB enclosures.If a drive can be accessed directly, the app retrieves its ATA IDENTIFY block and SMART information.The IDENTIFY block contains various drive properties including its model, serial number, rotational speed, a list of supported features, etc.The SMART data is a list of operational health-related attributes, including drive's temperature, power-on hours, various error counters and wear and tear indicators.The most interesting part of every SMART attribute is its, which is six bytes of a vendor-specific data. Diskovery can accurately decode most of these using its long list of generic and per-vendor interpretation tables.Next, Diskovery goes through the list of SCSI drive controllers and attempts to talk to them in several ways, starting with the Common Storage Management Interface protocol (CSMI).

Even though CSMI is an open standard, it was drafted by Intel, so it's hardly surprising that it is actually supported by pretty much just Intel and nobody else.

3. Logical volumes

4. Storage stack

□

Once it finds a way to talk to the controller, the app builds a list of controller's drives, followed by a list of configured arrays, their properties and composition.For each drive the app also queries the IDENTIFY and SMART informationit's supported by the controller. In some cases controllers provide drive health data in an OEM format rather as a SMART table. Diskovery grabs this data as well.There's a couple of ways to obtain a list of logical volumes and their mount points from Windows. One is through the standard Windows API and another by talking to the Virtual Disk Service (VDS). Diskovery uses them both.The bulk of volume information is available through the first channel, but it doesn't include volume's online/offline status nor its type (simple, spanned, striped, etc.). This information is extracted from the VDS instead.Volumes without direct physical presence such as those created by RAM drives and TrueCrypt are also included and queried for details.Once the app has gobbled all the data it could, it makes several passes over it, cross-references various bits and pieces and generates a storage stack model.Finally, it renders its findings in the UI and this completes the scan cycle.