Merge pull request #3 from rad9800/main

Fix GetFileSize for over 2GB
This commit is contained in:
vxunderground 2022-07-17 13:59:28 -05:00 committed by GitHub
commit 39661de600
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,33 +1,37 @@
DWORD RfGetFileSizeFromPathDisposeHandleW(PWCHAR Path, DWORD dwFlagsAndAttributes)
LONGLONG RfGetFileSizeFromPathDisposeHandleW(PWCHAR Path, DWORD dwFlagsAndAttributes)
{
DWORD Size = ERROR_SUCCESS;
LARGE_INTEGER LargeInteger;
HANDLE hHandle = INVALID_HANDLE_VALUE;
hHandle = CreateFileW(Path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, dwFlagsAndAttributes, NULL);
if (hHandle == INVALID_HANDLE_VALUE)
return INVALID_FILE_SIZE;
Size = GetFileSize(hHandle, NULL);
if (GetFileSizeEx(hHandle, &LargeInteger))
{
if (hHandle)
CloseHandle(hHandle);
return LargeInteger.QuadPart;
}
if (hHandle)
CloseHandle(hHandle);
return Size;
return INVALID_FILE_SIZE;
}
DWORD RfGetFileSizeFromPathDisposeHandleA(PCHAR Path, DWORD dwFlagsAndAttributes)
LONGLONG RfGetFileSizeFromPathDisposeHandleA(PCHAR Path, DWORD dwFlagsAndAttributes)
{
DWORD Size = ERROR_SUCCESS;
LARGE_INTEGER LargeInteger;
HANDLE hHandle = INVALID_HANDLE_VALUE;
hHandle = CreateFileA(Path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, dwFlagsAndAttributes, NULL);
if (hHandle == INVALID_HANDLE_VALUE)
return INVALID_FILE_SIZE;
Size = GetFileSize(hHandle, NULL);
if (hHandle)
CloseHandle(hHandle);
return Size;
if (GetFileSizeEx(hHandle, &LargeInteger))
{
if (hHandle)
CloseHandle(hHandle);
return LargeInteger.QuadPart;
}
return INVALID_FILE_SIZE;
}