Я создал виртуальный диск в C # с помощью библиотеки Dokan (.NET), и он работает довольно хорошо.
Однако, когда я пытаюсь прочитать файл с диска в другом приложении, я получаю исключение, когда использую операции, которые читают синхронно, например System.IO.File.ReadAllText(...)
.
Текст исключения: «Дескриптор не поддерживает синхронные операции. Возможно, потребуется изменить параметры конструктора FileStream, чтобы указать, что дескриптор был открыт асинхронно».
Так что, если я правильно интерпретирую это, .NET, по-видимому, пытается прочитать все содержимое файла за одну синхронную операцию, но Докан, похоже, не позволяет этого.
Но при использовании метода, подобного ReadAllText
, я не могу контролировать способ создания FileStream
(разве не весь смысл этого метода, в конце концов, просто получить содержимое файла без нужно беспокоиться о потоках, читателях и буферах и еще много чего?).
Могу ли я как-нибудь заставить Dokan поддерживать синхронный доступ к вводу-выводу для файловых дескрипторов? Или я должен как-то смириться с тем фактом, что синхронные операции с файлами, размещенными в Dokan, просто невозможны (и надеюсь, что от них не будет зависеть ни одно приложение, которое может когда-либо работать на моем виртуальном диске)?