我正在用Mingw在Windows上编译一个程序。 如何获得打开的文件描述符的访问模式?
根据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 GetcoreelObjectSecurity( 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的参考将带领你去你需要去的地方,如果你挖了一下。
据我所知,你不能。
http://www.zemris.fer.hr/predmeti/os1/misc/Unix2Win.htm是一个很好的unix-to-windows移植指南。
也许你可以使用Cygwin POSIX“模拟”?