2012-10-27 64 views
1

填充WIN32_FIND_DATA結構如何正確設置nFileSizeHighnFileSizeLow一個WIN32_FIND_DATA結構的組成部分時,我只有在ULONGLONG字節的文件大小。如何正確地從一個ULONGLONG

直接投射導致編譯器抱怨可能的數據丟失。

WIN32_FIND_DATA wfd; 
wfd.nFileSizeLow = (DWORD)totalBytes; 

回答

2

該警告是準確的,你正試圖在一個32磅捅中填充64個小豬。像這樣做,而不是:

ULONGLONG size = something; 
wfd.nFileSizeHigh = size >> 32; 
wfd.nFileSizeLow = size & 0xffffffffUL; 

,一定要提防WIN32_FIND_DATA通常應該只能由和用FindFirstFile FindNextFile()填補。

+0

使用'ULARGE_INTEGER'結構而不是手動移位:'ULARGE_INTEGER ul; ul.QuadPart = ...; wdf.nFileSizeLow = ul.LowPart; wdf.nFileSizeHigh = ul.HighPart;' –

相關問題