GetFSize64H(), GetFSize64W(), GetFSize64A() 追加
@@ -53,6 +53,9 @@ | ||
53 | 53 | BOOL DoesFileExist(PCHAR FName); |
54 | 54 | BOOL DoesFolderExist(PCHAR FName); |
55 | 55 | long GetFSize(PCHAR FName); |
56 | +unsigned long long GetFSize64H(HANDLE hFile); | |
57 | +unsigned long long GetFSize64W(const wchar_t *FName); | |
58 | +unsigned long long GetFSize64A(const char *FName); | |
56 | 59 | long GetFMtime(PCHAR FName); |
57 | 60 | BOOL SetFMtime(PCHAR FName, DWORD mtime); |
58 | 61 | void uint2str(UINT i, PCHAR Str, int destlen, int len); |
@@ -577,3 +577,40 @@ | ||
577 | 577 | |
578 | 578 | return dest_top; |
579 | 579 | } |
580 | + | |
581 | +unsigned long long GetFSize64H(HANDLE hFile) | |
582 | +{ | |
583 | + DWORD file_size_hi; | |
584 | + DWORD file_size_low; | |
585 | + file_size_low = GetFileSize(hFile, &file_size_hi); | |
586 | + if (file_size_low == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) { | |
587 | + // error | |
588 | + return 0; | |
589 | + } | |
590 | + unsigned long long file_size = ((unsigned long long)file_size_hi << 32) + file_size_low; | |
591 | + return file_size; | |
592 | +} | |
593 | + | |
594 | +unsigned long long GetFSize64W(const wchar_t *FName) | |
595 | +{ | |
596 | + HANDLE hFile = _CreateFileW(FName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, | |
597 | + FILE_ATTRIBUTE_NORMAL, NULL); | |
598 | + if (hFile == INVALID_HANDLE_VALUE) { | |
599 | + return 0; | |
600 | + } | |
601 | + unsigned long long file_size = GetFSize64H(hFile); | |
602 | + CloseHandle(hFile); | |
603 | + return file_size; | |
604 | +} | |
605 | + | |
606 | +unsigned long long GetFSize64A(const char *FName) | |
607 | +{ | |
608 | + HANDLE hFile = CreateFileA(FName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, | |
609 | + FILE_ATTRIBUTE_NORMAL, NULL); | |
610 | + if (hFile == INVALID_HANDLE_VALUE) { | |
611 | + return 0; | |
612 | + } | |
613 | + unsigned long long file_size = GetFSize64H(hFile); | |
614 | + CloseHandle(hFile); | |
615 | + return file_size; | |
616 | +} |