Почему процесс считывает смещение / длину с диска C:?
Ниже представлен клип SysInternals Filemon в действии.
Я не понимаю, почему различные процессы читают диск C: со смещением, а не читают определенные файлы.
Я заметил, что Windows Explorer делает то же самое, хотя у меня не открыт файловый менеджер.
1 ответ
Есть много причин, по которым программа может захотеть получить конкретное смещение. Среди причин, по которым сервисам, таким как Shadow Copy, может потребоваться это, невозможно сказать почему, если мы не увидим, что они на самом деле читают. Примером является использование теневого копирования для зеркального отображения тома, затем вы выполняете поток данных (если бы наблюдался поток шестнадцатеричных данных), последовательно, и вы увидите на обоих дисках следующий процесс:
1) Чтение со смещения 0, 4096 байт (чтение одного блока).
2) Запись в другое место со смещением 0, 4096 байт (запись одного блока)
3) Считать со смещения 4096, 4096 байт... И так далее, и далее... по существу к моменту Offset = Disk Size, вы будете зеркально отражать том.
Тем не менее, это может быть проблемой с приложением наблюдателя, проверяющим, что читается, на самом деле есть уровни абстракции, взаимодействующие прямо там.
Программа запрашивает файл -> проверяет, где он находится -> запрашивает у ОС запросить файл -> ОС запрашивает драйвер, чтобы пойти туда и получить запрошенные байты, а затем приложение получает указатель на эти данные, которые будут использоваться.
Очевидно, я максимально упростил этот процесс. Но, по сути, каждый раз, когда что-то делается на компьютере, оно проходит через множество уровней абстракции, и данные, запрошенные приложением, могут быть или не быть в этих смещениях. Мы видели это во время работы с предохранителем и перехвата вызовов чтения - записи на томе. Они не последовательны, но чтобы объяснить дальше, мне нужно получить слишком техническую информацию, которую, я думаю, вы не спрашиваете.
Надеюсь, этот ответ поможет, хотя с тех пор, как вы спросили, прошел год.