根据Win32.hlp,API提供了该功能BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
在 KERNEL32 中。LPBY_HANDLE_FILE_INFORMATION
is a BY_HANDLE_FILE_INFORMATION*
, where 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
flag.
如果您想要更多,还有:
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 http://msdn.microsoft.com/en-us/library/aa446641%28VS.85%29.aspx
编辑 - 第二个代码部分看起来总是很奇怪,但是如果你仔细研究一下,API 参考的链接将引导你到你需要去的地方。