Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1998 - 2001
//
// File : utils.cpp
//
// Contents : Common utilities required by helper.
//
// Notes :
//
// Author : Raghu Gatta (rgatta) 11 May 2001
//
//----------------------------------------------------------------------------
#include "precomp.h"
#pragma hdrstop
BOOL g_fInitCom = TRUE;
HRESULT HrInitializeHomenetConfig( BOOL* pfInitCom, IHNetCfgMgr** pphnc ) /*++
Routine Description
Cocreate and initialize the root IHNetCfgMgr object. This will optionally initialize COM for the caller too.
Arguments
pfInitCom [in,out] TRUE to call CoInitialize before creating. returns TRUE if COM was successfully initialized FALSE if not. If NULL, means don't initialize COM. pphnc [out] The returned IHNetCfgMgr object. Return Value
S_OK or an error code. --*/ { HRESULT hr;
//
// Initialize the output parameter.
//
*pphnc = NULL;
//
// Initialize COM if the caller requested.
//
hr = S_OK; if (pfInitCom && *pfInitCom) { hr = CoInitializeEx( NULL, COINIT_DISABLE_OLE1DDE | COINIT_APARTMENTTHREADED );
if (RPC_E_CHANGED_MODE == hr) { //
// we have already been initialized in a different model
//
hr = S_OK; *pfInitCom = FALSE; } } if (SUCCEEDED(hr)) {
//
// Create Homenet Configuration Manager COM Instance
//
hr = CoCreateInstance( CLSID_HNetCfgMgr, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IHNetCfgMgr, pphnc) );
if (SUCCEEDED(hr)) { //
// great! dont need to anything more here...
//
}
//
// If we failed anything above, and we've initialized COM,
// be sure an uninitialize it.
//
if (FAILED(hr) && pfInitCom && *pfInitCom) { CoUninitialize(); }
}
return hr; }
//+---------------------------------------------------------------------------
//
// Function: HrUninitializeHomenetConfig
//
// Purpose: Unintialize and release an IHNetCfgMgr object. This will
// optionally uninitialize COM for the caller too.
//
// Arguments:
// fUninitCom [in] TRUE to uninitialize COM after the IHNetCfgMgr is
// uninitialized and released.
// phnc [in] The IHNetCfgMgr object.
//
// Returns: S_OK or an error code.
//
// Author: rgatta 11 May 2001
//
//----------------------------------------------------------------------------
HRESULT HrUninitializeHomenetConfig( BOOL fUninitCom, IHNetCfgMgr* phnc ) /*++
Routine Description
Arguments Return Value
--*/ { assert(phnc); HRESULT hr = S_OK;
if (phnc) { phnc->Release(); } phnc = NULL;
if (fUninitCom) { CoUninitialize (); }
return hr; }
|