Восстановление удаленного файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Восстановление удаленного файла

Сообщение Don Leno » 07.04.2014 (Пн) 21:10

Как программно восстановить удаленный с жесткого диска файл?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Восстановление удаленного файла

Сообщение Хакер » 07.04.2014 (Пн) 22:05

Если ты пишешь программу для восстановления удалённых файлов, то подобные вопросы не должны возникать, иначе единственное здравое решение — отказаться от задумки, ибо уровень явно не дотягивает.

Если ты пишешь не программу для восстановления, то она не должна обладать такой потенциально опасной/вредоносной функциональностью, как восстановление удалённых файлов.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.04.2014 (Вт) 1:06

Don Leno писал(а):Как программно восстановить удаленный с жесткого диска файл?

Если это она должна быть портативной, то никак, насколько я представляю.

PS: Это же именно об удалённом с диска, а не в корзину вопрос, надеюсь.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 08.04.2014 (Вт) 5:23

Почему никак, много в инете прог которые могут восстанавливать, а в vb такой реализации нет?
Тогда объясните по какому принципу программы восстановления работают. И да я хотел бы написать такую прогу, чтоб файлы восстанавливать, но не портативность я просто интересовался.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Восстановление удаленного файла

Сообщение iGrok » 08.04.2014 (Вт) 5:37

Для начала, нужно отлично знать внутреннее устройство популярных файловых систем (как минимум FAT, NTFS).
Большая часть существующей "документации" по ним идёт с примерами на си, поэтому нужно также как минимум поверхностное знание си. Опять же, немалая часть информации существует только на английском языке, поэтому без его знания тут тоже будет туговато.

Почитать обо всём этом можно в гугле. Искать придётся много, поэтому как именно найти то, что нужно подсказывать не буду - без умения найти нужную информацию в гугле, опять же, бесполезно даже браться за эту задачу.

Ну а когда будут выполнены все эти требования, у тебя уже не останется вопросов, на которые может ответить кто-то из нас.

Примерно это и имел в виду Хакер в первой части своего ответа.
label:
cli
jmp label

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 08.04.2014 (Вт) 5:46

Понял, пошел в гугл...

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.04.2014 (Вт) 8:23

Don Leno писал(а):Почему никак, много в инете прог которые могут восстанавливать

"Никак" было именно про портативную, поскольку нужен прямой доступ к диску, а для него админские права.
По краней мере, мне так кажется.

Don Leno писал(а):а в vb такой реализации нет?

Такой реализации ни в одном языке нет - надо писать ;)

Don Leno писал(а):Тогда объясните по какому принципу программы восстановления работают.

Вот какое-то описание: http://hetmanrecovery.com/ru/recovery_news/hetman_uneraser_pr2.htm. B вообще, там полно подобных статей. На первый взгляд, выглядит правдоподобно.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Восстановление удаленного файла

Сообщение iGrok » 08.04.2014 (Вт) 19:01

Qwertiy писал(а):"Никак" было именно про портативную, поскольку нужен прямой доступ к диску, а для него админские права.

А где тут проблема или противоречие, из-за которого возникает этот "никак"?

Qwertiy писал(а):Вот какое-то описание

Первые же строки отбивают желание читать дальше.
"В отличие от FAT, NTFS – очень удобная для восстановления данных файловая система, позволяющая полностью восстановить все занимаемые удалённым файлом секторы на диске."

Потому что это чушь, либо не описаны граничные условия. FAT, как раз, удобнее. Там при удалении просто имя файла меняется, и восстановить только что удалённый файл можно "в одно движение", с потерей одного символа в имени. С NTFS всё сложнее.
label:
cli
jmp label

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.04.2014 (Вт) 19:13

iGrok писал(а):А где тут проблема или противоречие, из-за которого возникает этот "никак"?

Ну, в моё понимание портативной программы входит отсутствие требования админских прав :)

iGrok писал(а):Потому что это чушь, либо не описаны граничные условия. FAT, как раз, удобнее. Там при удалении просто имя файла меняется, и восстановить только что удалённый файл можно "в одно движение", с потерей одного символа в имени.

