簡體   English   中英

使用ReadFile()函數讀取Windows中的二進制數據

[英]Using ReadFile() function to read Binary data in Windows

我有兩個程序:程序A(在FORTRAN中)和程序B(在C ++中)。 它們通過管道相互連接。 程序B應直接從程序A的控制台讀取二進制數據但由於某種原因我不能這樣做:

以下是程序B的閱讀部分:

BOOL bSuccess = FALSE;
LPBYTE File_Data;
DWORD dwFileSize;
wFileSize = GetFileSize(V_hChildStd_OUT_Rd, NULL);
File_Data = new BYTE[dwFileSize+1];
bSuccess = ReadFile( V_hChildStd_OUT_Rd, File_Data, dwFileSize, &dwRead, NULL);
delete [] File_Data; 

注意:V_hChildStd_OUT_Rd是程序A輸出的句柄。

如果我傳遞一個,兩個或三個數字的整數(比如1或10或100),程序就可以工作,我可以在File_Data數組中得到數字。 但是對於更高的整數和所有雙數,File_Data給出的含義更少。 請注意,對於所有數字,我的bSuccess都是正確的! 這意味着它可以讀取文件。 你能幫我解決一下這個問題。 謝謝!

您不能將GetFileSize()用於管道,只能用於文件。 要確定可從管道讀取的數據量,請改用PeekNamedPipe() 並注意dwRead輸出值,它告訴您實際讀取了多少字節,這可能少於您請求的字節數。

暫無
暫無

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

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