.\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .TH FAT_IOCTL_GET_VOLUME_ID 2const 2025-05-17 "Linux man-pages 6.16" .SH NAME FAT_IOCTL_GET_VOLUME_ID \- read the volume ID in a FAT filesystem .SH LIBRARY Standard C library .RI ( libc ,\~ \-lc ) .SH SYNOPSIS .nf .BR "#include " " /* Definition of " FAT_* " constants */" .B #include .P .BI "int ioctl(int " fd ", FAT_IOCTL_GET_VOLUME_ID, uint32_t *" id ); .fi .SH DESCRIPTION FAT filesystems are identified by a volume ID. The volume ID can be read with .BR FAT_IOCTL_GET_VOLUME_ID . .P The .I 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 .BR open (2) with the .B O_RDONLY flag. .P The .I 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: .P .in +4n .EX printf("Volume ID %04x\-%04x\[rs]n", id >> 16, id & 0xFFFF); .EE .in .SH RETURN VALUE On success, 0 is returned. On error, \-1 is returned, and .I errno is set to indicate the error. .SH STANDARDS Linux. .SH HISTORY Linux 3.11. .\" commit 6e5b93ee55d401f1619092fb675b57c28c9ed7ec .SH EXAMPLES The following program demonstrates the use of .BR ioctl (2) to display the volume ID of a FAT filesystem. .P The following output was recorded when applying the program for directory .IR /mnt/user : .P .in +4n .EX $ ./display_fat_volume_id /mnt/user Volume ID 6443\-6241 .EE .in .SS Program source (display_fat_volume_id.c) \& .\" SRC BEGIN (display_fat_volume_id.c) .EX #include #include #include #include #include #include #include \& int main(int argc, char *argv[]) { int fd; int ret; uint32_t id; \& if (argc != 2) { printf("Usage: %s FILENAME\[rs]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\[rs]n", id >> 16, id & 0xFFFF); \& close(fd); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH SEE ALSO .BR ioctl (2), .BR ioctl_fat (2)