Upon calling ModifyAllocation to reduce the maximum associated with my allocation (once finished using a resource), why is the maximum associated with the allocation request zero? Why wasn't the allocation automatically freed?
The allocation was not automatically freed because later you can modify it again to change the maximum. If you want it to be freed, call CancelAllocation instead.