Estoy compilando un programa en Windows con Mingw. ¿Cómo puedo obtener el modo de acceso para un descriptor de archivo abierto?En Windows/mingw, ¿cuál es el equivalente de `fcntl (fd, F_GETFL) | O_ACCMODE`?
Respuesta
De acuerdo con Win32.hlp, la API proporciona la función BOOL GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
en KERNEL32. LPBY_HANDLE_FILE_INFORMATION
es una 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 se devuelve verdadero, el BY_HANDLE_FILE_INFORMATION
contiene los datos pertinentes a su archivo. dwFileAttributes
puede contener la bandera 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 en lo que un SECURITY_DESCRIPTOR
es, pero se puede llamar a un montón de otras funciones utilizando su dirección como un parámetro para obtener propiedades específicas. El 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
Edición - la segunda sección de códigos sigue saliendo como un desastre, pero el enlace a la referencia API lo llevará a donde necesita ir si busca un poco.
Por lo que yo sé, no se puede.
http://www.zemris.fer.hr/predmeti/os1/misc/Unix2Win.htm es una buena guía para la conversión de Unix a Windows.
¿Tal vez podría usar la "emulación" de Cygwin POSIX?
- 1. ¿Qué hace el indicador FD_CLOEXEC fcntl()?
- 2. ¿Cuál es el equivalente a + = en Matlab?
- 3. ¿Cuál es el equivalente Response.Redirect en Silverlight?
- 4. fcntl substitute en Windows
- 5. ¿Cuál es el equivalente Python de Tomcat?
- 6. ¿Cuál es el equivalente Ruby de "pythonic"?
- 7. ¿Cuál es el equivalente Monotouch de dealloc?
- 8. ¿Cuál es el equivalente de argv [0]?
- 9. ¿Cuál es la diferencia entre async y nonblocking en unix socket?
- 10. fcntl, lockf, ¿cuál es mejor usar para el bloqueo de archivos?
- 11. ¿Cuál es el equivalente en Perl de $ _SERVER de PHP [...]?
- 12. ¿cuál es el equivalente de C# de static {...} en Java?
- 13. ¿Cuál es el equivalente de issubclass de instancia en python?
- 14. ¿Cuál es el equivalente de Html.fromHtml() de Android en iOS?
- 15. ¿Cuál es el equivalente de InfiniteIterator de PHP en .NET?
- 16. ¿Cuál es el equivalente de setTimeout de JavaScript en qtScript?
- 17. ¿Cuál es el equivalente de ldd de Linux en Windows?
- 18. ¿Cuál es el equivalente en Python de FindBin de Perl?
- 19. ¿Cuál es el equivalente de C# de CType en VB.NET?
- 20. ¿Cuál es el equivalente de Thread.sleep() de Java en JavaScript?
- 21. ¿Cuál es el equivalente .NET de StringBuffer en Java?
- 22. ¿Cuál es el equivalente de sincronizado en Objective-C?
- 23. ¿Cuál es el equivalente de write_attribute para asociaciones en Rails?
- 24. ¿Cuál es el equivalente de "aptitude" en Mac OSX?
- 25. ¿Cuál es el equivalente de "has_key" en javascript?
- 26. ¿Cuál es el equivalente de DefaultControllerFactory en Web API?
- 27. ¿cuál es el equivalente .NET de @Deprecated en java?
- 28. ¿Cuál es el equivalente de REGEXP_SUBSTR en mysql?
- 29. ¿Cuál es el equivalente cmd/powershell de `which` en bash?
- 30. ¿Cuál es el equivalente de foldr, foldl en Emacs Lisp?