MFC扩展动态库中的他局钩子,创建成功,可是无法成功钩取,而且删除钩子的时候出错!该怎么解决

MFC扩展动态库中的他局钩子,创建成功,可是无法成功钩取,而且删除钩子的时候出错!
dll的结构大致是:有一个类导出CTransparentDlg,它需要鼠标钩子,钩子函数及共享数据段如下:
#pragma   data_seg( "TransparentDlg ")
static   long   nUser32Ref   =   0;
static   HHOOK   MouseHook   =   0;
#pragma   data_seg()
#pragma   comment(linker,   "/section:TransparentDlg,rws ")  

static   LRESULT   CALLBACK   MouseProc(int   nCode,   WPARAM   wParam,   LPARAM   lParam)
{
Beep(1500,   10);
return   ::CallNextHookEx(MouseHook,   nCode,   wParam,   lParam);
}

我在CTransparentDlg的OnInitDialog里安装钩子(换句话说,如果不使用库中的CTransparentDlg类就不创建钩子,因没不需要),如下:
if   (1   ==   InterlockedIncrement(&nUser32Ref))
MouseHook   =   SetWindowsHookEx(WH_MOUSE,   MouseProc,   AfxGetInstanceHandle(),   NULL);
ASSERT(MouseHook);

我在CTransparentDlg的OnDestroy里删除钩子,程序如下:
if   (InterlockedDecrement(&nUser32Ref)   <=   0   &&   MouseHook)
{
VERIFY(::UnhookWindowsHookEx(MouseHook));
MouseHook   =   0;
}

现在问题有,一:无法成功钩到鼠标消息(上面的Beep从未响过);
二:VERIFY(::UnhookWindowsHookEx(MouseHook));出错,错误是无效的钩子句柄,并且报内在泄漏(MouseHook   句柄)。
请高从解答!

------解决方案--------------------
第一次退出A.exe时,钩子已经被释放(HHOOK MouseHook是共享的),第二次释放时MouseHook就是无效的钩子。