Newsgroup: it.comp.programmare.win32
Titolo: aiutino su CD-ROM

Ho bisogno di un "aiutino".
sto usando la Dll VBASM, presa dal sito comune, per eseguire gli interrupt
da una versione di VB a 16 bit. io sto usando VB4 16 bit.
finora ho provato ad eseguire la funzione int 21h, 3600h, per trovare lo
spazio libero su un disco, e ha funzionato benissimo.
ora vorrei usare la seguente funzione:
INT 21 - CD-ROM device driver - IOCTL INPUT
 AX = 4402h
 BX = file handle referencing character device for CD-ROM driver
 CX = number of bytes to read
 DS:DX -> control block (see #01449)
(Table 01448)
Values for CD-ROM data being requested:
 00h device driver header address
 01h drive head location
 02h reserved
 03h error statistics
 04h audio channel info
(continua...)
Format of CD-ROM control block:
Offset Size Description (Table 01449)
 00h BYTE data being requested (see #01448)
---function 00h---
 01h DWORD device driver header address (see also AH=52h,#01646)
---function 01h---
 01h BYTE (call) addressing mode
  00h HSG
  01h Red Book
 02h DWORD current location of drive's head
  logical sector number in HSG mode
  frame/second/minute/unused in Red Book mode
  (HSG sector = minute * 4500 + second * 75 + frame - 150)
(continua...)
bene, il mio dubbio è seguente:
cosa è il valore in BX? cosa è "character device" ecc. ecc.? non ne ho la
piu pallida idea... ::)))))
è vero o no che in DS e in DX devo mettere rispettivamente VarSeg e VarPtr
di una variabile da me dichiarata, variabile che poi riceverà l'output, e
dalla quale andrò a leggere con Peek?
aiutatemi, please...
MarioH

dalla quale andrò a leggere con Peek?
si ma questo caso VarSeg e' un selector... se come credo quel IOCTL
non e' supportato in PM dovrai allocare il blocco di mem x le tue
operazioni sotto il primo Mb (GlobalDosAlloc,..) e quindi passare alla
call un indirizzo RM seg:off
Una considerazione: 
non so se tu abbia realmente necessita' di usare VB16 (io
personalmente VB non lo uso anzi lo detesto.. ma questo poco
importa).. o cmq codice 16bit.. non so cosa faccia questa  VBASM.DLL..
ma posso immaginare.. cmq sia se dovessi effetturare operazioni
physical/raw su HDs, CD , etc prima valuterei i VWIN32_DIOC_DOS_IOCTL
offerti da VWin32 e se prorpio non riesciuscissi con questi passarei
ai service DPMI.. ovviamente dtiamo parlando di win9x .. x NT e'
tutt'altra storia...
Saluti,
      Walker Boh

grazie mille, proverň un po in tutti e due i modi.
solo una cosa. quall'handle a quel file cdrom.sys, me lo ottengo "aprendo"
il file con l'interrupt (che ora non ricordo qual č) che apre e restituisce
l'handle?
se volessi usare vwin32, usando qunidi createfile e deviceiocontrol (sono
queste le funzioni giuste, vero?), in ogni caso devo passare a
deviceiocontrol dei valori di registro (eax, ebx, ecc.) corrispondenti a
quelli descritti nella interrupt table che ho trovato, č cosě? (cč un
esempio su MSDN che apre il cassetto del cd-rom usando questo metodo). in
questo caso in ebx devo mettere sempre l'handle ottenuto nello stesso modo
di sopra, o con qualche Api che faccia la stessa cosa?
MarioH

di sopra, o con qualche Api che faccia la stessa cosa?
nessun handle xche' stai utilizzando lo pseudo block device creato da
MSCDEX.. quindi lavori colle lettere o meglio con un numero
progressivo (0==A:,1....) 
Un'ultima nota.. l'accesso al CD attraverso int 2Fh o vvwin32
ovviamente non funzionera' nel caso si tratti di una periferica SCSI,
in tal dovresti utilizzare f.e. ASPI.
 Saluti,
           Walker Boh

grazie mille, davvero... se dovessi avere problemi, magari mi rifaccio vivo,
tanto ho visto che sei un vero esperto in materia... ::)))))
MarioH