133 lines
3.3 KiB
C++
133 lines
3.3 KiB
C++
// **************************************************************************
|
|
|
|
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
// File: OnConnect.cpp
|
|
//
|
|
// Description:
|
|
// This file implements the OnConnect() routine which
|
|
// demonstrates how to connect to CIMOM and one if
|
|
// its namespaces.
|
|
//
|
|
// History:
|
|
//
|
|
// **************************************************************************
|
|
|
|
#include "stdafx.h"
|
|
#include "AdvClientDlg.h"
|
|
|
|
// **************************************************************************
|
|
//
|
|
// CAdvClientDlg::OnConnect()
|
|
//
|
|
// Description:
|
|
// Connects to the namespace specified in the edit box.
|
|
//
|
|
// Parameters:
|
|
// None.
|
|
//
|
|
// Returns:
|
|
// Nothing.
|
|
//
|
|
// Globals accessed:
|
|
// None.
|
|
//
|
|
// Globals modified:
|
|
// None.
|
|
//
|
|
//===========================================================================
|
|
void CAdvClientDlg::OnConnect()
|
|
{
|
|
IWbemLocator *pIWbemLocator = NULL;
|
|
|
|
UpdateData();
|
|
//------------------------
|
|
// Create an instance of the WbemLocator interface.
|
|
if(CoCreateInstance(CLSID_WbemLocator,
|
|
NULL,
|
|
CLSCTX_INPROC_SERVER,
|
|
IID_IWbemLocator,
|
|
(LPVOID *) &pIWbemLocator) == S_OK)
|
|
{
|
|
//------------------------
|
|
// Use the pointer returned in step two to connect to
|
|
// the server using the passed in namespace.
|
|
BSTR pNamespace = m_namespace.AllocSysString();
|
|
HRESULT hr = S_OK;
|
|
|
|
if((hr = pIWbemLocator->ConnectServer(pNamespace,
|
|
NULL, //using current account for simplicity
|
|
NULL, //using current password for simplicity
|
|
0L, // locale
|
|
0L, // securityFlags
|
|
NULL, // authority (domain for NTLM)
|
|
NULL, // context
|
|
&m_pIWbemServices)) == S_OK)
|
|
{
|
|
// indicate success.
|
|
m_outputList.ResetContent();
|
|
m_outputList.AddString(_T("Connected To Namespace"));
|
|
|
|
// its safe the hit the other buttons now.
|
|
m_enumServices.EnableWindow(TRUE);
|
|
m_enumServicesAsync.EnableWindow(TRUE);
|
|
m_enumDisks.EnableWindow(TRUE);
|
|
m_diskDetails.EnableWindow(TRUE);
|
|
m_connect.EnableWindow(TRUE);
|
|
m_addEquipment.EnableWindow(TRUE);
|
|
m_diskDescriptions.EnableWindow(TRUE);
|
|
|
|
// dont allow reconnection.
|
|
m_connect.EnableWindow(FALSE);
|
|
|
|
// since these guys register for the non-standard
|
|
// root/default/office namespace, dont enable them unless
|
|
// that namespace exists.
|
|
if(CheckOfficeNamespace())
|
|
{
|
|
m_perm.EnableWindow(TRUE);
|
|
m_temp.EnableWindow(TRUE);
|
|
}
|
|
|
|
// initialize the Register Perm button.
|
|
if(PermRegistered())
|
|
{
|
|
// init for UNregistering.
|
|
m_regPerm = FALSE;
|
|
m_perm.SetWindowText(_T("Unregister &Perm"));
|
|
}
|
|
else // its not registered...
|
|
{
|
|
// init for registering.
|
|
m_regPerm = TRUE;
|
|
m_perm.SetWindowText(_T("Register &Perm"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// failed ConnectServer()
|
|
AfxMessageBox(_T("Bad namespace"));
|
|
}
|
|
|
|
// done with pNamespace.
|
|
if(pNamespace)
|
|
{
|
|
SysFreeString(pNamespace);
|
|
}
|
|
|
|
//------------------------
|
|
// done with pIWbemLocator.
|
|
if (pIWbemLocator)
|
|
{
|
|
pIWbemLocator->Release();
|
|
pIWbemLocator = NULL;
|
|
}
|
|
}
|
|
else // failed CoCreateInstance()
|
|
{
|
|
AfxMessageBox(_T("Failed to create IWbemLocator object"));
|
|
|
|
} // endif CoCreateInstance()
|
|
|
|
}
|