So, I've looked about on the internetz for a good way to resize partitions in Windows, and I've come across the following DeviceIoControl API:

IOCTL_DISK_GROW_PARTITION
IOCTL_DISK_GROW_PARTITION Control Code (Windows)

FSCTL_SHRINK_VOLUME
FSCTL_SHRINK_VOLUME Control Code (Windows)

The IOCTL call works beautifully, and will resize my test USB FAT16 partition. However, delving into WinHex reveals that the function *only* modifies the partition size in the MBR, leaving the volume partition still believing it is the former size. While this does seem to work as the MBR trumps volume records, it seems rather sloppy and bad practice.

The Shrink Volume appears to be a later addition to the Windows API and only works with NTFS.

So, is there a nice Windows API call that will utilize filesystem drivers to actually modify both the MBR and volume partition size? What would be the best way to go about shrinking/growing a partition, be it FAT16/32 or NTFS?