//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1998. // // File: ac_sink.cpp // // Contents: Home Networking Auto Config Sink object code. // // Author: jeffsp 9/27/00 // //---------------------------------------------------------------------------- #include "pch.h" #pragma hdrstop #ifdef PROVIDE_AUTO_CONFIG_SERVICES #include "ac_sink.h" #include "ac_CTrayUi.h" HRESULT STDMETHODCALLTYPE CAutoConfigUISink::DisplayHomeNetWizardHint() { HRESULT hr; hr = ac_CreateHnAcTrayUIWindow(); return S_OK; } void ac_CreateHomeNetAutoConfigSink() { HRESULT hr = S_OK; DWORD mTmp_dwAutoAdviseCookie; // HACKHACK IHomeNetAutoConfigService *pI = NULL; IConnectionPointContainer *pContainer = NULL; IConnectionPoint *pIMyConnPoint = NULL; IAutoConfigUISink *pSink = NULL; CAutoConfigUISink *pObj = NULL; hr = CoCreateInstance( CLSID_HomeNetAutoConfigService, NULL, CLSCTX_ALL, IID_IHomeNetAutoConfigService, (void **)&pI ); if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "CoCreateInstance Failed!"); goto done; } if( pI == NULL ){ // this->SetDlgItemText(IDC_EDIT2, "pI NULL!"); goto done; } hr = pI->QueryInterface( IID_IConnectionPointContainer, (void **)&pContainer ); if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "QI for container fialed!"); goto done; } hr = pContainer->FindConnectionPoint(IID_IAutoConfigUISink, &pIMyConnPoint); pContainer->Release(); pContainer = NULL; if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "Find connection point failed!"); goto done; } // this->SetDlgItemText(IDC_EDIT2, "Looks Good"); pObj = new CComObject ; if( !pObj ){ // this->SetDlgItemText(IDC_EDIT2, "New failed" ); goto done; } // pObj->Init(this); hr = pObj->QueryInterface(IID_IAutoConfigUISink, (void **)&pSink); if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "QI for IID_IAutoConfigUISink failed" ); delete pObj; goto done; } hr = pIMyConnPoint->Advise(pSink, &mTmp_dwAutoAdviseCookie ); if( SUCCEEDED(hr)){ // this->SetDlgItemText(IDC_EDIT2, "Advise Succeeded" ); }else{ // this->SetDlgItemText(IDC_EDIT2, "Advise Failed" ); pSink->Release(); } return; done: if( pContainer ){ pContainer->Release(); } if( pIMyConnPoint ){ pIMyConnPoint->Release(); } if( pI ){ pI->Release(); } return; } void ac_DestroyHomeNetAutoConfigSink(void) { HRESULT hr; IHomeNetAutoConfigService *pI = NULL; IConnectionPointContainer *pContainer = NULL; IConnectionPoint *pIMyConnPoint = NULL; IAutoConfigUISink *pSink = NULL; CAutoConfigUISink *pObj = NULL; hr = CoCreateInstance( CLSID_HomeNetAutoConfigService, NULL, CLSCTX_ALL, IID_IHomeNetAutoConfigService, (void **)&pI ); if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "CoCreateInstance Failed!"); return; } if( pI == NULL ){ // this->SetDlgItemText(IDC_EDIT2, "pI NULL!"); return; } hr = pI->QueryInterface( IID_IConnectionPointContainer, (void **)&pContainer ); if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "QI for container fialed!"); goto done; } hr = pContainer->FindConnectionPoint(IID_IAutoConfigUISink, &pIMyConnPoint); pContainer->Release(); pContainer = NULL; if( !SUCCEEDED(hr) ){ // this->SetDlgItemText(IDC_EDIT2, "Find connection point failed!"); goto done; } // this->SetDlgItemText(IDC_EDIT2, "Looks Good"); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); // HACKHACK hr = pIMyConnPoint->Unadvise(m_dwAutoAdviseCookie ); if( SUCCEEDED(hr)){ // this->SetDlgItemText(IDC_EDIT2, "Unadvise Succeeded" ); }else{ // this->SetDlgItemText(IDC_EDIT2, "Unadvise Failed" ); pSink->Release(); } return; done: if( pContainer ){ pContainer->Release(); } if( pIMyConnPoint ){ pIMyConnPoint->Release(); } if( pI ){ pI->Release(); } return; } #endif //#ifdef PROVIDE_AUTO_CONFIG_SERVICES