簡體   English   中英

如何在c++中使用ReadFile()讀取長度不是512倍數的字節

[英]How to use ReadFile() in c++ to read bytes of length that are not multiple of 512

我正在嘗試將原始字節讀取到驅動器。 但是函數 ReadFile() 只允許我讀取長度為 512 或其倍數的字節。 我無法讀取長度為 10、180、1000 等的字節。

DWORD NumberOfBytesRead=0;

ReadFile(hDevice, nullbuffer, (DWORD)512, &NumberOfBytesRead, (LPOVERLAPPED)NULL); //works

ReadFile(hDevice, nullbuffer, (DWORD)1024, &NumberOfBytesRead, (LPOVERLAPPED)NULL); //works

ReadFile(hDevice, nullbuffer, (DWORD)1000, &NumberOfBytesRead, (LPOVERLAPPED)NULL); //error 87

ReadFile(hDevice, nullbuffer, (DWORD)300, &NumberOfBytesRead, (LPOVERLAPPED)NULL);  //error 87

有什么辦法可以克服這個問題嗎?

直接訪問設備的規則要求您必須讀取對齊的數據塊。 這不是你可以改變的。 這是您必須遵守的硬性規則。

鑒於此規則,您必須讀入一個緩沖區,該緩沖區是所需塊大小的倍數。 如果您只想訪問該緩沖區的某些部分,您可以在從設備中讀取后選擇該部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM