Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
17/05/19 7:12
orma674
Salve,
c'è qualcuno che mi puo aiutare a capire dove sta l'errore in questo frammento di codice.

Dim byteReaded2 As UInt32
Dim n As Integer = 27
Dim data(2352 * n - 1) As Byte
Dim ptrData As IntPtr = Marshal.AllocHGlobal(2352 * n - 1)
Dim tPositionSector As UInt32 = tStartSector

While (tPositionSector + n < tEndSector)
Dim RAW_READ_INFO1 As RAW_READ_INFO
RAW_READ_INFO1.TrackMode = 2
RAW_READ_INFO1.DiskOffset.LowPart = tPositionSector * 2048
RAW_READ_INFO1.SectorCount = n

Dim ptrInfo As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(RAW_READ_INFO1))
Marshal.StructureToPtr(RAW_READ_INFO1, ptrInfo, False)
Dim ret1 As Int16 = DeviceIoControl(hCDDrive, IOCTL_CONSTANTS.IOCTL_CDROM_RAW_READ, ptrInfo, Marshal.SizeOf(RAW_READ_INFO1), ptrData, RAW_SECTOR_SIZE * n - 1, byteReaded2, IntPtr.Zero)
If ret1 <> 0 Then
Marshal.Copy(ptrData, data, 1, RAW_SECTOR_SIZE * n)
Else
MessageBox.Show("Cannot read INFO!";)
End If
Marshal.FreeHGlobal(ptrInfo)
tPositionSector = tPositionSector + n
End While

Mi ritorno sempre errore!!!
Grazie.
Marcello
aaa
17/05/19 8:12
nessuno
1) Utilizza i tag CODE

2) "Mi ritorna sempre errore" ... Dove? Con quale codice/messaggio?

3) Lo hai scritto tu? Cosa fa? Ce lo commenti?

4) Mancano parti? Da dove viene hCDDrive ?

Dai un'occhiata a questo

foren.activevb.de/archiv/vb-net/thread-96765/beitrag-96765/Audio-CD-rippen-und-mit-lame-en/

per capire dove sbagli
Ultima modifica effettuata da nessuno 17/05/19 8:23
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
17/05/19 8:29
orma674
alve,
c'è qualcuno che mi puo aiutare a capire dove sta l'errore in questo frammento di codice.

Dim byteReaded2 As UInt32 'Crea variabile unsigned per ricevere la quantità di byte letti
Dim n As Integer = 27 'Variabile costante per i settori
Dim data(2352 * n - 1) As Byte 'Crea variabile data dove riceve i byte significativi della traccia
Dim ptrData As IntPtr = Marshal.AllocHGlobal(2352 * n - 1) 'Crea puntatore delle dimensioni della variabile data
Dim tPositionSector As UInt32 = tStartSector 'Crea variabile di posizionamento settore impostando lo start

While (tPositionSector + n < tEndSector) 'Esegue ciclo fino al raggiungimento del valore di fine settore
Dim RAW_READ_INFO1 As RAW_READ_INFO 'Crea variabile con oggetto struttura
RAW_READ_INFO1.TrackMode = 2 'Popola la variabile con codice per la traccia Audio CDDA
RAW_READ_INFO1.DiskOffset.LowPart = tPositionSector * 2048 'popola la variabile con il valore del campo di partenza
RAW_READ_INFO1.SectorCount = n 'popola la variabile con il numero del settore

Dim ptrInfo As IntPtr = Marshal.AllocHGlobal(Marshal.SizeOf(RAW_READ_INFO1)) 'Crea puntatore alla variabile allocando la dimensione
Marshal.StructureToPtr(RAW_READ_INFO1, ptrInfo, False) 'Riferiment al puntatore della variabile
Dim ret1 As Int16 = DeviceIoControl(hCDDrive, IOCTL_CONSTANTS.IOCTL_CDROM_RAW_READ, ptrInfo, Marshal.SizeOf(RAW_READ_INFO1), ptrData, RAW_SECTOR_SIZE * n - 1, byteReaded2, IntPtr.Zero) 'Chiamata del controllo
If ret1 <> 0 Then 'Gestione del messaggio di ritorno
Marshal.Copy(ptrData, data, 1, RAW_SECTOR_SIZE * n) 'Aggiorna la variabile data dai valori puntati
Else 'Altrimenti
MessageBox.Show("Cannot read INFO!";) 'Mostra errore se ritorna messaggio 0
End If 'Fine condizione
Marshal.FreeHGlobal(ptrInfo) 'Lebera il puntatore
tPositionSector = tPositionSector + n 'Avanza la posizione di lettura
End While 'Fine Ciclo

Mi ritorno sempre errore!!! 'Errore dato nella lettura
Dim ret1 As Int16 = DeviceIoControl(hCDDrive, IOCTL_CONSTANTS.IOCTL_CDROM_RAW_READ, ptrInfo, Marshal.SizeOf(RAW_READ_INFO1), ptrData, RAW_SECTOR_SIZE * n - 1, byteReaded2, IntPtr.Zero) 'Chiamata del controllo
Grazie.
Marcello
aaa
17/05/19 14:28
nessuno
Marcello ... ma non hai visto la risposta o sei un robot che ripete la stessa solfa?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
20/05/19 7:08
Thejuster
La soluzione ti è stata già offerta da nessuno.

Controlla il link evitando di fare copia / incolla
mire.forumfree.it/ - Mire Engine
C# UI Designer