Прототип для IOServiceMatchingCallback не совместим с нестатическим методом класса (и технически не совместим с методом статического класса либо ), поэтому вы не собираетесь в состоянии использовать это.
Но, к счастью, IOServiceAddMatchingNotification поддерживает указатель контекста (или, как они его называют, refCon), который позволит вам создать thunk, который не зависит от глобальных данных.
Вам нужно определить обратный вызов с совместимой связью (т.е. extern "C"). Эта функция приведёт ваш refCon к указателю вашего объекта, а затем перенаправит вызов вашему экземпляру метода:
extern "C"
void io_callback(void *refcon, io_iterator_t iterator)
{
myclass *c = static_cast<myclass *>(refcon);
c->real_callback(iterator);
}
Затем, когда вы вызываете IOServiceAddMatchingNotification, обязательно передайте указатель на ваш объект для refCon (здесь я предполагаю, что вы вызываете IOServiceAddMatchingNotification из функции-члена, и у вас есть указатель this):
result = IOServiceAddMatchingNotification(
mNotifyPort,
kIOMatchedNotification,
IOServiceMatching( "IOFireWireLocalNode" ),
serviceMatchingCallback,
this,
&enumerator );