任何人都可以给出如何打印HFS +磁盘卷标头的代码片段。如何打印HFS卷标头
1
A
回答
1
系统调用getattrlist()可能会为您提供所需的信息。
3
我写了一个小程序(基于hfs-183.1),其中打印了一些在struct HFSPlusVolumeHeader
中声明的信息。
#include <fcntl.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <hfs/hfs_format.h>
#include <libkern/OSByteOrder.h>
int main(void) {
int fd;
struct stat stat_buf;
struct HFSPlusVolumeHeader vheader;
const char *vname = "/dev/rdisk0s2";
if (lstat(vname, &stat_buf) == -1) {
fprintf(stderr, "Couldn't stat %s\n", vname);
perror(NULL);
exit(1);
}
if ((stat_buf.st_mode & S_IFMT) != S_IFCHR) {
fprintf(stderr, "%s is not a raw char device\n", vname);
perror(NULL);
exit(2);
}
fd = open(vname, O_RDONLY);
if (fd == -1) {
fprintf(stderr, "%s couldn't be opened for reading\n", vname);
perror(NULL);
exit(3);
}
// The volume header starts at offset 1024
if (pread(fd, &vheader, sizeof vheader, 1024) != sizeof vheader) {
fprintf(stderr, "couldn't read %s's volume header\n", vname);
perror(NULL);
exit(4);
}
printf("fileCount = %u\n"
"folderCount = %u\n"
"blockSize = %u\n"
"totalBlocks = %u\n"
"freeBlocks = %u\n",
OSSwapBigToHostInt32(vheader.fileCount),
OSSwapBigToHostInt32(vheader.folderCount),
OSSwapBigToHostInt32(vheader.blockSize),
OSSwapBigToHostInt32(vheader.totalBlocks),
OSSwapBigToHostInt32(vheader.freeBlocks));
close(fd);
return 0;
}
头文件<hfs/hfs_format.h>
声明struct HFSPlusVolumeHeader
:通过sudo(8)
例如 - 该程序必须运行为root
。请参阅此文件以获取HFS +卷标头中的完整字段列表。
+0
非常感谢您....您的代码段真的很有用 – anonymos 2011-05-10 04:12:37
相关问题
- 1. 区分HFS +和HFS标准卷
- 2. 如何通过文件标识打开HFS +文件?
- 3. 从pytest打印头打印
- 4. 如何从C#应用程序打印标签卷?
- 5. 在卷纸上打印
- 6. TVS RP-45卷纸打印
- 7. 打印PARAMS每个卷曲
- 8. 打印卷曲请求
- 9. 卷曲AWK {}打印帮助
- 10. Html多次打印表头标题
- 11. Symfony 2.5打印缓存标头
- 12. 如何打印xterm标题?
- 13. 如何打印字符串的开头?
- 14. 如何在Java打印SOAP头
- 15. 打印RDD与头
- 16. 如何从SPAN标签打印标题
- 17. 如何使用libpcap打印原始数据包的TCP标头中的标志
- 18. 如何在打印页面上打印页眉徽标
- 19. 如何更改NSToolBarItem打印上的图标打印
- 20. 如何用qz打印html标签打印php页面?
- 21. 如何在每个打印页面上打印GridView的标题
- 22. 我如何可以打印到标签打印机从网页
- 23. 用头打印列表项
- 24. 从perl网站打印头
- 25. 控制打印机头
- 26. 无头Chrome打印pdf
- 27. NTFS HFS + EXT4 ZFS
- 28. HFS使用HTML5
- 29. ColdFusion如何在页面中打印卷曲请求响应
- 30. 如何用卷曲打印分块输出?
用什么编程语言? – 2011-05-09 10:27:15
在Mac上使用C或客观C – anonymos 2011-05-09 10:31:05
任何信息,..... – anonymos 2011-05-09 10:40:31