Конференция "WinAPI" » GetVolumeInformation [D6, D7]
 
  • dest81 (11.12.07 18:11) [0]
    Откуда берет ф-ция GetVolumeInformation серийный номер винчестера? И может ли такое быть что фирма закупила нескольков винчестеров с одним серийным номером?
  • Джо © (11.12.07 18:13) [1]
    GetVolumeInformation понятия не имеет о серийном номере винчестера.
    Она позволяет получить номер ТОМА, каковой вообще присваивается при форматировании. И столь же легко изменяется. И в нем даже намека нет на уникальность.
  • dest81 (11.12.07 18:15) [2]
    Понял! А как получить какой-то уникальный номер ну типа серийный номер винчестера???
  • Джо © (11.12.07 18:28) [3]
    Ищи на сайте Алекс Коншина (Alex Konshin). Ссылка есть в его анкете на сайте.
  • Kolan © (11.12.07 18:28) [4]
    > [2] dest81   (11.12.07 18:15)
    > Понял! А как получить какой-то уникальный номер ну типа
    > серийный номер винчестера???

    GUID сойдет?

    CoCreateGUID
  • Германн © (11.12.07 18:35) [5]

    > Джо ©   (11.12.07 18:28) [3]
    >
    > Ищи на сайте Алекс Коншина (Alex Konshin). Ссылка есть в
    > его анкете на сайте.
    >

    Он не обновил анкету после обвала. Поэтому вот ссылка на его сайт:
    http://home.earthlink.net/~akonshin/index.htm
  • DVM © (11.12.07 23:15) [6]

    > А как получить какой-то уникальный номер ну типа серийный
    > номер винчестера???

    Только имей в виду, что даже с пом модуля Коншина можно получить данную инфу далеко не со всех жестких дисков (мне такие попадались многократно)
  • opv88 (10.02.08 15:58) [7]
    Функция GetVolumeInformation позволяет получить серийный номер диска, правда в десятеричном формате. Переведя его в шестнадцатиричный формат получим тот номер, который указан производителем и определяется некоторыми тестовыми программами. Вот простая процедурка на Delphy 7:
    procedure TForm1.Button1Click(Sender: TObject);
    VAR
     SerialNum:DWORD;
     a,b:DWORD;
     Buffer,disk :Array[0..255]of char;
    begin
     StrPCopy(@disk,Edit1.text);
     if GetVolumeInformation(@disk,Buffer,sizeof(Buffer),@SerialNum,a,b,nil,0) then
     begin
       Edit2.Text:=IntToStr(SerialNum);
       Edit3.Text:=Buffer;
       Edit4.Text:=IntToStr(a);
     end;
    end;

    Здесь SerialNum - серийный номер диска, отображаемый в поле edit2.
  • ketmar © (10.02.08 17:31) [8]
    >[7] opv88 (2008-02-10 15:58:00)
    ты откуда вылез с такой ерундой? залезь назад. и из этого «назада» почитай немного о структуре бут-сектора.

    ---
    Understanding is not required. Only obedience.
  • Джо © (10.02.08 18:35) [9]
    Удалено модератором
  • Джо © (10.02.08 18:36) [10]
    > [7] opv88   (10.02.08 15:58)
    > Здесь SerialNum - серийный номер диска, отображаемый в поле


    Здесь SerialNum - номер, никакого отношения не имеющий к «серийному номеру» диска.
 
Конференция "WinAPI" » GetVolumeInformation [D6, D7]
Есть новые Нет новых   [134431   +15][b:0][p:0]