Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2008, 05:46
wyxchari
 
Fecha de Ingreso: junio-2008
Mensajes: 12
Antigüedad: 15 años, 11 meses
Puntos: 1
Clusters y sectores desde VisualBasic

Saludos a todos.

Estoy interesado en hacer un programa en VB para leer sectores de un pendrive que está como unidad G: . He leido muchísimo por Google, por foros, en inglés y español, pero no se encuentra casi nada. Hasta aquí llego. Creo que me falla algo en el copymemory o similar.

¿Podría alguien ayudarme a seguir? Sólo me falta una línea.

Me defiendo bastante bien con la APIs pero nunca he entendido del todo el puto copymemory, los buffers y los byval.

Gracias de antemano.


Private Declare Function CreateFile Lib "kernel32" _
Alias "CreateFileA" _
(ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByVal lpSecurityAttributes As Any, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long

Private Declare Function SetFilePointer Lib "kernel32" _
(ByVal hFile As Long, _
ByVal lDistanceToMove As Long, _
lpDistanceToMoveHigh As Long, _
ByVal dwMoveMethod As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)

Private Declare Function ReadFile Lib "kernel32" _
(ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, _
lpOverlapped As Long) As Long

Private Declare Function WriteFile Lib "kernel32" _
(ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
lpOverlapped As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Private Sub Form_Activate()

Dim ret As Long
Dim espacio As String * 512

hDevice = CreateFile("\\.\G:", &HC0000000, 3, 0&, 3, 0&, 0&)
Print "Handle "; hDevice
If hDevice = -1 Then GoTo sale

inicio = 0
q = SetFilePointer(hDevice, inicio, 0&, 0&)
Print "Pointer "; q
If q <> inicio Then GoTo error

q = ReadFile(hDevice, ByVal espacio, 512, ret, ByVal 0&)
Print "Bytes leidos "; ret
If ret = 0 Then GoTo error

'CopyMemory ByVal ss(0), ByVal espacio, 512

GoTo sale
error:
CloseHandle hDevice
sale:
End Sub

Última edición por wyxchari; 15/07/2008 a las 13:01