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.

90 lines
2.5 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1999 - 1999
  6. //
  7. // File: Database.h
  8. //
  9. //--------------------------------------------------------------------------
  10. // Database.h : Declaration of the CSCardDatabase
  11. #ifndef __SCARDDATABASE_H_
  12. #define __SCARDDATABASE_H_
  13. #include "resource.h" // main symbols
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CSCardDatabase
  16. class ATL_NO_VTABLE CSCardDatabase :
  17. public CComObjectRootEx<CComMultiThreadModel>,
  18. public CComCoClass<CSCardDatabase, &CLSID_CSCardDatabase>,
  19. public IDispatchImpl<ISCardDatabase, &IID_ISCardDatabase, &LIBID_SCARDSSPLib>
  20. {
  21. public:
  22. CSCardDatabase()
  23. {
  24. m_pUnkMarshaler = NULL;
  25. }
  26. DECLARE_REGISTRY_RESOURCEID(IDR_SCARDDATABASE)
  27. DECLARE_GET_CONTROLLING_UNKNOWN()
  28. DECLARE_PROTECT_FINAL_CONSTRUCT()
  29. BEGIN_COM_MAP(CSCardDatabase)
  30. COM_INTERFACE_ENTRY(ISCardDatabase)
  31. COM_INTERFACE_ENTRY(IDispatch)
  32. COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
  33. END_COM_MAP()
  34. HRESULT FinalConstruct()
  35. {
  36. return CoCreateFreeThreadedMarshaler(
  37. GetControllingUnknown(), &m_pUnkMarshaler.p);
  38. }
  39. void FinalRelease()
  40. {
  41. m_pUnkMarshaler.Release();
  42. }
  43. CComPtr<IUnknown> m_pUnkMarshaler;
  44. // ISCardDatabase
  45. public:
  46. STDMETHOD(GetProviderCardId)(
  47. /* [in] */ BSTR bstrCardName,
  48. /* [retval][out] */ LPGUID __RPC_FAR *ppguidProviderId);
  49. STDMETHOD(ListCardInterfaces)(
  50. /* [in] */ BSTR bstrCardName,
  51. /* [retval][out] */ LPSAFEARRAY __RPC_FAR *ppInterfaceGuids);
  52. STDMETHOD(ListCards)(
  53. /* [defaultvalue][in] */ LPBYTEBUFFER pAtr,
  54. /* [defaultvalue][in] */ LPSAFEARRAY pInterfaceGuids,
  55. /* [defaultvalue][lcid][in] */ long localeId,
  56. /* [retval][out] */ LPSAFEARRAY __RPC_FAR *ppCardNames);
  57. STDMETHOD(ListReaderGroups)(
  58. /* [defaultvalue][lcid][in] */ long localeId,
  59. /* [retval][out] */ LPSAFEARRAY __RPC_FAR *ppReaderGroups);
  60. STDMETHOD(ListReaders)(
  61. /* [defaultvalue][lcid][in] */ long localeId,
  62. /* [retval][out] */ LPSAFEARRAY __RPC_FAR *ppReaders);
  63. };
  64. inline CSCardDatabase *
  65. NewSCardDatabase(
  66. void)
  67. {
  68. return (CSCardDatabase *)NewObject(
  69. CLSID_CSCardDatabase,
  70. IID_ISCardDatabase);
  71. }
  72. #endif //__SCARDDATABASE_H_