|
|
//////////////////////////////////////////////////////////////////////////////////////////////
//
// AppManager.cpp
//
// Copyright (C) 1998, 1999 Microsoft Corporation. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "AppManDispatch.h"
#include "AppManager.h"
#include "AppEntry.h"
#include "AppMan.h"
#include "AppManDebug.h"
//To flag as DBG_APPMANDP
#ifdef DBG_MODULE
#undef DBG_MODULE
#endif
#define DBG_MODULE DBG_APPMANDP
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
CAppManager::CAppManager(void) { DPFCONSTRUCTOR("CAppManager()");
m_fInitialized = FALSE;
//
// Get the required interfaces
//
if (SUCCEEDED(CoInitialize(NULL))) { if (SUCCEEDED(CoCreateInstance(CLSID_ApplicationManager, NULL, CLSCTX_INPROC_SERVER, IID_ApplicationManager, (LPVOID *) &m_IApplicationManager))) { m_fInitialized = TRUE; } } }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
CAppManager::~CAppManager(void) { DPFDESTRUCTOR("~CAppManager()");
m_IApplicationManager->Release(); m_fInitialized = FALSE; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::get_AdvancedMode(long * lpAdvancedModeMask) { FUNCTION("CAppManager::get_AdvancedMode()");
HRESULT hResult = E_FAIL;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// Get the advanced mode
//
hResult = m_IApplicationManager->GetAdvancedMode((DWORD *)lpAdvancedModeMask); }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::get_MaximumAvailableKilobytes(long lSpaceCategory, long * lplKilobytes) { FUNCTION("CAppManager::get_MaximumAvailableKilobytes()");
HRESULT hResult = E_FAIL; DWORD dwMaximumKilobytes, dwOptimalKilobytes;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// Get the space information
//
hResult = m_IApplicationManager->GetAvailableSpace((const DWORD) lSpaceCategory, &dwMaximumKilobytes, &dwOptimalKilobytes); if (SUCCEEDED(hResult)) { *lplKilobytes = (long) dwMaximumKilobytes; } }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::get_OptimalAvailableKilobytes(long lSpaceCategory, long * lplKilobytes) { FUNCTION("CAppManager::get_OptimalAvailableKilobytes()");
HRESULT hResult = E_FAIL; DWORD dwMaximumKilobytes, dwOptimalKilobytes;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// Get the space information
//
hResult = m_IApplicationManager->GetAvailableSpace((const DWORD) lSpaceCategory, &dwMaximumKilobytes, &dwOptimalKilobytes); if (SUCCEEDED(hResult)) { *lplKilobytes = (long) dwOptimalKilobytes; } }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::get_ApplicationCount(long * lpVal) { FUNCTION("CAppManager::get_ApplicationCount()");
HRESULT hResult = E_FAIL; IApplicationEntry * lpApplicationEntry;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// By default there are 0 applications
//
*lpVal = 0;
//
// Create an application entry instance
//
if (SUCCEEDED(m_IApplicationManager->CreateApplicationEntry(&lpApplicationEntry))) { //
// Enumerate all the applications and count them
//
while (SUCCEEDED(m_IApplicationManager->EnumApplications((DWORD) *lpVal, lpApplicationEntry))) { (*lpVal)++; }
hResult = S_OK; } }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::CreateApplicationEntry(IAppEntry ** lppAppEntry) { FUNCTION("CAppManager::CreateApplicationEntry()");
HRESULT hResult = E_FAIL; CAppEntry * lpAppEntry;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// Create an IAppEntry instance
//
if (SUCCEEDED(CoCreateInstance(CLSID_AppEntry, NULL, CLSCTX_INPROC_SERVER, IID_IAppEntry, (LPVOID *) &lpAppEntry))) { if (NULL != lpAppEntry) { hResult = lpAppEntry->Initialize(); if (SUCCEEDED(hResult)) { *lppAppEntry = (IAppEntry *) lpAppEntry; } else { delete lpAppEntry; *lppAppEntry = NULL; } } } } return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::GetApplicationInfo(IAppEntry * lpAppEntry) { FUNCTION("CAppManager::GetApplicationInfo()");
HRESULT hResult = E_FAIL; CAppEntry * lpCAppEntry; IApplicationEntry * lpApplicationEntry;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// Cast lpAppEntry to lpCAppEntry
//
lpCAppEntry = (CAppEntry *) lpAppEntry; lpCAppEntry->GetApplicationEntryPtr(&lpApplicationEntry);
//
// Get the application info
//
hResult = m_IApplicationManager->GetApplicationInfo(lpApplicationEntry); }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::EnumApplications(long lApplicationIndex, IAppEntry * lpAppEntry) { FUNCTION("CAppManager::EnumApplications()");
HRESULT hResult = E_FAIL; CAppEntry * lpCAppEntry; IApplicationEntry * lpApplicationEntry;
//
// Make sure the IApplicationManager interface was successfully instantiated
//
if (TRUE == m_fInitialized) { //
// Cast lpAppEntry to lpCAppEntry
//
lpCAppEntry = (CAppEntry *) lpAppEntry; lpCAppEntry->GetApplicationEntryPtr(&lpApplicationEntry);
//
// Get the application info
//
hResult = m_IApplicationManager->EnumApplications(lApplicationIndex, lpApplicationEntry); }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::EnumDeviceAvailableKilobytes(long lTempSpaceIndex, long * lTempSpaceKilobytes) { FUNCTION("CAppManager::EnumDeviceAvailableKilobytes()");
HRESULT hResult = E_FAIL; DWORD dwExclusionMask; CHAR szString[MAX_PATH];
hResult = m_IApplicationManager->EnumDevices((DWORD) lTempSpaceIndex, (LPDWORD) lTempSpaceKilobytes, &dwExclusionMask, APP_PROPERTY_STR_ANSI, szString, sizeof(szString));
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::EnumDeviceRootPaths(long lTempSpaceIndex, BSTR * lpstrRootPath) { FUNCTION("CAppManager::EnumDeviceRootPaths()");
HRESULT hResult = E_FAIL; DWORD dwKilobytes, dwExclusionMask; OLECHAR wszString[MAX_PATH];
hResult = m_IApplicationManager->EnumDevices((DWORD) lTempSpaceIndex, &dwKilobytes, &dwExclusionMask, APP_PROPERTY_STR_UNICODE, wszString, sizeof(wszString)); if (SUCCEEDED(hResult)) { *lpstrRootPath = SysAllocString(wszString); }
return hResult; }
//////////////////////////////////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CAppManager::EnumDeviceExclusionMask(long lTempSpaceIndex, long * lExclusionMask) { FUNCTION("CAppManager::EnumDeviceExclusionMask()");
HRESULT hResult = E_FAIL; DWORD dwKilobytes; CHAR szString[MAX_PATH];
hResult = m_IApplicationManager->EnumDevices((DWORD) lTempSpaceIndex, &dwKilobytes, (LPDWORD) lExclusionMask, APP_PROPERTY_STR_ANSI, szString, sizeof(szString));
return hResult; }
|