gpt4 book ai didi

c - 在 Windows/mingw 上,什么是 `fcntl(fd, F_GETFL) | O_ACCMODE` 的等价物?

转载 作者:可可西里 更新时间:2023-11-01 13:14:00 25 4
gpt4 key购买 nike

我正在使用 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 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 引用链接将引导您到达需要去的地方。

关于c - 在 Windows/mingw 上,什么是 `fcntl(fd, F_GETFL) | O_ACCMODE` 的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com