http://msdn2.microsoft.com/en-us/library/aa363965(vs.85).aspx
> DetectionType
> The detected partition type.
> This member can be one of the following values from the DETECTION_TYPE
> enumeration.
> DetectExInt13 2 The disk has an extended Int13 partition.
> DetectInt13 1 The disk has a standard Int13 partition.
> DetectNone 0 The disk does not have an Int13 or an extended
> Int13 partition.
Did someone forget to document this possibility:
DetectBoth 3 The disk has at lease one partition of each
type.
Or if someone forgot to design for this possibility, then what happens?
Some PC creates a standard Int13 partition on a hard drive, a second PC
creates an extended Int13 partition on the same hard drive, and a third PC
calls DeviceIoControl and gets a BSOD?
Next:
> Int13
> If DetectionType is DetectInt13, the union is a DISK_INT13_INFO structure.
> ExInt13
> If DetectionType is DetectExInt13, the union is a DISK_EX_INT13_INFO
> structure.
Is that so? Earlier on the same page, Microsoft said that the union is a
structure of both structures:
> union {
> struct {
> DISK_INT13_INFO Int13;
> DISK_EX_INT13_INFO ExInt13;
> };
> };
In case of any doubt, the above information is not one per partition, it's
one per disk. Look at the DISK_GEOMETRY_EX structure.
http://msdn2.microsoft.com/en-us/library/aa363970(VS.85).aspx