MSIデータベースのサマリ情報(hSummaryInfo)を扱う単純なラッパクラス

(2005.01.14)
#pragma once
 
// '04.12.21 : 新規作成 (sug)
 
#include <MsiDefs.h>
#include <Msiquery.h>
#pragma comment (lib, "Msi.lib")
 
 
/////////////////////////////////////////////////////////////////////////////
// CMsiSummaryInfo
 
class CMsiSummaryInfo
{
public:
    CMsiSummaryInfo()
    {
        m_hSummaryInfo = 0;
    }
    CMsiSummaryInfo(MSIHANDLE hSummaryInfo)
    {
        m_hSummaryInfo = hSummaryInfo;
    }
    virtual ~CMsiSummaryInfo()
    {
        if (m_hSummaryInfo != 0)
        {
            this->CloseHandle();
            m_hSummaryInfo = 0;
        }
    }
 
public:
    bool IsValid()
    {
        if (m_hSummaryInfo == 0)
        {
            return false;
        }
 
        return true;
    }
    
public:
    void Attach(MSIHANDLE hSummaryInfo)
    {
        ATLASSERT(m_hSummaryInfo == 0);
        ATLASSERT(hSummaryInfo != 0);
        m_hSummaryInfo = hSummaryInfo;
    }
    MSIHANDLE Detach()
    {    
        MSIHANDLE hSummaryInfo = m_hSummaryInfo;
        m_hSummaryInfo = 0;
        return hSummaryInfo;
    }
 
public:
    CMsiSummaryInfo& operator=(MSIHANDLE hSummaryInfo)
    {
        m_hSummaryInfo = hSummaryInfo;
        return *this;
    }
    operator MSIHANDLE()
    { 
        return m_hSummaryInfo; 
    }
 
public:
    UINT CloseHandle()
    {
        ATLASSERT(m_hSummaryInfo != 0);
        return ::MsiCloseHandle(m_hSummaryInfo);
    }
 
// Summary information stream management functions
public:
    UINT GetPropertyCount(UINT* puiPropertyCount)
    {
        ATLASSERT(m_hSummaryInfo != 0);
        return ::MsiSummaryInfoGetPropertyCount(m_hSummaryInfo, puiPropertyCount);
    }
    UINT SetProperty(UINT uiProperty, UINT uiDataType, INT iValue, FILETIME* pftValue, LPCSTR szValue)
    {
        ATLASSERT(m_hSummaryInfo != 0);
        return ::MsiSummaryInfoSetProperty(m_hSummaryInfo, uiProperty, uiDataType, iValue, pftValue, szValue);
    }
    UINT GetProperty(UINT uiProperty, UINT* puiDataType, INT* piValue, FILETIME* pftValue, LPSTR szValueBuf, DWORD* pcchValueBuf)
    {
        ATLASSERT(m_hSummaryInfo != 0);
        return ::MsiSummaryInfoGetProperty(m_hSummaryInfo, uiProperty, puiDataType, piValue, pftValue, szValueBuf, pcchValueBuf);
    }
    UINT Persist()
    {
        ATLASSERT(m_hSummaryInfo != 0);
        return ::MsiSummaryInfoPersist(m_hSummaryInfo);
    }
 
public:
    MSIHANDLE m_hSummaryInfo;
};
一覧に戻る
© 2003 WAC.com All Right Reserved.