PRB: CAB SDK Headers Contain Incorrect CB_MAX_DISK Value (174866)
The information in this article applies to:
- Microsoft Internet Client SDK 4.0
- Microsoft Internet Client SDK 4.01
This article was previously published under Q174866 SYMPTOMS
When compressing data using Fci.lib from the Cabinet (CAB) SDK, a new
cabinet file is started after about 134 MB of data has been compressed.
CAUSE
Fci.h contains an incorrect definition for CB_MAX_DISK. The value is
defined as 0x7FFFFFFL (134,217,727) instead of 0x7FFFFFFFL (2,147,483,647)
as it should be. CB_MAX_DISK is also defined incorrectly in this way in
Fdi.h.
RESOLUTION
Redefine CB_MAX_DISK to the correct value of 0x7FFFFFFFL:
#define CB_MAX_DISK 0x7FFFFFFFL
MORE INFORMATION
Specifying a value of 0 for disk size (cb value in CCAB struct) resets the
value to CB_MAX_DISK. However, CB_MAX_DISK is defined incorrectly as
0x7FFFFFFL or 134,217,727. It should be 0x7FFFFFFFL, or 2,147,483,647. Data
compression proceeds to about 134 Mb, then it switches to a new cabinet.
The desired result of a larger cabinet (CAB) can be obtained by explicitly
supplying the correct larger value.
Note that a CAB can normally contain at most 65,500 or so files. There is
no code in FCI to avoid exceeding this value, so the user application may
have to enforce it.
Also note that unless a CAB will be randomly extracted, cbFolderThresh
should be explicitly set to a very large value. If the CAB will be
randomly extracted, values between 100 K and 1 Mb would be appropriate.
REFERENCESFor more information about developing Web-based solutions for Microsoft Internet Explorer, visit the following Microsoft Web sites:
Modification Type: | Major | Last Reviewed: | 5/11/2006 |
---|
Keywords: | kbprb KB174866 |
---|
|