Estoy seguro de que esto está documentado en alguna parte pero no puedo encontrarlo ...¿Cómo obtener un control win32 de un archivo abierto en python?
Mi código es obtener un objeto python de otra biblioteca (que no puedo modificar), y necesito llamar a algunos win32 API funciona en ella.
Python devuelve algo que no es el manejador del nivel os de file.fileno(), mi suposición es que da fileno de MSVCRT.
>>> ctypes.windll.kernel32.CreateFileA('test',0x80000000L,1,None,3,0,0)
1948 # <- HANDLE
>>> file('test','r').fileno()
4 # <- not a HANDLE
¿Cómo puedo convertirlo en un verdadero asa win32?
Esto parece un enfoque de hack para hacer las cosas. Sugiero usar el enfoque CreateFile ya que tiene control total sobre qué parámetros se pasan a CreateFile, y generalmente es la forma correcta de obtener un control. Puedes hacerlo también con win32file (en lugar de ctypes). – Grim
Puede ser hackish, pero no puedo hacer CreateFile() yo mismo porque obtengo un objeto de archivo python del código que no está bajo mi control. – bdew