Newsgroup: it.comp.lang.delphi
Titolo: e per *cambiare* il Serial?

Ciao a tutti
Stessa domanda ma al contrario.
Per cambiare (non leggere) il serial di HD quale API bisogna usare? non ho
trovato nessuna informazione nell'Help e nei vari siti su Delphi.
Ciao
Matteo

Il serial viene assegnato alla formattazione.
In verità, nno ricordo di aver mai visto un qualcosa che lo cambiasse.
Poi cambiare l'etichetta di volume.
Al solito, la funzione per fare ciò la trovi cercando:
File functions
nella guida sdk
Bye
AS

 ha scritto nel messaggio
news:a96dpr$2b8n$1...@newsreader1.mclink.it...

In DOS avevo questa funzioncina...
TYPE
  InfoBuffer = RECORD
               InfoLevel : WORD;    {should be zero}
               Serial : LONGINT;
               VolLabel : ARRAY [0..10]OF CHAR;
               FileSystem : ARRAY [0..7]OF CHAR;
             END;
    FUNCTION SetSerial (DiskNum : BYTE;
                       VAR I : InfoBuffer) : WORD;assembler;
      asm
      MOV AH, 69h
      MOV AL, 00h
      MOV BL, DiskNum
      PUSH DS
      LDS DX, I
      INT 21h
      POP DS
      JC @Bad
      XOR AX, AX
      @Bad :
      END;
Che però credo non sia importabile in Delphi+windows
peccato... al massimo rispolvero TP7 e provo a fare qualcosa da DOS...
Però se qualcuno ha qualche idea la accetto volentieri  ^__^
ciao
Matteo

Potrebbe anche funzionare....
Lo sai che in app delphi puoi includere del codice asm?
Bye
AS

 Lo sai che in app delphi puoi includere del codice asm?
Si può inserire senz'altro, ma solo un asm a 32 bit e io non saprei fare la
conversione 16->32
E poi non so se certe chiamate (tipo INT 21h) ci sono ancora, se fanno la
stessa cosa e i parametri da passare sono identici...
Ciao
Matteo

 In verità, nno ricordo di aver mai visto un qualcosa che lo cambiasse.
Il s/n e' memorizzato nel primo settore del disco, in una 
posizione precisa.  E' sufficiente leggere il settore, 
modificarlo e riscriverlo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 se fanno la stessa cosa e i parametri da passare sono identici...
...Windows non ti consente di accedere direttamente
alla tabella dei vettori di interrupt (come accadeva sotto DOS).
La soluzione temo sia quella di scrivere un device driver, che
faccia uso di funzioni specifiche.


 modificarlo e riscriverlo.
Interessante come cosa.
L'unico mio problema è che non saprei essere in grado di sviluppare
(correttamente=funzionante senza disastri) una tal routine...
Qualcuno ha nel suo sgabuzzino di routines la funzione già pronta?? ^__^
Ciao
Matteo

 faccia uso di funzioni specifiche.
Piu' che altro e' un problema di privilegi da un lato (e qui la soluzione
del driver e' l'unica possibile) e di compatibilita' dall'altro (non puoi
confidare che una chiamata che andava sotto DOS vada ancora sotto Win).
Di norma i driver parlano direttamente con l'hardware (a suon di IN, OUT e
MOV nel caso di dispositivi mappati in memoria), percui...
Ad ogni modo, il seriale dell'HD non esiste, nel senso che e' windows ad
allocarlo per ciascuno dei dischi logici all'atto della formattazione,
percui INTERNAMENTE a windows ci sono di sicuro le funzioni per allocare il
seriale dell'HD; sono comunque undocumented e non e' detto che non varino
tra le varie versioni.
Ciaotutti,
*

 modificarlo e riscriverlo.
Mi pare che l'absolute disk read e l'absolute disk write di win (che
comunque chiamano l'INT21) funzionino solo sotto le versioni 9x, ma potrei
sbagliarmi...
Ciaotutti,
*