Узнайте, в каком месте на жестком диске установлена ​​программа / файл - PullRequest
5 голосов
/ 26 января 2012

Допустим, у меня есть файл: test.txt, и я сохраняю его на своем жестком диске.

Есть ли способ определить, в каком (физическом) месте файл сохраняется на жестком диске?

Например, для вектора 12 на дорожке 10 жесткого диска.

Я не знаю, правильно ли я понял терминологию из вышеприведенного, но надеюсь, вы понимаете, о чем я.

Я хочу написать программу, где пользователь может указать файл, и программа узнает, где находится файл на жестком диске.Что-то вроде старой дефрагментации (это Windows;)), где показано, какие части диска используются.

Как это называется и можно ли этого достичь?(Я не ищу код (хотя примеры хороши), а скорее, возможен ли он)

PS Клиент будет Windows 7 (так что подумайте NTFS, если это имеет значение).

Ответы [ 3 ]

1 голос
/ 26 января 2012

Я почти уверен, что подобного рода низкоуровневый дисковый ввод-вывод в управляемом коде будет ... в лучшем случае трудным.Вот кто-то, кто сделал что-то вроде этого:

http://codebrainz.ca/index.php/2010/05/23/low-level-disk-io-in-managed-net/

Все, что вы пишете, чтобы сделать что-то подобное, должно зависеть от аппаратного обеспечения: если вы не знаете, с каким оборудованием вы разговариваете, выУ нас нет представления о том, как он физически хранит данные (например, на USB-накопителе нет пластин, дорожек или секторов, и он не вращается. Тем не менее, для всех целей и задач он представляется диском).

Обычно для этого вам нужно написать какой-нибудь драйвер устройства.Эта ссылка

http://en.wikibooks.org/wiki/Windows_Programming/Device_Driver_Introduction

может помочь.

0 голосов
/ 26 января 2012

Это возможно из C ++, поэтому с небольшим вмешательством все будет в порядке. Найдите FSCTL_GET_RETRIEVAL_POINTERS в MSDN, чтобы начать работу.

0 голосов
/ 26 января 2012

В WebLog Джеффри Уолла вы найдете Defrag API C # оболочки .Его GetFileMap метод семс приближается к тому, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...