Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скрытые области файлов

279
04 июля 2006 года
bave
456 / / 07.03.2004
В файловой системе ДОСа такое своиство хорошее есть - кратность
размера файла 512. Разницу между фактическим размером файла и
тем которое он занимает на диске можно было использовать под свои нужды и причем она была недоступна пользователю для просмотра и что
самое гланое при копировании файла копировалась только полезная часть, а скрытая нет.
----------------------------------------------------------------
Я это всё говорю к тому, что теперь возникла неоходимость подобные выходки повторить в Windows и возникло несколько проблем
(у меня Windows 2000 Pro):
Винда не позволяет работать с винтом используя физическую
адресацию и вообще на попытки выполнять биосовские прерывания
выдает мессаги - мол, чтож ты гад делаешь? И ДОСовские прерывания
винде тоже не все нравятся, что собсно есесссвено для 2000-ной...
-------------------------------------------------------------
Вообщем, вопрос в том как использовать скрытые области файлов в
Windows?
398
04 июля 2006 года
Alexandoros
630 / / 21.10.2005
Вон хекседитор работает ведь с кластерами. Значит и ты сможеш. Прочитай в msdn CreateFile про открытие физ диска. Там через \\?\...
499
05 июля 2006 года
madjahed
149 / / 14.01.2004
Для WinXP,2000,2003 и т.п. можно использовать функции CreateFile,ReadFile,WriteFile, указывая в качестве имени файла название диска, а для Win95/98/Me юзать досовские прерывания.
279
06 июля 2006 года
bave
456 / / 07.03.2004
Позырил MSDN - не нащёл там ничего что могло бы мне помочь
использовать ReadFile и WriteFile для записи в скрытые области файлов...
Если вы имели ввиду возможность создавать скрытые файлы то это не то...
3
06 июля 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=bave]Позырил MSDN - не нащёл там ничего что могло бы мне помочь
использовать ReadFile и WriteFile для записи в скрытые области файлов...
Если вы имели ввиду возможность создавать скрытые файлы то это не то...[/QUOTE]
Смотрим в книгу, видим...

А теперь читаем MSDN по-слогам:
[QUOTE=MSDN]
CreateFile
......

Physical Disks and Volumes

[COLOR=Red]You can use the CreateFile function to open a physical disk drive or a volume.[/COLOR] The function returns a handle that can be used with the DeviceIoControl function. This enables you to access the disk's partition table. It is potentially dangerous to do so, since an incorrect write to a disk could make its contents inaccessible. The following requirements must be met for such a call to succeed:


The caller must have administrative privileges. For more information, see Running with Special Privileges.
The dwCreationDisposition parameter must have the OPEN_EXISTING flag.
When opening a volume or floppy disk, the dwShareMode parameter must have the FILE_SHARE_WRITE flag.
When opening a physical drive, x, the lpFileName string should be of the form \\.\PHYSICALDRIVE<x>. Hard disk numbers start at zero. The following table shows some example physical drive strings.

String Meaning
\\.\PHYSICALDRIVE0 Opens the first physical drive.
\\.\PHYSICALDRIVE2 Opens the third physical drive.

For an example showing how to open a physical drive, see Calling DeviceIoControl.

When opening a volume or floppy drive, the lpFileName string should be of the form \\.\<x>:. Do not use a trailing backslash. This would indicate the root directory of the drive. The following table shows some example drive strings.

String Meaning
\\.\A: Opens drive A (floppy drive).
\\.\C: Opens drive C (volume).

You can also open a volume by referring to its volume name. For more information, see Naming a Volume.

Volume handles may be opened as noncached at the discretion of the file system, even when the noncached option is not specified with CreateFile. You should assume that all Microsoft file systems open volume handles as noncached. The restrictions on noncached I/O for files apply to volumes as well.

A file system may or may not require buffer alignment even though the data is noncached. However, if the noncached option is specified when opening a volume, buffer alignment is enforced regardless of the file system on the volume. It is recommended on all file systems that you open volume handles as noncached and follow the noncached I/O restrictions.

[/QUOTE]
260
06 июля 2006 года
Ramon
1.1K / / 16.08.2003
А еще в NTFS есть файловые потоки, и про них читается там же, в MSDN'е.

