2009-12-13 57 views
0

我需要確定邏輯卷的大小並打印它。 GetDiskFreeSpaceEx正在將大小返回爲64位數字(?)。我能用它做什麼?masap32中帶有64位數字的winapi

+0

是不是這個數字是磁盤上的可用字節數? – Nifle 2009-12-13 16:20:06

+0

你在用什麼語言?向我們展示一些代碼.. – Nifle 2009-12-13 16:21:25

+0

我使用masm32 我修復了某些問題, 調用GetDiskFreeSpaceEx,esi,0,addr totalsize,0 調用StrFormatByteSize64,totalsize,totalsize + 4,ADDR sizebuffer,SIZEOF totalsize -3 – 2009-12-13 17:07:33

回答

1

你可以隨心所欲地做任何事情,但是在masm32中進行計算有點尷尬。你應該能夠填充任何其他使用64位整數的數據結構。通過將值加載到EDX:EAX(因此將前4個字節加載到EAX中,將下4個字節加載到EDX中),也可以對64位進行一些算術運算,例如除法。但是,請注意,這裏可能發生溢出,需要處理或避免溢出。

如果你只是想使用此功能,您可以直接調用C運行時庫中的printf函數打印出卷的大小:

invoke crt_printf,chr$("GetDiskFreeSpaceEx, total bytes: %I64d%c"), 
        dqTotalBytes,10 

然而,由於手冊說「確定的總磁盤或捲上的字節數,請使用IOCTL_DISK_GET_LENGTH_INFO。「前面的代碼只會告訴您當前用戶有多少可用。