Открыл на том же сайте статью про восстановление FAT:
http://hetmanrecovery.com/ru/recovery_news/hetman_uneraser_pr3.htm писал(а):Важно отметить, что записи кластеров в FAT при удалении файла обнуляются; соответственно, при анализе записи мы можем получить информацию о физическом адресе начала файла и об его размере. При этом какая бы то ни было информация об остальных кластерах файла отсутствует.
затем открыл википедию
http://ru.wikipedia.org/wiki/FAT писал(а):При удалении файла первый знак имени заменяется специальным кодом E5 и цепочка кластеров файла в таблице размещения обнуляется. Поскольку информация о размере файла (которая располагается в каталоге рядом с именем файла) при этом остаётся нетронутой, в случае, если кластеры файла располагались на диске последовательно и они не были перезаписаны новой информацией, возможно восстановление удалённого файла.
А вот в другом месте написано, что восстановление полностью возможно:
http://www.etegro.ru/articles/secure-disk-erasing писал(а):Например, в файловых системах File Allocation Table (FAT) удаление файла означает лишь удаление первого символа в его имени и пометке что файл удалён. Утилитами, присутствующими в самой операционной системе, можно восстановить файл без потерь (кроме первого символа имени).
Сам не знаю. И кто прав в итоге?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Восстановление удаленного файла

Сообщение iGrok » 08.04.2014 (Вт) 19:31

Qwertiy писал(а):И кто прав в итоге?


http://ru.wikipedia.org/wiki/FAT писал(а):Удаление файла — первый символ файловой записи и всех ассоциированных LFN-записей заменяется кодом 0xE5; занимаемые файлом кластеры помечаются в таблице FAT как свободные, а в области данных не затрагиваются.

Информация о размещении при этом не утрачивается, но если в один из кластеров уже успели что-то записать - восстановится чушь. Впрочем, возможно есть какие-то ещё нюансы.
label:
cli
jmp label

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 5:12

Люди спс за подробные ссылка, в особености Qwertiy, я погуглил-прочитал вот вернулся. Пока разбираюсь с NTFS, решил начать именно с нее. Нашел код в котором подробное описание и восстановление, правда на зарубежном портале http://www.codeproject.com/Articles/74128/NTFS-MFT-deleted-files
Появился вопрос, что за такая АПИ CreateFile, ReadFile? Кто нить может дать мне объявление эти Апи.

--------
Описание нашел по АПИ CreateFile - http://vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_createfile.htm
Вот только кто нить напишите как ее там правильно объявить в VB.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Восстановление удаленного файла

Сообщение Хакер » 09.04.2014 (Ср) 5:41

Don Leno писал(а):Появился вопрос, что за такая АПИ CreateFile, ReadFile?

Прочитал, как устроены атомные электростанции. Пока разбираюсь с реактором на тепловых нейтронах, решил начать именно с него. Нашёл в сети техническую документацию на постройку и обслуживание реактора РБМК-1000.

Появился вопрос, что такое клапан? В хозмаге получится купить его?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 5:46

Хакер, прошу помоги!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Восстановление удаленного файла

Сообщение Хакер » 09.04.2014 (Ср) 5:49

Don Leno писал(а):Хакер, прошу помоги!

Через пару лет, как наберёшься опыта, об этом можно говорить.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 5:59

Код: Выделить всё
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Нашел!!
Забыл про стандартный АПИ ВИВЕР

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 6:04

Код: Выделить всё
If ret = 0 Then
            ret = WaitForSingleObject(Hnd, INFINITE)
            Select Case ret
                Case WAIT_OBJECT_0
                Case WAIT_TIMEOUT
            End Select
        Else
            Return False
        End If

Хакер, я не могу понять эту часть кода. В этой статье -http://www.codeproject.com/Articles/74128/NTFS-MFT-deleted-files

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Восстановление удаленного файла

Сообщение Хакер » 09.04.2014 (Ср) 6:05

Во-первых, пользуйся тегом [code], иначе придётся применять против тебя меры :!:

Don Leno писал(а):Правильно ли я объявил функцию?

Во-вторых, нормальные люди не пользуются Ansi-вариантами функций в 2014 году. Ты правда заботишься о совместимости с чистой Win98?
В-третьих, функцию можно объявить кучей различных способов, все из них будут относительно правильными. Конечная правильность зависит от того, что ещё у тебя объявлено (например объявлена ли структура SECURITY_ATTRIBUTES), и как ты собрался пользоваться функцией.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 6:09

