Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Tolys
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 63
#1

Драйвер для чтения CD-ROM - C++

14.09.2011, 21:05. Просмотров 1154. Ответов 2
Метки нет (Все метки)

Есть код программы, которая должна считывать данные с CD-ROM'а. Скажите, он правильный или нет? Просто меня уверяют, что не правильный:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <windows.h>
#include <winioctl.h>
#include <stdio.h>
 
// ПАРАМЕТРЫ ПО УМОЛЧАНИЮ
#define DEF_FN              "sector"
#define DEF_TO              0x666
#define DEF_FROM            0x000
#define CDROM_SECTOR_SIZE   2048  // for MODE1/MODE2FORM1 only!
 
// АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ
#define argCD     (argv[1])
#define argFN     ((argc > 2)?argv[2]      :DEF_FN)
#define argFROM   ((argc > 3)?atol(argv[3]):DEF_FROM)
#define argTO     ((argc>4)?(atol(argv[4])>argFROM)?atol(argv[4]):argFROM:DEF_TO)
 
main(int argc, char **argv)
{
        int      a;
        FILE     *f;
        HANDLE   hCD;
        char     *buf;
        DWORD    x_read;
        char     buf_n[1024];
 
        // ПРОВЕРЯЕМ АРГУМЕНТЫ
        if (argc<2)
        {
                printf("USAGE: cooked.sector.read PhysCD [filename] [from] [to]\n");
                printf("\tPhysCD   - physical name of CD (\"\\\\.\\G:\")\n");
                printf("\tfilename - file name to store follow sector\n");
                printf("\tfrom     - start sector\n");
                printf("\tto       - end sector\n");
                return 0;
        }
 
        // TITLE
        fprintf(stderr,"cooked sector reader for NT\n");
 
        // ВЫДЕЛЯЕМ ПАМЯТЬ
        buf=malloc(CDROM_SECTOR_SIZE);if (!buf){printf("-ERR:low memory\n");return -1;}
 
        // ОТКРЫВАЕМ УСТРОЙСТВО
        hCD=CreateFile(argCD, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
        if (hCD == INVALID_HANDLE_VALUE) {
                printf("-ERR: error CreateFile(%s,....)\n", argCD); return -1;
        }
 
        // INFO
        printf("read sector from %04d to %04d in %s file\n", argFROM, argTO, argFN);
 
        // ПОЗИЦИОНИРУЕМ УКАЗАТЕЛЬ НА ПЕРВЫЙ ЧИТАЕМЫЙ СЕКТОР
        SetFilePointer (hCD, CDROM_SECTOR_SIZE * argFROM, NULL, FILE_BEGIN);
 
        // ЧИТАЕМ СЕКТОРА ОДИН ЗА ДРУГИМ
        for (a = argFROM; a <= argTO; a++)
        {
                // читаем очередной сектор
                if (ReadFile(hCD, buf, CDROM_SECTOR_SIZE, &x_read, NULL) && x_read)
                {
                        // записываем только что считанный сектор в файл
                        sprintf(buf_n,"%s[%04d].dat",argFN, a);
                        if (f=fopen(buf_n,"wb")){fwrite(buf, 1, x_read, f); fclose(f);}
                        printf("sector [%04d.%04d] read\r",a, argTO);
                }
                        else
                {
                        printf("sector %04d read error\n",a);
                }
        }
}
Если есть неточности, подскажите, как правильно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2011, 21:05     Драйвер для чтения CD-ROM
Посмотрите здесь:

Как открыть файл одновременно для чтения и для записи? - C++
Делаю вот так, но ничего не получается.:( std::fstream inOutCredit(&quot;credit.dat&quot;, std::ios::ate | std::ios::binary); if...

Не открывается файл для чтения - C++
Не могу разобраться с кодом , не получается прописать входной фаил , не принимает его .. #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

Открытие файла для чтения/записи - C++
Помогите реализовать открытие файла под компилятор g++ или DevC++ вечно ругается на std.. using namespace std; не помогает. как...

Не может открыть файл для чтения - C++
Почему-то после закрытия не открывается файл F2? На последнем шаге программы(99 строка) срабатывает проверка: if(!F2) { cout...

составить программу для чтения файлов - C++
Составить программу для реализации того или иного режима работы с файлами ( чтение, запись, открытие, закрытие файла и т.п. )

Открытие бинарного файла для чтения - C++
MS VS 2010 Есть функция, ей передаётся имя бинарного файла для чтения: float detect(string name) { int t; ofstream...

Необходим материал для чтения и практики - C++
Всем доброго! Я почитал немало книг, перелопатил сайтов с практикой и видео по С++. Наступил какой-то период когда читай либо беру слишком...

Функция для чтения из файла в матрицу - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;fstream&gt; using namespace std; void setvector(vector&lt;vector&lt;int&gt; &gt; matrix,...

Организовать запись и чтения из файла для 3 программ - C++
Добрый вечер.Помогите пожалуйста организовать запись и чтения из файла для 3 программ,я там где-как написал что знаю,но все равно не могу...

Вызвано исключение: нарушение доступа для чтения - C++
Всем привет! Пишу программу, которая должна записать в файл в первом столбике рандомную цифру или рандомную букву, а во втором столбике...

Нужно создать класс для чтения из файла - C++
Нужно создать класс для чтения из файла.

Ошибка при открытии файла для чтения - C++
#include &quot;stdafx.h&quot; #include &quot;nhash.h&quot; #include &lt;iostream&gt; #include &lt;tchar.h&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tolys
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 63
30.09.2011, 10:22  [ТС]     Драйвер для чтения CD-ROM #2
Он правильный_)
-=ЮрА=-
30.09.2011, 10:24     Драйвер для чтения CD-ROM
  #3

Не по теме:

Цитата Сообщение от Tolys Посмотреть сообщение
Скажите, он правильный или нет? Просто меня уверяют, что не правильный:
- думаю возникнут проблеммы при чтении многосессионных дисков, но это лишь моё мнение...

Yandex
Объявления
30.09.2011, 10:24     Драйвер для чтения CD-ROM
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru