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