- Private Const CREATE_ALWAYS As Long = 2
- Private Const FILE_BEGIN As Long = 0
- Private Const GENERIC_WRITE As Long = &H40000000
-
- Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
- Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
- Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
- Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
-
- Public Function CreateBigFile(ByRef vsFileName As String, ByVal vnSize As Variant) As Boolean
- Dim hFile As Long
- Dim nHigh As Long
- Dim nLow As Long
- Dim nTmp As Long
- Const hFFFFFFFF = 4294967295#
- Const h80000000 = 2147483648#
- hFile = CreateFile(vsFileName, GENERIC_WRITE, 0, ByVal 0&, CREATE_ALWAYS, 0, 0)
- If hFile <> -1 Then
- If CCur(vnSize) > hFFFFFFFF Then
- nHigh = Fix(vnSize / hFFFFFFFF)
- vnSize = vnSize - CCur(hFFFFFFFF * nHigh)
- End If
-
- If CCur(vnSize) > h80000000 Then
- nTmp = Fix(vnSize / h80000000)
- nLow = vnSize - h80000000 * nTmp
-
- nLow = nLow + nTmp * &H80000000
- Else
- nLow = CLng(vnSize)
- End If
-
- SetFilePointer hFile, nLow, nHigh, FILE_BEGIN
- SetEndOfFile hFile
-
- CreateBigFile = True
- CloseHandle hFile
- End If
- End Function
Private Const CREATE_ALWAYS As Long = 2
Private Const FILE_BEGIN As Long = 0
Private Const GENERIC_WRITE As Long = &H40000000
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Public Function CreateBigFile(ByRef vsFileName As String, ByVal vnSize As Variant) As Boolean
Dim hFile As Long
Dim nHigh As Long
Dim nLow As Long
Dim nTmp As Long
Const hFFFFFFFF = 4294967295#
Const h80000000 = 2147483648#
hFile = CreateFile(vsFileName, GENERIC_WRITE, 0, ByVal 0&, CREATE_ALWAYS, 0, 0)
If hFile <> -1 Then
If CCur(vnSize) > hFFFFFFFF Then
nHigh = Fix(vnSize / hFFFFFFFF)
vnSize = vnSize - CCur(hFFFFFFFF * nHigh)
End If
If CCur(vnSize) > h80000000 Then
nTmp = Fix(vnSize / h80000000)
nLow = vnSize - h80000000 * nTmp
nLow = nLow + nTmp * &H80000000
Else
nLow = CLng(vnSize)
End If
SetFilePointer hFile, nLow, nHigh, FILE_BEGIN
SetEndOfFile hFile
CreateBigFile = True
CloseHandle hFile
End If
End Function