There are of red herrings in the answers here so far. The behaviour of Linux — which people didn't even get right — is largely irrelevant to the question as asked, which after its third edit contained two important words even if one ignores the tags:
"on Windows"
Since the question was tagged Windows Vista
I'm not going to bother with DOS+Windows.
On Windows NT, of the four entries in the primary MBR, exactly zero or one may be a container partition, and the partition types recognized as container partitions are 0x05
and 0x0F
. Not only do Microsoft's disc partitioning utilities enforce this rule, but so too does the operating system kernel. The xHalIoReadPartitionTable()
function in the HAL, which is usually what ends up doing the actual work of an IoReadPartitionTableEx()
call, has an explicit check for more than one container partition, and will fail, printing a message in the debug kernel, in such a case.
Linux is different. The rules for Windows NT are not the rules across the board. (They aren't the rules for MS-DOS 5, for example. MS-DOS is not as sawdust
stated, either. Microsoft doesn't have one set of rules here across all of its operating systems. It changed the rules at least three times as it brought out newer operating systems.) But Linux is a red herring here, with the question as asked. If you want to know about Linux, or what the limitations of the actual on-disc data structures themselves are, don't ask what happens "on Windows".