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 WMIOLE DB Provider
//
// (C) Copyright 1999 Microsoft Corporation. All Rights Reserved.
//
// ICHAPROWSET.CPP IChapteredRowset interface implementation
//
///////////////////////////////////////////////////////////////////////////
#include "headers.h"
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// Adds a reference to a chapter
//
// Returns one of the following values:
// S_OK Method Succeeded
// DB_E_BADCHAPTER The HCHAPTER given is invalid
// E_FAIL General Error
//
/////////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIChapteredRowset::AddRefChapter (HCHAPTER hChapter, DBREFCOUNT * pcRefCount) { HRESULT hr = E_UNEXPECTED; CSetStructuredExceptionHandler seh;
TRY_BLOCK;
// Serialize the object
CAutoBlock cab(ROWSET->GetCriticalSection());
// Clear ErrorInfo
g_pCError->ClearErrorInfo();
// Initialize the output variable
if(pcRefCount != NULL) { *pcRefCount = -1; }
if((m_pObj->m_bIsChildRs == TRUE && hChapter == DB_NULL_HCHAPTER) || (LONG_PTR)hChapter < 0 || m_pObj->m_bIsChildRs == FALSE && hChapter != 0) { hr = DB_E_BADCHAPTER; } else { hr = m_pObj->AddRefChapter(hChapter,pcRefCount); }
hr = hr == S_OK ? hr :g_pCError->PostHResult(hr,&IID_IChapteredRowset);
CATCH_BLOCK_HRESULT(hr,L"IChapteredRowset::AddRefChapter"); return hr;
}
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// Releases a reference to the chapter
//
// Returns one of the following values:
// S_OK Method Succeeded
// DB_E_BADCHAPTER The HCHAPTER given is invalid
// E_FAIL General Error
//
/////////////////////////////////////////////////////////////////////////////////////////////////
STDMETHODIMP CImpIChapteredRowset::ReleaseChapter (HCHAPTER hChapter,DBREFCOUNT * pcRefCount) { HRESULT hr = E_UNEXPECTED; CSetStructuredExceptionHandler seh;
TRY_BLOCK;
// Serialize the object
CAutoBlock cab(ROWSET->GetCriticalSection());
// Clear ErrorInfo
g_pCError->ClearErrorInfo();
// Initialize the output variable
if(pcRefCount != NULL) { *pcRefCount = -1; } if((m_pObj->m_bIsChildRs == TRUE && hChapter == DB_NULL_HCHAPTER) || (LONG_PTR)hChapter < 0 || m_pObj->m_bIsChildRs == FALSE && hChapter != 0) { hr = DB_E_BADCHAPTER; } else { hr = m_pObj->ReleaseRefChapter(hChapter,pcRefCount); }
hr = hr == S_OK ? hr :g_pCError->PostHResult(hr,&IID_IChapteredRowset); CATCH_BLOCK_HRESULT(hr,L"IChapteredRowset::ReleaseChapter");
return hr;
}
|