2012-07-23 328 views
0

我使用win32file.CreateFile()来打开我在进程管理器中看到的“文件”。 有问题的文件是(如proc explorer的句柄和dll视图所示):“\ Device \ ccSet_ {}”win32file.createFile“系统找不到指定的路径”

Q1。谁能说明什么是\Device\<file name>。我相信这些显然不是存储在硬盘上的文件。除非我错了,他们是什么? Q2302。当我尝试使用路径原样时,在win32file.CreateFile()中,它给我一个错误“系统找不到指定的路径或文件”。我哪里错了。

Q3。给定上述文件对象的地址(同样来自proc explorer),我可以在不指定路径的情况下读取文件吗?

我在用的一行代码是:

>>> win32file.CreateFile("Device\<filename>",w 
in32con.GENERIC_READ|win32con.GENERIC_WRITE,win32con.FILE_SHARE_READ|win32con.FI 
LE_SHARE_WRITE,None,win32con.OPEN_EXISTING,0,0) 

回答

3
  1. 对\ Device \ XXX名称是内部的Windows NT设备名称。
  2. \\.\前缀将访问Win32设备名称空间而不是Win32文件名称空间。例如,要打开COM10,您需要使用\\.\COM10
  3. 该句柄只在打开它的过程中有效。
+0

“该句柄只在打开它的进程内有效”:是否只有在尝试使用CreateFile()时该语句才为真?我问这是因为我能够复制并关闭有问题的手柄。 – asudhak 2012-07-24 13:34:50

+0

事实上,'DuplicateHandle'可以用来解决这个限制。 – Neil 2012-07-25 00:05:38

相关问题