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, 1996 - 1999
//
// File: view.h
//
// Contents: Cert Server Database interface implementation
//
//---------------------------------------------------------------------------
#include "resource.h" // main symbols
// defines for multi-thread handling
typedef enum { ENUMTHREAD_OPEN = 0, ENUMTHREAD_NEXT, ENUMTHREAD_CLEANUP, ENUMTHREAD_END } ENUMTHREADCALLS;
class CEnumCERTDBRESULTROW: public IEnumCERTDBRESULTROW { public: CEnumCERTDBRESULTROW(BOOL fThreading = TRUE); ~CEnumCERTDBRESULTROW();
// IUnknown
STDMETHODIMP QueryInterface(const IID& iid, void **ppv); ULONG STDMETHODCALLTYPE AddRef(); ULONG STDMETHODCALLTYPE Release();
// IEnumCERTDBRESULTROW
STDMETHOD(Next)( /* [in] */ ULONG celt, /* [out] */ CERTDBRESULTROW *rgelt, /* [out] */ ULONG *pceltFetched);
STDMETHOD(ReleaseResultRow)( /* [in] */ ULONG celt, /* [in, out] */ CERTDBRESULTROW *rgelt); STDMETHOD(Skip)( /* [in] */ LONG celt, /* [out] */ LONG *pielt); STDMETHOD(Reset)(VOID); STDMETHOD(Clone)( /* [out] */ IEnumCERTDBRESULTROW **ppenum);
// CEnumCERTDBRESULTROW
HRESULT Open( IN CERTSESSION *pcs, IN ICertDB *pdb, IN DWORD ccvr, IN CERTVIEWRESTRICTION const *acvr, IN DWORD ccolOut, IN DWORD const *acolOut);
private: VOID _Cleanup();
HRESULT _SetTable( IN LONG ColumnIndex, OUT LONG *pColumnIndexDefault);
HRESULT _SaveRestrictions( IN DWORD ccvrIn, IN CERTVIEWRESTRICTION const *acvrIn, IN LONG ColumnIndexDefault);
// multi-thread handling
static DWORD WINAPI _ViewWorkThreadFunctionHelper(LPVOID lp); HRESULT _HandleThreadError(); HRESULT _ThreadOpen(DWORD dwCallerThreadID); HRESULT _ThreadNext(DWORD dwCallerThreadID); VOID _ThreadCleanup(DWORD dwCallerThreadID); DWORD _ViewWorkThreadFunction(VOID);
ICertDB *m_pdb; CERTSESSION *m_pcs; CERTVIEWRESTRICTION *m_aRestriction; DWORD m_cRestriction; DWORD m_ccolOut; DWORD *m_acolOut; BOOL m_fNoMoreData; LONG m_ieltMax; LONG m_ielt; LONG m_cskip;
// thread stuff
HANDLE m_hWorkThread; HANDLE m_hViewEvent; HANDLE m_hReturnEvent; HRESULT m_hrThread; ENUMTHREADCALLS m_enumViewCall; VOID *m_pThreadParam; BOOL m_fThreading; //#if DBG_CERTSRV
DWORD m_dwCallerThreadId; //#endif
// Reference count
long m_cRef; };
|