А можно поподробней. То есть мне нужно использовать Unicode функцию, по моему - "CreateFileW". Так? А насчет атрибутов я понятия не имею. Гуглюсь пока ниче полезного.

Hnd = CreateFile(Mid(strDrive, 1, 2), GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, _
Nothing, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL Or FILE_FLAG_OVERLAPPED, IntPtr.Zero)
вот пример из статьи - тут нужны еще какие нибудь объявления кроме функции?

Все кажись понял, пошел в гугл...
Последний раз редактировалось Don Leno 09.04.2014 (Ср) 6:12, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Восстановление удаленного файла

Сообщение Хакер » 09.04.2014 (Ср) 6:12

Don Leno писал(а): То есть мне нужно использовать Unicode функцию, по моему - "CreateFileW". Так?

Если ты собрался открывать файлы, то да. Если том — не обязательно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 6:16

ТАК я о чем! Ты я ж и спрашиваю именно по тому, а не файлу. Так я могу использовать CreateFileA?

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 6:21

Код: Выделить всё
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const OPEN_EXISTING = 3
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_FLAG_OVERLAPPED = &H40000000

Public Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Long
End Type

  '  Infinite timeout
Public Declare Function WaitForSingleObject Lib "kernel32" Alias "WaitForSingleObject" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Public Const INFINITE = &HFFFF      '  Infinite timeout


Public Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long

Public Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long

Нашел необходимые константы, но не все, только вот этого я не понял - IntPtr.Zero

hTemplateFile
Specifies a handle with GENERIC_READ access to a template file. The template file supplies file attributes and extended attributes for the file being created.
Кажись это по временному файлу что-то. Я могу сюда NULL передать?

И еще вопрос не понял в коде вот эту строчку -
Код: Выделить всё
Dim ret As UInt32
Что это? как объявить то в VB?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.04.2014 (Ср) 6:51

Don Leno писал(а):только вот этого я не понял - IntPtr.Zero

Надо бы научиться отличать VB.NET от VB6 ;)
И вообще, это 0.

Don Leno писал(а):Dim ret As UInt32

Туда дже - VB.NET мы VB6.
Почти Long, но с беззнаковостью придётся повозиться, возможно.
Последний раз редактировалось Qwertiy 09.04.2014 (Ср) 6:56, всего редактировалось 1 раз.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 6:54

Qwertiy Мож поможешь с этим делом разобраться? :D

-----------------------------
Анекдот:
- Маша, давай прошвырнемся в кино?
- ? ? ? ??
- Ну давай хоть в кабак сходим...
- ???? ?? ???
- А-а, понял, кодировка глючит...
:))))))

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 7:00

Почти Long, но с беззнаковостью придётся повозиться, возможно


А как лонг нельзя просто объявить. ret нужна для приема возрата функции от ReadFile. А она возвращает - Long.

Код: Выделить всё
 
      If ret = 0 Then
            ret = WaitForSingleObject(Hnd, INFINITE)
            Select Case ret
                Case WAIT_OBJECT_0
                Case WAIT_TIMEOUT
            End Select
        Else
            Return False
        End If

Что означают - WAIT_OBJECT_0 и WAIT_TIMEOUT? Они являются константами или нет? Их надо объявлять?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.04.2014 (Ср) 7:07

Don Leno писал(а):Qwertiy Мож поможешь с этим делом разобраться? :D

По-моему, Хакер прав. Найди что-нибудь попроще для начала.

Don Leno писал(а):А как лонг нельзя просто объявить.

Почему??

Don Leno писал(а):Что означают - WAIT_OBJECT_0 и WAIT_TIMEOUT? Они являются константами или нет? Их надо объявлять?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx
И вообще, приведённый код какой-то сильно странный.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 7:10

Попроще это что? Окошечко с кнопочко выход? Или эт намек свалить с форума. Хочу разобраться. Автор исходника не оставил коментов в нем и никаких объявлений. Вот и пишу вам.

Почему LOng - переменная принимает значение от функций ReadFile и WaitForSingleObject. Соответственно они возвращают Лонговское значение. Так почему нельзя объявить лонг, и что там за "беззнаковостью придётся повозиться"?

Одного не понимаю зачем автор включил туда Select Case если там нет никакого кода?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.04.2014 (Ср) 7:21

Don Leno писал(а):Или эт намек свалить с форума.

Нет, конечно. Форум для того и нужен, чтобы спрашивать.

