Согласно Win32.hlp, API предоставляет функцию BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
в KERNEL32.LPBY_HANDLE_FILE_INFORMATION
- это BY_HANDLE_FILE_INFORMATION*
, где BY_HANDLE_FILE_INFORMATION
выглядит следующим образом:
typedef struct _BY_HANDLE_FILE_INFORMATION { // bhfi
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION;
После вызова указанной функции, если она возвращает true, BY_HANDLE_FILE_INFORMATION
содержит данные, относящиеся к вашему файлу.dwFileAttributes
может содержать флаг FILE_ATTRIBUTE_READ_ONLY
.
Если вы хотите больше, есть также:
BOOL GetKernelObjectSecurity(
HANDLE Handle, // handle of object to query
SECURITY_INFORMATION RequestedInformation, // requested information
PSECURITY_DESCRIPTOR pSecurityDescriptor, // address of security descriptor
DWORD nLength, // size of buffer for security descriptor
LPDWORD lpnLengthNeeded // address of required size of buffer
);
Ссылка на API обязательно неясна, что такое SECURITY_DESCRIPTOR
, но вы можете вызвать несколько других функций, используя их адрес в качестве параметра для получения определенных свойств.SECURITY_INFORMATION
- это просто DWORD
константа, определяющая, какую из этих функций вы планируете вызывать.Вы можете найти больше информации в http://msdn.microsoft.com/en-us/library/aa446641%28VS.85%29.aspx
Редактировать - вторая секция кода продолжает казаться странной, но ссылка на ссылку на API приведет вас туда, куда вам нужно пойти, если вы немного покопаетесь.