Kterak zjistit seriove cislo disku

Martin Patka smartin na mikroservis.cz
Sobota Listopad 7 01:07:56 CET 1998


Zdravim, 

> Ovsem potrebuji rozlisovat image podle ruznych verzi HW na stanicich.
> V dosu to delam tak, ze si prectu seriove cislo disku a mam na serveru


doufam, ze nejsem moc od veci, ale pro seriove cislo disku se da sahnout
primo pomoci IN/OUT instrukci. Nevim jak je to v Linuxu, programovat
v nem neumim, ale myslim, ze by to slo i v nem. Kdysi jsem pro tento
ucel delal v DOSu programek pro kolegu, ktery si takte chtel "zamknout" 
program ve FOX. Uz si to bohuzel nepamatuji presne, ted koukam do 
zdrojaku a _marne_ vzpominam.

ale vypada to, ze staci poslat OUT 0ECh na adresu 1F7h, pak cist 
byte ze stejne asdresy a pockat na 4. bit. Pak jiz lze smyckou cist 
512byte opakovane z 1F0. Seriove cislo by melo byt od 20. bytu 
a 20 bytu dlouhe.


Timto se vlastne nacte sely systemovy sektor disku, ve kterem je
spousta zajimavych informaci - bohuzel uz si nepamatuji kde co je.
V kazdem pripade je tam v textovem tvaru i typ a vyrobce disku.

Doufam ze Vam to k necemu bude - zdrojacek neni dlouhy, tak Vam to 
pribaluji.


CODE        SEGMENT   'CODE'
            ASSUME    CS:CODE
;*************************************************************************
            ORG 0H    ; Preklad od adresy 0h (.BIN)
;*************************************************************************
HDINFO      PROC      FAR
        JMP START
;*************************************************************************
        DB  'IDE INFO'
        DB  1AH
;*************************************************************************
BUFFER:     DB   100h dup(?)  ; Buffer pro sector
SERNO       EQU OFFSET BUFFER + 20D ; Zde je ser. cislo

START:
        PUSHA    ; Uloz vsechny registry

FOX_TEST:
        MOV DX,1F7H
        MOV AL,0ECH
        OUT DX,AL
        MOV CX,0FFFFH
LAB2:
        IN AL,DX
        AND AL,8
        JNZ LAB4
        DEC CX
        JNZ LAB2
        JMP KONEC
LAB4:
        MOV CX,100H
        MOV DI,OFFSET CS:BUFFER
        MOV DX,1F0H
LAB5:
        IN AX,DX   ; precti word
        MOV CS:[DI],AH  ; uloz
        MOV CS:[DI+1],AL  ; uloz
        INC DI   ; increment adresy
        INC DI   ; increment adresy
        LOOP LAB5   ;

FOX1:
tady jsem mel jeste nejake zpracovani, ale sektor je v CS:BUFFER

KONEC:
        POPA    ; obnov registry
        RETF    ; FAR navrat

CODE        ENDS
        END HDINFO



Zatim nashle

----------------------------------------------------------------------
Martin Patka                      network & server administrator
----------------------------------------------------------------------
Mikroservis v.o.s.                e-mail:       martin na mikroservis.cz
Nerudova 45                       phone work:   +420 431 624301, 3719
51301, Semily 1                   phone home:   +420 431 624592
Czech Republic                   ICQ:  4512227
http://www.mikroservis.cz         http://www.mikroservis.cz/~martin
----------------------------------------------------------------------




Další informace o konferenci Linux