How to handle when there is no API to convert voldIDs into something useful ?

Distributed notifications describe file events with a path /.vols/volumeID/dirID/name but how to use the volumeID ?
There is no API but the volumeID is in fact the f_fsid field of the struct statfs. (see man statfs).
Once you know this, it is quite easy to maintain a little database (a
NSDictionary will do the job) to map voldIDs and vRefnum.
Of course, you should also listen to disk mount and disk unmounted events to maintain the data structure, or you prefer to build it only when needed, to be sure is as accurate as possible.
Using MoreFilesX (available on Apple site):

#import "MoreFilesX.h"

NSEnumerator *fileSystems = [[[NSWorkspace sharedWorkspace] mountedLocalVolumePaths] objectEnumerator];
NSString *fileSystemPath ;

while (fileSystemPath = [fileSystems nextObject]) {
struct statfs statfsData ;
FSSpec fsSpec ;
Boolean isDirectory ;

if (0 == statfs([fileSystemPath fileSystemRepresentation],&statfsData)) {
if (0 == FSPathMakeFSSpec([fileSystemPath fileSystemRepresentation],&fsSpec,&isDirectory)) {
// store the mapping between statfsData .f_fsid and fsSpec.vRefNum where you like to...