На какие API мне нужно обратить внимание, чтобы закодировать мою собственную букву Windows - PullRequest
1 голос
/ 17 января 2011

Я думал о том, чтобы возиться с собственным кодом файловой системы, как учебное упражнение. Для начала это может быть ОЗУ или просто смонтированный в файле на другом диске. Вопросы:

  1. Какие API Windows мне нужно было бы запрограммировать для реализации моей собственной буквы диска (например, M: с моей системой)
  2. Где находится документация для этих API?
  3. Можете ли вы реализовать их с помощью C #?

Примечание:

  • Я знаю, что есть другие реализации Ram-дисков - мне не нужен их список.
  • Я пробовал поискать в Google, но мне было очень трудно найти правильные условия поиска.
  • На данный момент я не привередлив о том, какая версия Windows подходит для любой версии, так как я разрабатываю для Windows 7, но я надеюсь, что версия для более ранней версии Windows все еще будет работать

Ответы [ 4 ]

3 голосов
/ 17 января 2011

Вам нужно взглянуть на Windows DDK - теперь он называется "WDK". WDK включает в себя набор устанавливаемых файловых систем (IFS). Посмотреть здесь: Набор устанавливаемых файловых систем (IFS)

Драйверы устройств в Windows написаны на C / C ++. Насколько я знаю, нет способа реализовать драйвер файловой системы в .NET. В пространстве ядра нет CLR.

РЕДАКТИРОВАТЬ: asveikau избили меня до этого ...

3 голосов
/ 17 января 2011

Взгляните на IFS (устанавливаемая файловая система) Kit .

Вы говорите о написании драйвера файловой системы. Основная модель заключается в том, что ваш код загружается в ядро ​​NT и обрабатывает IRP .

Нет, вы не можете сделать это в C #.

1 голос
/ 17 января 2011

Из этого ответа на аналогичный вопрос: как сопоставить программное обеспечение как диск?

Посмотрите на Докан . Похоже, это хорошая оболочка для скриптов для низкоуровневых драйверов файловой системы. Как FUSE в Linux.

Страница документов упоминает, что вы можете использовать ее для написания кода файловой системы на C #, VB, C ++ и даже Ruby! Поскольку она представляет собой библиотеку .Net, я предполагаю, что вы можете сделать это на любом языке, работающем на CLR, например, на IronPython или F #.

0 голосов
/ 22 января 2011

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

Разница в том, что CallbackDisk эмулирует дисковое устройство (так что вы можете смонтировать, например, образ ISO) там, а Callback File System позволяет вам создать собственную файловую систему (например, распределенную или просто удаленно сохраненную)

.NET API доступны в обоих продуктах.

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