я могу открыть объем "исключительно" с CreateFile, установив dwShareMode 0:Исключительное открытие тома
#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");
}
I может открыть файл «исключительно» с открытым:
#include <stdio.h>
#include <fcntl.h>
int main() {
int ju = open("lima.txt", O_RDWR | O_EXCL);
FILE* ki = fdopen(ju, "r+b");
}
Однако, если я пытаюсь открыть тома с открытым, он не сможет:
#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, или я пропустил что-то?
Per https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx 'O_EXCL' не означает «эксклюзивный доступ». Это не эквивалент 'dwShareMode = 0'. Он используется с 'O_CREAT', чтобы открыть файл, только если он еще не существует. –
Для записи, вероятно, неразумно использовать функции ввода-вывода C с томами. Они не предназначены для этого. –