Функция GetFileSize извлекает размер указанного файла. Размер файла, который может быть сообщен при помощи этой функции ограничивается значением двойного слова (DWORD).
Чтобы извлечь размер файла, который является большим, чем значение двойного слова (DWORD), используйте функцию GetFileSizeEx.
Синтаксис
DWORD GetFileSize( HANDLE hFile, // дескриптор файла LPDWORD lpFileSizeHigh // старшее слово размера файла ); |
Параметры
hFile
[in] Дескриптор файла, размер которого должен возвратиться. Этот дескриптор должен быть создан или с правом доступа GENERIC_READ или GENERIC_WRITE. Для получения дополнительной информации, см. статью Защита файла и права доступа.lpFileSizeHigh
[out] Указатель на переменную, в которой возвращается старшее слово размера файла . Этот параметр может быть ПУСТО (NULL), если приложению не требуется старшего слова.Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - младшая часть двойного слова размера файла, и если параметр lpFileSizeHigh - не ПУСТО (NULL), функция помещает старшую часть двойного слова размера файла в переменную, на которую указывает этот параметр.
Если функция завершается ошибкой, и lpFileSizeHigh равен ПУСТО (NULL), возвращаемое значение - INVALID_FILE_SIZE. Чтобы получить дополнительные данные об ошибке, вызовите GetLastError.
Если функция завершается ошибкой, и lpFileSizeHigh - не ПУСТО (NULL), возвращаемое значение - INVALID_FILE_SIZE, а GetLastError возвратит другое значение, а не NO_ERROR.
Замечания
Нельзя использовать функцию GetFileSize с дескриптором не искомого устройства типа канала или коммуникационного устройства. Чтобы выяснить тип файла для параметра hFile, используйте функцию GetFileType.
Функция GetFileSize извлекает несжатый размер файла. Используйте функцию GetCompressedFileSize, чтобы получить сжатый размер файла.
Обратите внимание! на то, что это, если возвращаемое значение - INVALID_FILE_SIZE и параметр lpFileSizeHigh - не ПУСТО (NULL), приложение должно вызвать GetLastError, чтобы выяснить, успешно ли завершилась функция или завершилась ошибкой. Причина, по которой функция, может оказаться завершенной ошибкой, состоит в том, что lpFileSizeHigh может быть не-ПУСТО (NULL), или размер файла мог быть 0xffffffff. В этой ситуации, GetLastError возвратит NO_ERROR после успешного завершения. Нижеследующий типовой код иллюстрирует этот момент: |
Код примера
// Случай первый: вызываемая функция с // lpFileSizeHigh == NULL // Попробуем получить размер hFile. dwSize = GetFileSize (hFile, NULL) ; // Если мы получаем ошибку ... if (dwSize == INVALID_FILE_SIZE) { // Получим код ошибки. dwError = GetLastError() ; // Разберемся с этой ошибкой. . . . } // Закончим обработку ошибки. // // Случай второй: вызываемая функция с // lpFileSizeHigh != NULL // Попробуем получить огромный размер hFile. dwSizeLow = GetFileSize (hFile, & dwSizeHigh) ; // Если мы получаем ошибку ... if (dwSizeLow == INVALID_FILE_SIZE && (dwError = GetLastError()) != NO_ERROR ) { // Разберемся с этой ошибкой. . . . } // Закончим обработку ошибки. |
Другой пример, см. Создание представления данных внутри файла.
Смотри также
Обзор Управление файлами, Функции, используемые в управлении файлами, GetCompressedFileSize, GetFileSizeEx, GetFileType
Размещение и совместимость GetFileSize |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Да |
н |
Windows 98 |
Да |
т |
Windows 95 |
Да |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Kernel32.lib |
|
Используемая DLL | - | |
Заголовочный файл | ||
- объявлено в |
Winbase.h |
|
- включено в |
Windows.h |
|
Unicode |
Нет |
|
Замечания по платформе |
Не имеется |