Don Leno писал(а):Попроще это что?

Объясни, почему ты хочешь именно восстановление файлов сделать, при том, что в winapi не разбираешься, да и в VB тоже не особо.
В чём вообще цель её написания? Хочешь что-то изучить? Что?

Don Leno писал(а):Автор исходника не оставил коментов в нем и никаких объявлений.

Вот я смотрю на твой кусок кода. Case'ы ничего не делают. Ладно, предположим, что ты убрал содержимое, чтобы выложить меньше кода. Проверяются 2 значения из 4 теоретически возможных. Странно. Но и это не всё: WaitForSingleObject вызывается с бесконечным временем ожидания, значит он не может вернуть WAIT_TIMEOUT (или я ошибаюсь?), который как раз-таки проверяется. И это если промолчать о том, что синтаксис с Return - это не VB6, да и вообще, писать подобный код с return в else-ветви - это плохой стиль. И это было на 9 строк кода...

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.04.2014 (Ср) 7:26

Don Leno писал(а):Так почему нельзя объявить лонг

Можно. Даже нужно. Это твоё утверждение, что нельзя.

Don Leno писал(а):и что там за "беззнаковостью придётся повозиться"?

Я сказал "возможно, придётся".
Хотя, с хендлами обычно никаких операций не производится, так что, наверное, не придётся.

Don Leno писал(а):Одного не понимаю зачем автор включил туда Select Case если там нет никакого кода?

Я тоже :)

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 7:31

Добрый человек пасиб те за твое внимание!
Я просто искал исходник по восстановлению удаленного файла. И увидев знакомые строки, я конечно понял что это не родимый барсик 6, потому и обратился к вам для его интерпритации в VB.
Я читал эту статью, автор заявляет что сам написал код потому как таковых в инете не было, и извиняется за корявость некоторых строк кода. Да лан с этим, подправим!

Да верно подметил что плохо разбираюсь в апи. Но хочется понять программу от и до, а не просто копирайтить и использовать код. Не могу использовать код который не понимаю.

На вопрос почему именно это. Я хочу написать прогу для восстановения файлов. Для начала с NTFS томов, потом и FAT и если возможно с GPT разделов.

ТАкже я просто учусь на этих примерах. Например до этого я не знал что такое MFT и что такое Кластеры и Секторы Жесткого Диска, я знал что это какая то единица измерения, но не понимал полностью. Почитав в википедии многое понял и про MFT в том числе.
Последний раз редактировалось Don Leno 09.04.2014 (Ср) 7:38, всего редактировалось 2 раз(а).

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Восстановление удаленного файла

Сообщение Don Leno » 09.04.2014 (Ср) 7:32

Я тоже :)

Я рад что я здесь не один такой )))

Я подкорректировал код проверьте на правильность:
Код: Выделить всё
'Функция которая определяет является ли файловая система раздела NTFS
Public Function IsNFTSDrive(ByVal strDrive As String) As Boolean
        Dim Hnd As Long 'Дескриптор
        Dim nRead As Long ' Число считаных байт
        Dim ret As Long ' Для определения что нам возвращает функция ReadFile
        Dim Buffer(1023) As Byte 'Сюда считываем байты с тома

        Hnd = CreateFile(Mid(strDrive, 1, 2), GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, _
        Nothing, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL Or FILE_FLAG_OVERLAPPED,0)

        If (Hnd <> INVALID_HANDLE_VALUE) Then' если дескриптор не возвращает ошибки
             ' Читаем
            ret = ReadFile(Hnd, Buffer, 1024, nRead, New System.Threading.NativeOverlapped)
      if ret<>0 then' Если считывание прошло успешно, проверяем на совпадение байтов и возвращаем True
         if Buffer(3) = 78 And Buffer(4) = 84 And Buffer(5) = 70 And Buffer(6) = 83 then
                   IsNFTSDrive=True
                   else
                   IsNFTSDrive=False
                   end if

      else
          IsNFTSDrive=False 'Иначе возращаем фалсе
      end if

        Else
            IsNFTSDrive=False 'Иначе возращаем фалсе в случае ошибки с дескриптором
        End If
        ret=CloseHandle(Hnd) ' Закрываем дескриптор
    End Function
Последний раз редактировалось Don Leno 09.04.2014 (Ср) 15:19, всего редактировалось 3 раз(а).

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 47

    TopList