Freut mich
Hab die API Deklarationen völlig vergessen:
Option Explicit
Public Declare Function GetDiskFreeSpace Lib "kernel32.dll" Alias _
"GetDiskFreeSpaceA" ( _
ByVal lpRootPathName As String, lpSectorsPerCluster As Long, _
lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, _
lpTotalNumberOfClusters As Long _
) As Long
Public Declare Function DeviceIoControl Lib "kernel32" ( _
ByVal hDevice As Long, ByVal dwIoControlCode As Long, _
ByRef lpInBuffer As Any, ByVal nInBufferSize As Long, _
ByRef lpOutBuffer As Any, ByVal nOutBufferSize As Long, _
ByRef lpBytesReturned As Long, ByRef lpOverlapped As OVERLAPPED _
) As Long
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, ByRef lpSecurityAttributes As _
SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long _
) As Long
Public 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
Public 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
Public Declare Function LockFile Lib "kernel32" ( _
ByVal hFile As Long, ByVal dwFileOffsetLow As Long, _
ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToLockLow As Long, _
ByVal nNumberOfBytesToLockHigh As Long _
) As Long
Public Declare Function UnlockFile Lib "kernel32" ( _
ByVal hFile As Long, ByVal dwFileOffsetLow As Long, _
ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToUnlockLow As Long, _
ByVal nNumberOfBytesToUnlockHigh As Long _
) As Long
Public Declare Function SetFilePointer Lib "kernel32" ( _
ByVal hFile As Long, ByVal lDistanceToMove As Long, _
lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long _
) As Long
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" ( _
lpVersionInformation As OSVERSIONINFOEX _
) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Destination As Any, Source As Any, ByVal length As Long _
)
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" ( _
ByVal nDrive As String _
) As Long
Public Declare Function FlushFileBuffers Lib "kernel32" ( _
ByVal hFile As Long _
) As Long
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long _
) As Long
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type
Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 2
Public Const FILE_ATTRIBUTE_NORMAL = &H80 ' ?
Public Const GENERIC_READ = &H80000000 ' Generic read flag
Public Const GENERIC_WRITE = &H40000000 ' Generic write flag
Public Const FILE_READ_ACCESS = &H1 ' Readrights
Public Const FILE_WRITE_ACCESS = &H2 ' Writerights
Public Const FILE_SHARE_READ = &H1 ' shared read rights
Public Const FILE_SHARE_WRITE = &H2 ' shared write rights
Public Const OPEN_EXISTING = 3 ' open an existing file
Public Const INVALID_HANDLE_VALUE = -1& ' invalid handle
Public Function LoWord(ByVal nDWord As Long) As Long
LoWord = CLng("&H" & Left$(Right$("00000000" & Hex$(nDWord), 8), 4))
End Function
Public Function HiWord(ByVal nDWord As Long) As Long
HiWord = CLng("&H" & Right$(Right$("00000000" & Hex$(nDWord), 8), 4))
End Function
Public Function GetSectorSize(ByVal drv As String, ByRef lSize As Long) As _
Boolean
Dim lSpC As Long, lBpS As Long, lNoFC As Long, lTNoC As Long
If GetDiskFreeSpace(Left$(drv, 1) & ":", lSpC, lSize, lNoFC, lTNoC) <> 0 _
Then _
GetSectorSize = True
End Function |