あっそうそう。クラスのメンバ関数を関数ポインタにして渡す方法をいつも忘れるのでめもめも!!!

class CHoge
{
   bool Enum(bool (CHoge::*enum_func)(GUID*));
   bool HandOver(GUID *guid);

   :
}

void CHoge::hogera()
{
   Enum(&CHoge::HandOver);
}

bool CHoge::Enum( bool (CHoge::*enum_func)(GUID*) )
{
   GUID guid = { hogera, hoge, hoge, hoge, hogera };

   bool ret = (this->*enum_func)(&guid);
}

func とかありがちな関数名にするとエラーになるので注意