我需要调用Windows的ReadFile函数:
BOOL WINAPI ReadFile(
_In_ HANDLE hFile,
_Out_ LPVOID lpBuffer,
_In_ DWORD nNumberOfBytesToRead,
_Out_opt_ LPDWORD lpNumberOfBytesRead,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);我感兴趣的是第三个论点:
nNumberOfBytesToRead in 要读取的最大字节数。
我对放在那里的“魔术数字”不太感兴趣,但是经验丰富的程序员需要通过这个过程来确定要放在那里的数字,最好是按编号的步骤。
同时,请记住,我是用汇编语言编写程序的,所以我更感兴趣的是从这个角度来看我的思维过程。
发布于 2016-01-28 16:08:00
这需要对Windows和硬件都有足够的洞察力。但是,总的来说,以下是一些可能的方向:
一般来说,你可能会想在周围玩,直到你得到的东西工作得足够好。
发布于 2016-01-28 16:22:35
该参数的存在只是为了防止缓冲区溢出,因此您当然必须输入为此目的分配的缓冲区的大小。除此之外,您应该只读取您对这个确切时间感兴趣的字节数。现代操作系统将始终使用分页缓存,对文件的任何后续访问都将与访问RAM一样快。如果您需要整个文件,您还可以强制操作系统提前缓存文件。
编辑:我的经验是反对Yam Marcovic和其他人的建议。缓存文件和分块读取到理想的大小正是操作系统要做的事情。不要妄自尊大,只读你需要的东西。
https://stackoverflow.com/questions/35066161
复制相似问题