Помогите, пожалуйста, разобраться что здесь неправильно:
#define MONIKERTEXT L"http://A/index.html"
IStream *stream1, *stream2;
IMoniker *m, *m2, *m3;
IHTMLDocument *obj;
CComPtr<IBindCtx> bind;
hr = CreateBindCtx(0, &bind);
hr = CreateURLMoniker(NULL, L"http://localhost/test.html", &m);
hr = m->BindToStorage(bind, NULL, IID_IStream, (void**)&stream1);
hr = m->BindToObject(bind, NULL, IID_IHTMLDocument, (void**)&obj);
hr = CreateURLMoniker(NULL, MONIKERTEXT, &m2);
CComPtr<IRunningObjectTable> rot;
GetRunningObjectTable(0, &rot);
DWORD reg = 0;
hr = rot->Register(ROTFLAGS_REGISTRATIONKEEPSALIVE, obj, m2, ®);
IPersistFile *o2;
hr = CreateURLMoniker(NULL, MONIKERTEXT, &m3);
hr = m3->BindToStorage(bind, NULL, IID_IStream, (void**)&stream2); //0x800c0005
hr = m3->BindToObject(bind, NULL, IID_IPersistFile, (void**)&o2); //работает
LPOLESTR s = W2OLE(L"c:\\1.html");
o2->Save(s, FALSE); //работает, сохраняет правильный файл
m_browser.Navigate(MONIKERTEXT, NULL, NULL, NULL, NULL); //не работает