At one point during Whidbey development we removed the FunctionIDMapper functionality from the Profiling API. The reason for removing it was concern over how to implement both the mapping and the new argument-inspection functionality at the same time. (The argument-inspection stuff needed to know the true FunctionID, so mapping got in the way, and we were afraid that trying to pass both would result in too much overhead.)

Various folks gave us some pretty strong feedback :-) that the mapping functionality was critical to keeping overhead low. Acting on this feedback, we put the functionality back in with Beta 2; the clientData parameter on the v2 enter/leave hooks is the mapped ID returned from your FunctionIDMapper.

I also recently got a question about SetEnterLeaveFunctionHooks(2) usage. These functions must be called during Initialize; you can't safely call them afterwards.