Чем городить огород из набора функций
проще написать так вот:
template<int i>
static int __stdcall callback(const void *Buffer, int Length)
{
printf("%s %u %u\n",Buffer,Length,i);
.....
}
А потом назначать колбяки:
switch(i)
{
case 1:SetCallback( 1, callback<1> );break;
case 2:SetCallback( 2, callback<2> );break;
}