我可以通过将dwShareMode设置为0来使用CreateFile“专用”打开一个卷:
#include <windows.h>
int main() {
HANDLE ki = CreateFile("\\\\.\\F:", GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
}
我可以使用fopen在“共享模式”下打开卷:
#include <stdio.h>
int main() {
FILE* ki = fopen("\\\\.\\F:", "r+b");
}
我可以通过打开“独家”打开文件:
#include <stdio.h>
#include <fcntl.h>
int main() {
int ju = open("lima.txt", O_RDWR | O_EXCL);
FILE* ki = fdopen(ju, "r+b");
}
但是,如果我尝试用open打开一个卷,它将失败:
#include <stdio.h>
#include <fcntl.h>
int main() {
int ju = open("\\\\.\\F:", O_RDWR | O_EXCL);
FILE* ki = fdopen(ju, "r+b");
}
测试之后,无论是否带有O_EXCL标志,都会发生这种情况。是独家量
打开只能通过CreateFile完成的操作,否则我会丢失
什么东西
最佳答案
根据the standard:
如果将O_RDWR应用于FIFO,则结果不确定
在这种情况下,似乎将一个卷识别为FIFO。修理:
open("\\\\.\\F:", O_RDONLY);
要么:
open("\\\\.\\F:", O_WRONLY);
要么:
open("\\\\.\\F:", O_RDONLY | O_WRONLY);