我需要使用kernel32.dll读取文件。我读过有关CreateFile,SetFilePointer和ReadFile方法(我需要使用它们) - 但不知道如何应用它们。
如上所述at msdn我需要指定所有这些参数。我知道首先是文件路径,但不知道那些其他参数是什么以及我应该以什么方式插入它们。
任何人都可以帮我解决kernel32.dll CreateFile,SetFilePointer和ReadFile上的“howto”。
非常感谢任何帮助。
更新
我尝试使用kernel32的原因是我需要非常快速的方式来读取闪存驱动器。我需要一些能直接从flash读取的方法,而不需要花时间在其文件系统中。我的意思是直接访问所需的字节,而不需要在文件系统中进行长时间的搜索。
以下是我用于阅读的代码
index = 524288
data = open('Path-to-file', 'rb')
while index < file_length:
data.seek(index)
headers.append((index, data.read(128)))
index += cluster
data.close()
此代码大约需要8分钟才能通过USB查看1 Gb文件。
我需要在4分钟完成。
如果有人有任何建议,我可以采取其他方式 - 我真的很感激。
更新
我试过像这样的win32file(pywin32):
def get_headers(self):
while self.index < self.file_len:
handle = win32file.CreateFile(self.path, win32file.GENERIC_READ,
win32file.FILE_SHARE_READ, None,
win32file.OPEN_EXISTING,
win32file.FILE_ATTRIBUTE_NORMAL, None)
win32file.SetFilePointer(handle, self.index, win32file.FILE_CURRENT)
header_ = win32file.ReadFile(handle, 128, None)
header = header_[1]
self.headers.append((self.index, header))
self.index += cluster
win32file.CloseHandle(handle)
比python“搜索”和“阅读”功能需要更多时间(12分钟)。 有谁知道为什么Windows dll模块的使用会增加阅读时间?