COM,关于微软SDK 中 IUPnPNAT的问题
我用MS UPnP SDK包做一个端口映射软件,代码如下:
问题为:
在 hr = pIUPnP->get_NATEventManager(&pIEMgr); 这一行,
hr 返回S_OK,看MS SDK上说hr 返回S_OK就表示成功,
但pIEMgr有时返回空值,用GetLastError()也返回0,没有失败的标志,最终就是端口映射有时行有时不行,都不知到为什么,问问大家,谁有此经历可以帮我解决下,谢谢。
void SomeProc()
{
HRESULT hr = S_OK;
IUPnPNAT * pIUPnP = NULL;
INATEventManager * pIEMgr = NULL;
BOOL bSucc = FALSE;
do
{
hr = CoInitializeEx(NULL,CONINIT_MULTITHREADED);
if (hr != S_OK && hr != S_FALSE)
{
break;
}
hr = CoCreateInstance(CLSID_UPnPNAT,NULL,CLSCTX_INPROC_SERVER,IID_IUPnPNAT,(LPVOID*)&pIUPnP);
if (hr != S_OK)
{
break;
}
hr = pIUPnP->get_NATEventManager(&pIEMgr);
if (hr != S_OK || !pIEMgr) //在此处出问题
{
break;
}
bSucc = TRUE;
}while(false);
if (!bSucc)
printf("Error occur ...\n");
//release some resource alloc before
//
return;
}