hex.pp.ua

FileID API (OpenFileById, SetFileInformationByHandle, GetFileInformationByHandleEx)

Библиотека FileID API, fileextd.lib, fileextd.dll




В Windows Vista и Windows 2008 Server появились новые функции WinAPI — FileID API. Названия этих функций OpenFileById(), SetFileInformationByHandle() и GetFileInformationByHandleEx(). Служат они для открытия хэндла файла по его идентификатору (вместо имени), получения и установки различных свойств файлов. Функции можно использовать и в более ранних версиях Windows, но в этом случае их нельзя экспортировать из ядра, а нужно воспользоваться .lib-файлом, предоставляемым Майкрософтом.

Применение

Итак, если программа запущена в Windows Vista или Windows 2008 Server, то функции можно брать прямо из kernel32.dll, статически или динамически. Если хочется совместимости с Windows XP/2003, то нужно скачать пакет Win32 FileID APIs 1.1.EXE с официального сайта Майкрософт или напрямую с моего сайта.

FileExtD.DLL

В архиве с сайта Microsoft присутствует только заголовочный файл fileextd.h и библиотека для статической линковки fileextd.lib. Было бы удобно иметь ещё и динамическую библиотеку. Тогда в приложении можно проверять версию операционной системы и в одном случае грузить функции из системной библиотеки, в другом случае из своей. Я сделал динамическую версию библиотеки — fileextd.dll. Скачать её можно здесь. В архиве две библиотеки, одна для x86, вторая для x64.

Прототипы

Прототипы функций выглядят так:

HANDLE
WINAPI
OpenFileById (
    __in     HANDLE hVolumeHint,
    __in     LPFILE_ID_DESCRIPTOR lpFileId,
    __in     DWORD dwDesiredAccess,
    __in     DWORD dwShareMode,
    __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    __in     DWORD dwFlagsAndAttributes        
    );
    
SetFileInformationByHandle(
    __in  HANDLE hFile,
    __in  FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
    __in  LPVOID lpFileInformation,
    __in  DWORD dwBufferSize 
    );
    
BOOL
WINAPI
GetFileInformationByHandleEx(
    __in  HANDLE hFile,
    __in  FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
    __out LPVOID lpFileInformation,
    __in  DWORD dwBufferSize
);           
система комментирования CACKLE

Автор: амдф
Дата: 31.05.2011


Разделы сайта
Главная
Блог
Native API
NTFS и ReFS
Микроконтроллеры
Справочник NTDLL
Коды NTSTATUS
Разное

Избранное
NTFS Stream Explorer
Native Shell
Тенгвар

Остальное
nvpnhcknn (архив)
English pages
Контакты

Ленты atom
Лента Atom сайта Лента Atom блога



При копировании материалов хорошим тоном будет указание авторства и ссылка на сайт.