En Windows / mingw, ¿cuál es el equivalente de `fcntl (fd, F_GETFL) | O_ACCMODE`?

Estoy comstackndo un progtwig en Windows con Mingw. ¿Cómo puedo obtener el modo de acceso para un descriptor de archivo abierto?

Según Win32.hlp, la API proporciona la función BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation) en KERNEL32. LPBY_HANDLE_FILE_INFORMATION es un BY_HANDLE_FILE_INFORMATION* , donde BY_HANDLE_FILE_INFORMATION es el siguiente:

 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; 

Después de llamar a dicha función, si devuelve true, el BY_HANDLE_FILE_INFORMATION contiene datos pertinentes a su archivo. dwFileAttributes puede contener el indicador FILE_ATTRIBUTE_READ_ONLY .

Si quieres más que eso, también hay:

 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 ); 

La referencia de la API es necesariamente vaga sobre lo que es un SECURITY_DESCRIPTOR , pero puede llamar a un montón de otras funciones utilizando su dirección como parámetro para obtener propiedades específicas. La SECURITY_INFORMATION es solo una constante DWORD que especifica a cuál de estas funciones planea llamar. Puede encontrar más información en http://msdn.microsoft.com/en-us/library/aa446641%28VS.85%29.aspx

Editar: la segunda sección del código sigue apareciendo como un disparatado, pero el enlace a la referencia de la API lo llevará a donde necesita ir si investiga un poco.

Por lo que puedo decir, no puedes.

http://www.zemris.fer.hr/predmeti/os1/misc/Unix2Win.htm es una buena guía para la migración de Unix a Windows.

¿Tal vez podrías usar la “emulación” de Cygwin POSIX?