#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;
};