La Web del Programador: Comunidad de Programadores
 
    Pregunta:  17461 - DETECTAR DISCO DURO
Autor:  Enrique Araúz
Buenas quiciera saber como puedo detectar las unidades en la que se a particionado un disco duro.

  Respuesta:  Ricardo Ortega
Saludos. La pregunta no aclara si solamente te interesan las unidades lógicas (identificadas por letras C: D: E: o si te interesan TODAS las particiones del disco duro incluyendo particiones no dos o no windows)
Si solamente te interesan las unidades lógicas, se puede hacer en C un programa así:

int u:
for (u=3; u < 32: ++u) { // 3 indica unidad C:
_dos_setdrive (u, &x)
x = _dos_getdrive();
if (x == u) printf ("Se ha encontrado unidad %d. ", u+64);
}

Si lo que necesitas es averiguar todas las particiones, la historia es larga, debes usar llamadas INT13 para leer el primer sector del disco duro, intrepretar la tabla de particiones, identificar cada partición.
ver Ejemplos y programas fuente partmgr o bootmaster o en www.sourceforge.net
Suerte. Si deseas mayor explicación, escribeme.