PS: Для товарищей которые не могут или не хотят искать то что ИМ нужно, вводная статья от господ из Microsoft лежит здесь:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/file_streams.asp
261
06 июля 2006 года
ahilles
1.5K / / 03.11.2005
мне кажется что в винде тебе придётся писать драйвер а через createfile ты многого не добьёшся.
3
06 июля 2006 года
Green
4.8K / / 20.01.2000
Это зачем ещё писать драйвер?
279
06 июля 2006 года
bave
456 / / 07.03.2004
Вот я дтоже думаю что придётся...
Мне же нужен последний сектор файла, а если в нём мало места,
то дописать несколько байт в файл, чтоб залесть на следующий сектор.
А с секторами через API шные функции не порабоать...
--------------------------------------------
3
06 июля 2006 года
Green
4.8K / / 20.01.2000
Да.... великий знаток API...
Если не можешь прочитать то что написано в форуме, а уж тем более MSDN, то тогда, однозначно, надо писать драйвер... для прокладки между экраном и клавиатурой.
261
10 июля 2006 года
ahilles
1.5K / / 03.11.2005
когда ты пишешь драйвер то тебе можно будет работать с командами in и out следовательно ты будешь работать напрямую с HDD как в DOS
3
10 июля 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=ahilles]когда ты пишешь драйвер то тебе можно будет работать с командами in и out следовательно ты будешь работать напрямую с HDD как в DOS[/QUOTE]
Ну, допустим не in/out, но не важно.
ЗАЧЕМ?
Зачем драйвер?
Зачем, как в DOS?

Патамушта ДРАЙВЕР - магическое слово, заклинание, которое спасает от всех невзгод!

М-да... а можно ещё руками провода коротить, получится как BIOS...
279
14 июля 2006 года
bave
456 / / 07.03.2004
Великий знаток API, чтож ты там прочитал, чтоб в свободное место последнего сектора файла писать. Изначально вопрос и был задан тем, кто это уже делал в винде, а не тем кто MSDN куски копирует и говорит вон... там... где-то написано. У меня это кстати на русском хотя бы есть.
-------------------------------------------
Давай знаток напиши как писать используя API в свободную часть последнего сектора, кторая кстати не должна при этом становиться частью
файла. Застать всех почувствоватьсебя идиотами))
-------------------------------------------
Для тебя магическое, а для людей программа имеющая приоритет ядра.
3
14 июля 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=bave]Великий знаток API, чтож ты там прочитал, чтоб в свободное место последнего сектора файла писать.
[/QUOTE]
Мне повторить цитату? Или ты цветов, выделяющих главные места, не различаешь?

[QUOTE=bave]Изначально вопрос и был задан тем, кто это уже делал в винде, а не тем кто MSDN куски копирует и говорит вон... там... где-то написано.
[/QUOTE]
Там не где-то, а конкретные места показаны.
Или степень отупления достигла апогея у кого-то, кто только куски кода в свою программу копирует?

[QUOTE=bave]
У меня это кстати на русском хотя бы есть.
[/QUOTE]
Ну то что ты MSDN в оригинале не в состоянии прочесть я уже понял.
Только, видимо, и русский с трудом понимается.

[QUOTE=bave]
Для тебя магическое, а для людей программа имеющая приоритет ядра.
[/QUOTE]
А на фиг тебе "приоритет ядра"? Ты ж не в память лезешь, а на внешний девайс. Может, тебе ещё и ксива милицейская требуется? :D
Максимум что надо, так это привелегии админа у процесса.

[QUOTE=bave]
Давай знаток напиши как писать используя API в свободную часть последнего сектора, кторая кстати не должна при этом становиться частью файла.
[/QUOTE]
Ага... щаз...
Ты только по хорошему попроси, слова волшебные вспомни. Небось в школе быть вежливым учили... хотя бы когда самому что-то надо.

[QUOTE=bave]
Застать всех почувствоватьсебя идиотами))
[/QUOTE]
А вот это пожалуйста. Приготовься чувствовать!

Я умею не только копировать куски MSDN, но ещё и читать их, а так же переводить для идиотов.
Цитата:
[COLOR=RED]
"You can use the CreateFile function to open a physical disk drive or a volume.
[/COLOR]


Перевод гласит:
Вы можете (эх зналиб они, что ты не в состоянии) использовать функцию CreateFile для открытия физического диска или логических разделов.

Дальше рассказывается, как это сделать, но я переводить не буду т.к. бессмыслено. Покажу на пальцах:

Код:
#include <windows.h>

int main()
{
    HANDLE hDevice = CreateFile("\\\\.\\C:",
            GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
            NULL, OPEN_EXISTING, 0, NULL);
   
    if(INVALID_HANDLE_VALUE == hDevice) {
        return -1;
    }

    char bufferToRead[512];
    DWORD bytes;
    if( !ReadFile(hDevice, bufferToRead, sizeof bufferToRead, &bytes, NULL) ) {
        return -1;
    }

    return 0;
}

Запусти и просмотри содержимое буфера на выходе. Ты будешь удивлен.
Не первый ли это сектор логического диска C: ?

А теперь объясни на кой хрен тебе драйвер и как ты его собирался писать, если конкретный пункт в MSDN не в состоянии прочесть?

