---
name: "FAT_IOCTL_GET_VOLUME_ID"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/FAT_IOCTL_GET_VOLUME_ID"
---

# FAT\_IOCTL\_GET\_VOLUME\_ID(2const)

read the volume ID in a FAT filesystem

## NAME

FAT\_IOCTL\_GET\_VOLUME\_ID - read the volume ID in a FAT filesystem

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <linux/msdos_fs.h>  /* Definition of FAT_* constants */
#include <sys/ioctl.h>
```

**int ioctl(int** *fd***, FAT\_IOCTL\_GET\_VOLUME\_ID, uint32\_t \****id***);**

## DESCRIPTION

FAT filesystems are identified by a volume ID. The volume ID can be read with **FAT\_IOCTL\_GET\_VOLUME\_ID**.

The *fd* argument can be a file descriptor for any file or directory of the filesystem. It is sufficient to create the file descriptor by calling [**open**(2)](/open/2.md) with the **O\_RDONLY** flag.

The *id* argument is a pointer to the field that will be filled with the volume ID. Typically the volume ID is displayed to the user as a group of two 16-bit fields:

```
printf("Volume ID %04x-%04x\n", id >> 16, id & 0xFFFF);
```

## RETURN VALUE

On success, 0 is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## STANDARDS

Linux.

## HISTORY

Linux 3.11.

## EXAMPLES

The following program demonstrates the use of [**ioctl**(2)](/ioctl/2.md) to display the volume ID of a FAT filesystem.

The following output was recorded when applying the program for directory */mnt/user*:

```
$ ./display_fat_volume_id /mnt/user
Volume ID 6443-6241
```

### Program source (display\_fat\_volume\_id.c)

```
#include <fcntl.h>
#include <linux/msdos_fs.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
    int       fd;
    int       ret;
    uint32_t  id;
    if (argc != 2) {
        printf("Usage: %s FILENAME\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    fd = open(argv[1], O_RDONLY);
    if (fd == -1) {
        perror("open");
        exit(EXIT_FAILURE);
    }
    /*
     * Read volume ID.
     */
    ret = ioctl(fd, FAT_IOCTL_GET_VOLUME_ID, &id);
    if (ret == -1) {
        perror("ioctl");
        exit(EXIT_FAILURE);
    }
    /*
     * Format the output as two groups of 16 bits each.
     */
    printf("Volume ID %04x-%04x\n", id >> 16, id & 0xFFFF);
    close(fd);
    exit(EXIT_SUCCESS);
}
```

## SEE ALSO

[**ioctl**(2)](/ioctl/2.md), [**ioctl\_fat**(2)](/ioctl_fat/2.md)
