我正在使用Mingw在Windows上编译程序。如何获取打开文件描述符的访问模式?
答案 0 :(得分:2)
根据Win32.hlp,API在KERNEL32中提供函数BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
。 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参考的链接将引导你到达需要去的地方。
答案 1 :(得分:0)
据我所知,你不能。
http://www.zemris.fer.hr/predmeti/os1/misc/Unix2Win.htm是unix-to-windows移植的好指南。
也许您可以使用Cygwin POSIX“仿真”?