P.S. Что-то я сегодня добрый. Наверное, день особенный.
398
15 июля 2006 года
Alexandoros
630 / / 21.10.2005
bave Не гони волну, 10 раз же уже ж сказали, что через CreateFile, а ты еще и возмущаешся. Драйвер все равно в ближайшее время не напишеш.
7
29 августа 2007 года
@pixo $oft
3.4K / / 20.09.2006
А если в ReadFile указать выровненную на размер сектора длину,то считается из файла то,что находится за его концом?
261
29 августа 2007 года
ahilles
1.5K / / 03.11.2005
а ты сам попробуй, конечно не получится. для надо открыть диск, через createfile (например \\.\C: ) и работать с ним как с большим файлом который представляет из себя весь диск.
1.6K
29 августа 2007 года
Vov4ick
476 / / 01.02.2007
То, что хочет bave пройдёт только на ФАТ, НТФС работает по-другому, но у неё, насколько я помню, существуют официальные места, где можно хранить информацию, связанную с файлами, но не лежащую в них, автору надо почитать доки по апи, специфичных для НТФС.
[QUOTE=Green]М-да... а можно ещё руками провода коротить, получится как BIOS...[/QUOTE] Юмор? :-)
Драйвер даст возможность обращаться к физическому устройству, а не к логическому как ЦреатеФиле, но возникнут проблемы как с нестандартными устройствами (типа флешей) так и с самой виндой, поэтому я бы не стал это рекомендовать, если у автора нет опыта в написании драйверов.
А зачем вообще это нужно? Система защиты от копирования?
3
29 августа 2007 года
Green
4.8K / / 20.01.2000
Цитата: Vov4ick

Драйвер даст возможность обращаться к физическому устройству, а не к логическому как ЦреатеФиле,


Юмор?
Что ты подразумеваешь под "физическим устройством"?

P.S. Отдельное спасибо @pixo $oft за поднятие темы годовалой давности.

1.6K
29 августа 2007 года
Vov4ick
476 / / 01.02.2007
[QUOTE=Green]Что ты подразумеваешь под "физическим устройством"?[/QUOTE]Жёсткий диск как прибор. Логическое - его раздел.
[QUOTE=Green]P.S. Отдельное спасибо @pixo $oft за поднятие темы годовалой давности.[/QUOTE] А вот слона и не заметил ;-)
3
29 августа 2007 года
Green
4.8K / / 20.01.2000
Цитата: Vov4ick
Жёсткий диск как прибор. Логическое - его раздел.


Как прибор... :D

А теперь внимательно, только внимательно, читаем ещё раз цитату из MSDN? которая висит здесь уже больше года:
[QUOTE=MSDN]
CreateFile
......

Physical Disks and Volumes

[COLOR=Red]You can use the CreateFile function to open a physical disk drive or a volume.[/COLOR] The function returns a handle that can be used with the DeviceIoControl function. This enables you to access the disk's partition table. It is potentially dangerous to do so, since an incorrect write to a disk could make its contents inaccessible. The following requirements must be met for such a call to succeed:


The caller must have administrative privileges. For more information, see Running with Special Privileges.
The dwCreationDisposition parameter must have the OPEN_EXISTING flag.
When opening a volume or floppy disk, the dwShareMode parameter must have the FILE_SHARE_WRITE flag.
When opening a physical drive, x, the lpFileName string should be of the form \\.\PHYSICALDRIVE<x>. Hard disk numbers start at zero. The following table shows some example physical drive strings.

String Meaning
\\.\PHYSICALDRIVE0 Opens the first physical drive.
\\.\PHYSICALDRIVE2 Opens the third physical drive.

For an example showing how to open a physical drive, see Calling DeviceIoControl.


When opening a volume or floppy drive, the lpFileName string should be of the form \\.\<x>:. Do not use a trailing backslash. This would indicate the root directory of the drive. The following table shows some example drive strings.

String Meaning
\\.\A: Opens drive A (floppy drive).
\\.\C: Opens drive C (volume).

You can also open a volume by referring to its volume name. For more information, see Naming a Volume.

Volume handles may be opened as noncached at the discretion of the file system, even when the noncached option is not specified with CreateFile. You should assume that all Microsoft file systems open volume handles as noncached. The restrictions on noncached I/O for files apply to volumes as well.

A file system may or may not require buffer alignment even though the data is noncached. However, if the noncached option is specified when opening a volume, buffer alignment is enforced regardless of the file system on the volume. It is recommended on all file systems that you open volume handles as noncached and follow the noncached I/O restrictions.
[/QUOTE]
Или этого слона ты тоже не заметил?

1.6K
30 августа 2007 года
Vov4ick
476 / / 01.02.2007
Да, верно. Но иногда с диском бывает нужно сделать больше, чем чтение или запись, тогда без драйвера не обойтись.
3
30 августа 2007 года
Green
4.8K / / 20.01.2000
И что?
Иногда нужно сделать апгрейд диска. Тогда без отвертки не обойтись.
Как это соотносится с темой топика?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог