Search code examples
lotus-noteslotus-domino

How can DWORD ever hold values more than 32 bits?


The NSFDbSpaceUsage function in the Lotus Notes C API is defined as:

STATUS LNPUBLIC NSFDbSpaceUsage( DBHANDLE hDB, DWORD far *retAllocatedBytes, DWORD far *retFreeByes);

This function returns the number of bytes allocated and the number of bytes free in a specified database.

Reading SO and elsewhere, I understand that DWORD is associated with unsigned long, which is (usually) 32 bits. What puzzles me is how the above function will ever return the size of a Domino database that is more than 2^32 bytes in size. And in fact, my sample application never returns anything greater than 2,147,483,647 (2^31) for some of my larger databases. An NSF file in Domino can grow to 64 GB, so why would IBM use a DWORD to report the number of bytes allocated, when a DWORD can't represent more than 4,294,967,296 (2^32) bytes?

What am I missing?


Solution

  • I'm guessing this API method was created back when 4 GBs was larger than anyone could ever imagine ;)

    According to the comments here, this method is limited to only 4 GBs and there is another method to use: NSFDbSpaceUsageScaled