Russian Qt Forum
Ноябрь 01, 2024, 15:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: получение серийника dvd  (Прочитано 1486 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Июль 18, 2015, 11:41 »

Здравствуйте использую следующий алгоритм чтобы получить идентификатор тома диска
Код
C++ (Qt)
#include <stdio.h>
 
#define SEC_SIZE 2048
#define VD_N 16
 
unsigned cdid(unsigned char pvd[SEC_SIZE])
   {
   unsigned char part[4] = {0};
   int i;
 
   for(i = 0; i < SEC_SIZE; i += 4)
       {
       part[3] += pvd[i + 0];
       part[2] += pvd[i + 1];
       part[1] += pvd[i + 2];
       part[0] += pvd[i + 3];
       }
 
   return (part[3] << 24) + (part[2] << 16) + (part[1] << 8) + part[0];
   }
 
int main(int argc, char *argv[])
   {
   FILE *in;
   unsigned char buf[SEC_SIZE];
 
   if(argc != 2)
       {
       fprintf(stderr, "Call: cdid /dev/path\n");
       return 1;
       }
 
   /* Open device */
   in = fopen(argv[1], "rb");
   if(in == NULL)
       {#include <stdio.h>
 
#define SEC_SIZE 2048
#define VD_N 16
 
unsigned cdid(unsigned char pvd[SEC_SIZE])
   {
   unsigned char part[4] = {0};
   int i;
 
   for(i = 0; i < SEC_SIZE; i += 4)
       {
       part[3] += pvd[i + 0];
       part[2] += pvd[i + 1];
       part[1] += pvd[i + 2];
       part[0] += pvd[i + 3];
       }
 
   return (part[3] << 24) + (part[2] << 16) + (part[1] << 8) + part[0];
   }
 
int main(int argc, char *argv[])
   {
   FILE *in;
   unsigned char buf[SEC_SIZE];
 
   if(argc != 2)
       {
       fprintf(stderr, "Call: cdid /dev/path\n");
       return 1;
       }
 
   /* Open device */
   in = fopen(argv[1], "rb");
   if(in == NULL)
       {
       perror(NULL);
       return 2;
       }
 
   /* Seek to primary volume descriptor */
   if(fseek(in, VD_N * SEC_SIZE, SEEK_SET) != 0)
       {
       perror(NULL);
       return 2;
       }
 
   /* Read descriptor */
   if(fread(buf, 1, SEC_SIZE, in) != SEC_SIZE)
       {
       perror(NULL);
       return 2;
       }
 
   /* Caclculate disc id */
   printf("%08X\n", cdid(buf));
 
   return 0;
   }



Проблема в том что мне нужно чтобы идентификатор тома полученный с помощью данного алгоритма не менялся так вот идентификатор диска cd-rw не меняется после записи и последующих перезаписей а вот идентификатор диска dvd-rw -меняется при каждом цикле перезаписи. Диски dvd пишу growisofs что можно сделать чтобы идентифкатор полученный с помощью данного метода не менялся и на dvd дисках?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #1 : Июль 20, 2015, 14:12 »

этот вопрос с Qt мало чего имеет общего. Скорее всего как то ставить где то галку в настройках записывающей программы "не стрирать серийник двд"...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 23.