_getdiskfree
Obtenga información sobre una unidad de disco, como los clústeres totales, clústeres disponibles, sectores por clúster y bytes por sector.
Importante
Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
unsigned _getdiskfree(
unsigned drive,
struct _diskfree_t * driveinfo
);
Parámetros
drive
Unidad de disco de la que desea obtener información.
driveinfo
Estructura _diskfree_t
que se rellenará con información de la unidad.
Valor devuelto
Si la función es correcta, el valor devuelto es cero. Si la función no es correcta, el valor devuelto es un código de error. El valor errno
se establece para los errores devueltos por el sistema operativo. Para más información sobre las condiciones de error que se indican mediante errno
, consulte errno
constants.
Comentarios
La estructura _diskfree_t
se define en Direct.h.
struct _diskfree_t {
unsigned total_clusters; // The total number of clusters, both used and available, on the disk.
unsigned avail_clusters; // The number of unused clusters on the disk.
unsigned sectors_per_cluster; // The number of sectors in each cluster.
unsigned bytes_per_sector; // The size of each sector in bytes.
};
Esta función valida sus parámetros. Si el driveinfo
puntero es NULL
o drive
especifica una unidad no válida, esta función invoca un controlador de parámetros no válido, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve EINVAL
y establece en errno
en EINVAL
. Las unidades válidas oscilan entre 0 y 26. Un valor 0 en drive
especifica la unidad actual; a partir de ahí, se asignan números a letras del alfabeto inglés de forma tal que 1 es la unidad A, 3 es la unidad C, y así sucesivamente.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Routine | Encabezado necesario |
---|---|
_getdiskfree |
<direct.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_getdiskfree.c
// compile with: /c
#include <windows.h>
#include <direct.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
ULONG uDriveMask = _getdrives();
for (unsigned uDrive = 1; uDrive <= 26; ++uDrive)
{
if (uDriveMask & 1)
{
struct _diskfree_t df = { 0 };
unsigned uErr = _getdiskfree(uDrive, &df);
printf("\nDrive: %c\n", uDrive + 'A' - 1);
if (uErr == 0)
{
printf("\tTotal clusters: %11u\n", df.total_clusters);
printf("\tAvailable clusters: %11u\n", df.avail_clusters);
printf("\tSectors per cluster: %11u\n", df.sectors_per_cluster);
printf("\tBytes per sector: %11u\n", df.bytes_per_sector);
}
else
{
WCHAR errMsg[80];
unsigned uLen = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL,
uErr, 0, errMsg, sizeof(errMsg), NULL);
printf("%S\n", errMsg);
}
}
uDriveMask >>= 1;
}
}
Drive: C
Total clusters: 249754111
Available clusters: 160184686
Sectors per cluster: 8
Bytes per sector: 512