请教怎么将Connection变量保存到GWL_USERDATA中

请问如何将Connection变量保存到GWL_USERDATA中?

我创建变量后,
_ConnectionPtr    m_pConnection;
m_pConnection.CreateInstance(__uuidof(Connection));
用setwindowlong(hwnd,GWL_USERDATA,(long)m_pconnection);

等到运行到getwindowlong(hwnd,gwl_userdata)就报错,请问应该如何将 m_pConnection存放起来?
------解决思路----------------------
_ConnectionPtr    m_pConnection;
是局部变量还是全局变量?
如果是局部的,他会被回收