_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

Consulte también

Control de directorio