Lotus Notes C API中的NSFDbSpaceUsage函数定义为:
STATUS LNPUBLIC NSFDbSpaceUsage( DBHANDLE hDB, DWORD 远* retAllocatedBytes, DWORD 远* retFreeByes);
此函数返回指定数据库中已分配的字节数和可用字节数。
读取SO和其他地方,我知道DWORD与 unsigned long 相关联,它通常是32位。令我困惑的是上面的函数将如何返回大小超过2 ^ 32字节的Domino数据库的大小。事实上,对于我的一些较大的数据库,我的示例应用程序永远不会返回大于2,147,483,647(2 ^ 31)的任何内容。 Domino中的NSF文件可以增长到64 GB,那么当DWORD不能表示超过4,294,967,296(2 ^ 32)个字节时,为什么IBM会使用DWORD来报告分配的字节数?
我错过了什么?
答案 0 :(得分:5)
我猜这个API方法是在4 GB比任何人想象的都要大的时候创建的;)
根据comments here,此方法仅限于4 GB,还有另一种方法可供使用:NSFDbSpaceUsageScaled