请来帮小弟我看看下面有关问题(事件),多谢

求助:请各位大哥来帮我看看下面问题(事件),谢谢!
//播放所有wave,mps,和视频文件
class   CVideo
{
private:
///   direct   show
IGraphBuilder* m_pGraph; //   Filter对象
IMediaControl* m_pMediaControl; //   流媒体播放器
IMediaPosition* m_pMediaPosition; //   播放位置
IMediaEvent* m_pEvent; //   流媒体触发事件
IVideoWindow* m_pViewWin; //   播放视频的窗口
HWND m_hWnd; //   窗口句柄
BOOL m_isLoop; //   是否循环播放

///   direct   sound
LPDIRECTSOUND8 m_pSound; //   声音硬件指针
LPDIRECTSOUNDBUFFER m_pSBuffer; //   声音缓冲
DSBUFFERDESC m_dsdesc;
public:
      LRESULT   AVI_WaitCompletion(long   a=INFINITE)//等候响应事件,一般用于播放avi。使用时需传入一个长整形,确定播放停止的时间用毫秒表示。
{
      long   evCode;
      if(   m_pEvent   )
      {
      m_pEvent-> WaitForCompletion(a,&evCode);
      return   S_OK;
      }
      else  
      {    
return   E_FAIL;
      }

}
};


//初始化流媒体播放
HRESULT   CVideo::InitStream()
{
//   创建过滤器
  CoInitialize(   NULL   );
CoCreateInstance(CLSID_FilterGraph,   NULL,
                                          CLSCTX_INPROC,   IID_IGraphBuilder,   (void**)&m_pGraph);

//   创建控制器
m_pGraph-> QueryInterface(   IID_IMediaControl,   (   void**   )&m_pMediaControl   );

//   创建播放位置
m_pGraph-> QueryInterface(   IID_IMediaPosition,   (   void**   )&m_pMediaPosition   );

//   创建事件响应接口
m_pGraph-> QueryInterface(   IID_IMediaEvent,   (   void**   )&m_pEvent   );

//   创建播放窗口
m_pGraph-> QueryInterface(   IID_IVideoWindow,   (   void**   )&m_pViewWin   );


return   S_OK;
}


请教:

这里有几个地方不明白:
问题1:
INFINITE   这个系统定义好的,是奥妙?

问题2:
if(   m_pEvent   )
 
是什么意思?
 
哪个东西来响应事迹啊?
 
问题3:
m_pEvent     是怎么产生的?

 
  谢谢!


------解决方案--------------------
3.HANDLE m_pEvent = CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPTSTR lpName);
INFINITE 无限长时间等待