Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/07/2008, 07:01
wyxchari
 
Fecha de Ingreso: junio-2008
Mensajes: 12
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Acceso a sectores desde VB

Weno, lo arreglé solito sin poner copymemory ni nada.
Ya no hace falta que me respondáis.
Chao.

Estructura básica en VisualBasic para leer un sector pasado en variable sector:
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 Function ReadFile Lib "kernel32" _
(ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, _
lpOverlapped As Long) As Long

Dim q As Long 'temporal
Dim q2 As Double 'temporal
Dim hdevice As Long 'identificador de la unidad abierta
Dim espa As String * 512 'cadena lectura o grabación
Dim ret As Long 'bytes leidos o grabados
Dim sector As double 'sector desplazamiento desde inicio unidad
Dim byt As Long 'bytes de desplazamiento desde inicio unidad
Dim byt2 As Long 'bytes de desplazamiento2 desde inicio unidad

Private Sub Form_Activate()
hdevice = CreateFile("\\.\D:, &HC0000000, 3, 0&, 3, 0&, 0&)
sector=0 'Sector a leer
q2 = sector * 512#
byt2 = Fix(q2 / 4294967296#)
byt = q2 - byt2 * 4294967296#
q = SetFilePointer(hdevice, byt, byt2, 0&)
If q <> byt Then goto error
ReadFile hdevice, ByVal espa, 512, ret, ByVal 0&
If ret <> 512 Then GoTo error
'Salida del sector en variable de cadena: espa
End sub

Última edición por wyxchari; 18/07/2008 a las 05:39