GetFileInformationByHandleEx function

Expand
1 out of 1 rated this helpful - Rate this topic

GetFileInformationByHandleEx function

Applies to: desktop apps | Metro style apps

Retrieves file information for the specified file.

For a more basic version of this function for desktop apps, see GetFileInformationByHandle.

To set file information using a file handle, see SetFileInformationByHandle.

Syntax

BOOL WINAPI GetFileInformationByHandleEx(
  __in   HANDLE hFile,
  __in   FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
  __out  LPVOID lpFileInformation,
  __in   DWORD dwBufferSize
);

Parameters

hFile [in]

A handle to the file that contains the information to be retrieved.

This handle should not be a pipe handle.

FileInformationClass [in]

A FILE_INFO_BY_HANDLE_CLASS enumeration value that specifies the type of information to be retrieved.

For a table of valid values, see the Remarks section.

lpFileInformation [out]

A pointer to the buffer that receives the requested file information. The structure that is returned corresponds to the class that is specified by FileInformationClass. For a table of valid structure types, see the Remarks section.

dwBufferSize [in]

The size of the lpFileInformation buffer, in bytes.

Return value

If the function succeeds, the return value is nonzero and file information data is contained in the buffer pointed to by the lpFileInformation parameter.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

If FileInformationClass is FileStreamInfo and the calls succeed but no streams are returned, the error that is returned by GetLastError is ERROR_HANDLE_EOF.

Certain file information classes behave slightly differently on different operating system releases. These classes are supported by the underlying drivers, and any information they return is subject to change between operating system releases.

The following table shows the valid file information class types and their corresponding data structure types for use with this function.

FileInformationClass valuelpFileInformation type
FileBasicInfo (0) FILE_BASIC_INFO
FileStandardInfo (1) FILE_STANDARD_INFO
FileNameInfo (2) FILE_NAME_INFO
FileStreamInfo (7) FILE_STREAM_INFO
FileCompressionInfo (8) FILE_COMPRESSION_INFO
FileAttributeTagInfo (9) FILE_ATTRIBUTE_TAG_INFO
FileIdBothDirectoryInfo (0xa) FILE_ID_BOTH_DIR_INFO
FileIdBothDirectoryRestartInfo (0xb) FILE_ID_BOTH_DIR_INFO
FileRemoteProtocolInfo (0xd) FILE_REMOTE_PROTOCOL_INFO
FileFullDirectoryInfo (0xe) FILE_FULL_DIR_INFO
FileFullDirectoryRestartInfo (0xf) FILE_FULL_DIR_INFO
FileStorageInfo (0x10) FILE_STORAGE_INFO
FileAlignmentInfo (0x11) FILE_ALIGNMENT_INFO
FileIdInfo (0x12) FILE_ID_INFO
FileIdExtdDirectoryInfo (0x13) FILE_ID_EXTD_DIR_INFO
FileIdExtdDirectoryRestartInfo (0x14) FILE_ID_EXTD_DIR_INFO

 

Transacted Operations

If there is a transaction bound to the thread at the time of the call, then the function returns the compressed file size of the isolated file view. For more information, see About Transactional NTFS.

Requirements

Minimum supported client

Windows Vista

Minimum supported server

Windows Server 2008

Redistributable

Windows SDK on Windows Server 2003 and Windows XP.

Header

WinBase.h (include Windows.h);
FileExtd.h on Windows Server 2003 and Windows XP

Library

Kernel32.lib;
FileExtd.lib on Windows Server 2003 and Windows XP

DLL

Kernel32.dll

See also

File Management Functions
FILE_INFO_BY_HANDLE_CLASS
SetFileInformationByHandle

 

 

Send comments about this topic to Microsoft

Build date: 5/5/2012

Did you find this helpful?
(1500 characters remaining)
Community Additions ADD
missing fileextd.h
To be able to use this method under Windows XP I'm required to include fileextd.h, and link with fileextd.lib. $0$0 $0 $0Fileextd.lib I have - it's included in many versions of the Platform SDK - but fileextd.h is missing. Its contents have been absorbed into winbase.h (as the documentation says), guarded by #if that requires Vista or above. That's why I'm supposed to include fileextd.h. Pity it seems to have disappeared :-($0 $0$0 $0 $0For now, I have copied the definition of the enum, structure, and API from WinBase.h, but that seems a tacky solution.$0 $0$0 $0 $0Any chance of patching the Platform SDK to include this header again?$0
8/16/2011