Что IOCTL_LMR_DISABLE_LOCAL_BUFFERING под капотом? - PullRequest
1 голос
/ 03 марта 2020

Контекст: цель состоит в том, чтобы создать эффективный метод FileCopy, который позволил бы получить доступ к данным в полете для вычисления по крайней мере одного вида контрольной суммы для каждого потока данных.

Если вы посмотрите на сделанные системные вызовы Win32 FileCopy вы заметите, что если файл, источник или место назначения хранятся на общем ресурсе SMB, он снова откроет дескриптор для асинхронного c ввода-вывода и затем выдаст IOCTL_LMR_DISABLE_LOCAL_BUFFERING.

Согласно для описания MSDN это выглядит подозрительно, как будто открытие дескриптора с помощью FILE_FLAG_NO_BUFFERING приведет к эквивалентному результату ... Но тогда почему этот IOCTL?

https://docs.microsoft.com/en-us/windows/win32/devnotes/ioctl-lmr-disable-local-buffering

кто-нибудь знает?

...