Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - CD RIpper
Forum - C# / VB.NET - CD RIpper

Avatar
orma674 (Normal User)
Pro


Messaggi: 66
Iscritto: 02/06/2008

Segnala al moderatore
Postato alle 9:12
Venerdì, 17/05/2019
Questo topic è stato chiuso dal moderatore

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

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:12
Venerdì, 17/05/2019
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

https://foren.activevb.de/archiv/vb-net/thread-96765/beitra ...

per capire dove sbagli

Ultima modifica effettuata da nessuno il 17/05/2019 alle 10: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à.
PM
Avatar
orma674 (Normal User)
Pro


Messaggi: 66
Iscritto: 02/06/2008

Segnala al moderatore
Postato alle 10:29
Venerdì, 17/05/2019
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

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6384
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:28
Venerdì, 17/05/2019
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à.
PM
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:08
Lunedì, 20/05/2019
La soluzione ti è stata già offerta da nessuno.

Controlla il link evitando di fare copia / incolla


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM