Windows: AFSLocateNameEntry separate VolumeCB In/Out
Tracking the VolumeCB references within AFSLocateNameEntry has
proven to be very error prone. When the VolumeCB parameter is
an in/out parameter the caller cannot reliably determine whether
or not AFSLocateNameEntry replaced the updated the pointer and
whether it properly released the references. This patchset
changes the interface so that VolumeCB and ParentDirectoryCB
have separate in and out parameters. The caller is now responsible
for tracking its own Volume reference counts and AFSLocateNameEntry
obtains its own which will either be returned to the caller as a
non-NULL OutVolumeCB or released.
This patchset turns ParentDirectoryCB into an IN only parameter
and adds OutParentDirectoryCB as a dedicated OUT parameter. However,
it does not alter any associated reference count logic. That will
be implemented in a subsequent patchset.