Получение информации о файле по его идентификатору
С помощью функции GetFileInformationByHandle вы сможете получить разнообразную информацию об открытом файле по его идентификатору:
BOOL GetFileInformationByHandle(
HANDLE hFile, // идентификатор файла
LPBY_HANDLE_FILE_INFORMATION lpFileInformation ); // адрес
// структуры, в которую будет записана информация о файле
Функция GetFileInformationByHandle записывает информацию о файле в структуру типа BY_HANDLE_FILE_INFORMATION, определенную следующим образом:
typedef struct _BY_HANDLE_FILE_INFORMATION
{
DWORD dwFileAttributes; // атрибуты файла
FILETIME ftCreationTime; // время создания файла
FILETIME ftLastAccessTime; // время доступа к файлу
FILETIME ftLastWriteTime; // время записи в файл
DWORD dwVolumeSerialNumber; // серийный номер тома
DWORD nFileSizeHigh; // размер файла (старшее слово)
DWORD nFileSizeLow; // размер файла (младшее слово)
DWORD nNumberOfLinks; // количество связей файла
DWORD nFileIndexHigh; // системный номер файла
// (старшее слово)
DWORD nFileIndexLow; // системный номер файла
// (младшее слово)
} BY_HANDLE_FILE_INFORMATION;
Поле nNumberOfLinks используется приложениями в стандарте POSIX.
Что же касается системного номера файла, то он отличается от идентификатора файла, полученного при помощи функции CreateFile по смыслу и значению. Системные номера файлов являются глобальными и различаются для всех файлов, открытых в системе.