Windows上的块设备示例

时间:2017-10-16 10:31:07

标签: c++ windows device

我正在Linux,macOS和Windows上使用Posix stat()功能,想要尝试使用不同的设备,以查看结果。支持某些类型,例如Windows上不存在套接字和FIFO,但我想检查至少块和字符设备。我发现AUX(以及其他一些类似的设备)是字符设备,但我找不到默认情况下Windows上可用的任何块设备。有人可以建议一个例子吗?

1 个答案:

答案 0 :(得分:4)

Windows不是POSIX OS,不支持stat。它具有类似的功能_stat,它会尝试模拟功能。

但是,即使Windows确实具有块设备的概念,Windows实现中也没有S_IFBLK(块设备)标志;如果你查看stat.h,你会发现只支持以下模式标志:

#define _S_IFMT   0xF000 // File type mask
#define _S_IFDIR  0x4000 // Directory
#define _S_IFCHR  0x2000 // Character special
#define _S_IFIFO  0x1000 // Pipe
#define _S_IFREG  0x8000 // Regular
#define _S_IREAD  0x0100 // Read permission, owner
#define _S_IWRITE 0x0080 // Write permission, owner
#define _S_IEXEC  0x0040 // Execute/search permission, owner

由此可以得出结论,你所要求的是不可能的。

事实上,_stat("C:")ENOENT而失败而_stat("\\\\.\\C:")EINVAL而失败。