diff --git a/Windows API/RfGetFileSizeFromPathDisposeHandle.cpp b/Windows API/RfGetFileSizeFromPathDisposeHandle.cpp index 556ef6c..ea8ee0e 100644 --- a/Windows API/RfGetFileSizeFromPathDisposeHandle.cpp +++ b/Windows API/RfGetFileSizeFromPathDisposeHandle.cpp @@ -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; }