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.

82 lines
1.8 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1999-2000 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // ProvFactory.h
  7. //
  8. // Implementation File:
  9. // ProvFactory.cpp
  10. //
  11. // Description:
  12. // Definition of the CProvFactory class.
  13. //
  14. // Author:
  15. // Henry Wang (HenryWa) 24-AUG-1999
  16. //
  17. // Notes:
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #pragma once
  21. //////////////////////////////////////////////////////////////////////////////
  22. // Include Files
  23. //////////////////////////////////////////////////////////////////////////////
  24. #include "InstanceProv.h"
  25. typedef HRESULT ( * PFNCREATEINSTANCE )(
  26. IUnknown *,
  27. VOID **
  28. );
  29. struct FactoryData
  30. {
  31. const CLSID * m_pCLSID;
  32. PFNCREATEINSTANCE pFnCreateInstance;
  33. LPCWSTR m_pwszRegistryName;
  34. }; //*** struct FactoryData
  35. /////////////////////////////////////////////////////////////////////////////
  36. //++
  37. //
  38. // class CProvFactory
  39. //
  40. // Description:
  41. // Handle class creation
  42. //
  43. //--
  44. /////////////////////////////////////////////////////////////////////////////
  45. class CProvFactory
  46. : public IClassFactory
  47. {
  48. protected:
  49. ULONG m_cRef;
  50. FactoryData * m_pFactoryData;
  51. public:
  52. CProvFactory( FactoryData * pFactoryDataIn )
  53. : m_pFactoryData( pFactoryDataIn )
  54. , m_cRef( 0 )
  55. {
  56. }
  57. virtual ~CProvFactory( void )
  58. {
  59. }
  60. STDMETHODIMP QueryInterface( REFIID riidIn, PPVOID ppvOut );
  61. STDMETHODIMP_( ULONG ) AddRef( void );
  62. STDMETHODIMP_( ULONG ) Release( void );
  63. //IClassFactory members
  64. STDMETHODIMP CreateInstance(
  65. LPUNKNOWN pUnknownOuterIn,
  66. REFIID riidIn,
  67. PPVOID ppvObjOut
  68. );
  69. STDMETHODIMP LockServer( BOOL fLockIn );
  70. }; //*** class CProvFactory