'VB 6.0 版 wtL_c
'这不是我写的,它更强悍了。因为可以直接读写物理扇区(CHS),而不是逻辑扇区。 i'}Z>g5D
I];Hx'/<~
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long 8LouCv(>
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long V3]"ROH
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long '//declare has changed T-L;iH~0
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long '//declare has changed '5vgpmn
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long ?[K\X
'如果用绝对扇区写,那么文件的建立打开都不能用VB的 open 语句了。 kb>/R/,9
sG~5O\,E
D
Tw3$:
Private Const GENERIC_READ = &H80000000 ]\Tcy [5
Private Const GENERIC_WRITE = &H40000000 Gj}P6V_
1]lm0bfs
Private Const FILE_SHARE_READ = &H1 !ENb \'>J>
Private Const FILE_SHARE_WRITE = &H2
XC
Tee
Private Const OPEN_EXISTING = 3 .5PcprE/
|Skxa\MI
Private Const INVALID_HANDLE_VALUE = -1 B{0m0-l
&bO0Rn1F
'//file seek 8`/nk`;
Private Const FILE_BEGIN = 0 (!0=~x|Z[
Private Const FILE_CURRENT = 1 38hA guZX
Private Const FILE_END = 2 ua-
cX3E
SmJ6Fm6
Private Const ERROR_SUCCESS = 0& MxXu&.|_
Y"U -Rc
'//device io control <Hq|<^_K
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, ByVal lpOverlapped As Long) As Long Y=#g_(4*
k_c8\::p#
Private Const IOCTL_DISK_GET_DRIVE_GEOMETRY As Long = &H70000 '458752 T;u>]"S
Private Const IOCTL_STORAGE_GET_MEDIA_TYPES_EX As Long = &H2D0C04 TLk=HGw
Private Const IOCTL_DISK_FORMAT_TRACKS As Long = &H7C018 c%+9uu3
Private Const FSCTL_LOCK_VOLUME As Long = &H90018 ZxRD+`
Private Const FSCTL_UNLOCK_VOLUME As Long = &H9001C B3V=;zn3
Private Const FSCTL_DISMOUNT_VOLUME As Long = &H90020 ZJxUv
{J
Private Const FSCTL_GET_VOLUME_BITMAP = &H9006F [|\JIr=of5
f9Hm2wV
'//type qq+fUfB2:
Private Type LARGE_INTEGER J}-,!3qxW
lowpart As Long 5$|wW}SA
highpart As Long #sq$i
End Type Yy"05V.
`Al5(0Q
Private Enum MEDIA_TYPE 3Hli^9&OX_
Unknown liUrw7,
F5_1Pt2_512 ?`oCc[hY
F3_1Pt44_512 MOIH%lpe
F3_2Pt88_512 u}7#3JfLn
F3_20Pt8_512 .d;XLS~
F3_720_512 B0^0d*8t|@
F5_360_512 IaU
F5_320_512 'b*
yYX<
F5_320_1024
7xOrG],E
F5_180_512 W]UGo,
F5_160_512 ci@U
a}T
RemovableMedia JKkR963 O
FixedMedia @qfVt
End Enum LI&+5`
%-6I
Private Type DISK_GEOMETRY 1o;+.
]B
Cylinders As LARGE_INTEGER ZMH
b
MediaType As MEDIA_TYPE P"<