Leaked source code of windows server 2003
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.

53 lines
1.8 KiB

  1. #ifndef __UNKNLIST_H
  2. #define __UNKNLIST_H
  3. #include "listintr.h"
  4. class CUnknownList : public IUnknownList
  5. {
  6. private:
  7. IVoidPtrList *m_pList;
  8. DWORD m_cRefCount;
  9. static void FreeUnknown(void *ptr) {(reinterpret_cast<IUnknown*>(ptr))->Release();}
  10. public:
  11. CUnknownList() : m_pList(NULL), m_cRefCount(1) {}
  12. ~CUnknownList();
  13. // IUnknown members
  14. virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj) { return E_NOTIMPL;}
  15. virtual STDMETHODIMP_(ULONG) AddRef(void);
  16. virtual STDMETHODIMP_(ULONG) Release(void);
  17. // IUnknownList members
  18. virtual HRESULT STDMETHODCALLTYPE Init(IUL_COMPAREFUNCTYPE pCompareFunc, DWORD_PTR dwCookie, DWORD dwInitSize) {
  19. return m_pList->Init(
  20. reinterpret_cast<IVPL_COMPAREFUNCTYPE>(pCompareFunc),
  21. dwCookie,
  22. CUnknownList::FreeUnknown,
  23. dwInitSize);}
  24. virtual HRESULT STDMETHODCALLTYPE GetCount(DWORD *pdwCount) {
  25. return m_pList->GetCount(pdwCount);}
  26. virtual HRESULT STDMETHODCALLTYPE ClearList(void) {
  27. return m_pList->ClearList();}
  28. virtual HRESULT STDMETHODCALLTYPE AddItem(IUnknown *pIUnk, DWORD *pdwHandle);
  29. virtual HRESULT STDMETHODCALLTYPE RemoveItem(DWORD dwHandle) {
  30. return m_pList->RemoveItem(dwHandle);}
  31. virtual HRESULT STDMETHODCALLTYPE GetNext(LISTDIRECTION bDirection, IUnknown **ppIUnk, DWORD *pdwHandle);
  32. virtual HRESULT STDMETHODCALLTYPE SkipNext(LISTDIRECTION bDirection, DWORD *pdwHandle) {
  33. return m_pList->SkipNext(bDirection, pdwHandle);}
  34. virtual HRESULT STDMETHODCALLTYPE Resort(void) {
  35. return m_pList->Resort();}
  36. static HRESULT CreateInstance(CUnknownList** ppList);
  37. };
  38. #endif