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.

150 lines
5.6 KiB

  1. #ifndef ASCSTR_H
  2. #define ASCSTR_H
  3. #include "ftcmmn.h"
  4. #define ASENUM DWORD
  5. #define ASENUM_NONE 0x00000000
  6. #define ASENUM_EXT 0x00000001
  7. #define ASENUM_PROGID 0x00000002
  8. #define ASENUM_ACTION 0x00000004
  9. #define ASENUM_ASSOC_YES 0x10000000
  10. #define ASENUM_ASSOC_NO 0x20000000
  11. #define ASENUM_ASSOC_ALL (ASENUM_ASSOC_YES | ASENUM_ASSOC_NO)
  12. #define ASENUM_NOEXCLUDED 0x40000000
  13. #define ASENUM_NOEXPLORERSHELLACTION 0x80000000
  14. #define ASENUM_NOEXE 0x01000000
  15. #define ASENUM_SHOWONLY 0x02000000
  16. #define ASENUM_MAINMASK 0x00000007
  17. #define AIINIT DWORD
  18. #define AIINIT_NONE 0x00000000
  19. #define AIINIT_EXT 0x00000001
  20. #define AIINIT_PROGID 0x00000002
  21. #define AIINIT_ACTION 0x00000004
  22. // Watch out! Begin
  23. // All flags in this section can be OR'ed with the other flags AIBOOL, AISTR, ...
  24. // so keep these values "globally" unique.
  25. #define AIALL DWORD
  26. #define AIALL_NONE 0x00000000
  27. #define AIALL_PERUSER 0x10000000
  28. // Watch out! End
  29. #define AISTR DWORD
  30. #define AISTR_NONE 0x00000000
  31. // This returns an extension WITHOUT the dot
  32. #define AISTR_EXT 0x00000001
  33. // This returns an extension WITH the dot
  34. #define AISTR_DOTEXT 0x00000002
  35. #define AISTR_PROGID 0x00000004
  36. #define AISTR_PROGIDDESCR 0x00000008
  37. #define AISTR_APPPATH 0x00000010
  38. #define AISTR_APPFRIENDLY 0x00000020
  39. #define AISTR_ACTION 0x00000040
  40. #define AISTR_PROGIDDEFAULTACTION 0x00000080
  41. #define AISTR_ICONLOCATION 0x00000100
  42. #define AISTR_ACTIONFRIENDLY 0x00000200
  43. #define AIDWORD DWORD
  44. #define AIDWORD_NONE 0x00000000
  45. #define AIDWORD_APPSMALLICON 0x00000001
  46. #define AIDWORD_APPLARGEICON 0x00000002
  47. #define AIDWORD_DOCSMALLICON 0x00000004
  48. #define AIDWORD_DOCLARGEICON 0x00000008
  49. #define AIDWORD_PROGIDEDITFLAGS 0x00000010
  50. #define AIDWORD_ACTIONATTRIBUTES 0x00000020
  51. #define AIBOOL DWORD
  52. #define AIBOOL_CONFIRMOPEN 0x00000001
  53. // removed quick view constant - dsheldon
  54. #define AIBOOL_ALWAYSSHOWEXT 0x00000004
  55. #define AIBOOL_BROWSEINPLACE 0x00000008
  56. #define AIBOOL_BROWSEINPLACEENABLED 0x00000010
  57. #define AIBOOL_EDITDESCR 0x00000020
  58. #define AIBOOL_EDITDOCICON 0x00000040
  59. #define AIBOOL_EDIT 0x00000080
  60. #define AIBOOL_EDITREMOVE 0x00000100
  61. #define AIBOOL_EXTASSOCIATED 0x00000200
  62. #define AIBOOL_EXTEXIST 0x00000400
  63. #define AIBOOL_EXCLUDE 0x00000800
  64. #define AIBOOL_SHOW 0x00001000
  65. #define AIBOOL_PERUSERINFOAVAILABLE 0x00002000
  66. #define AIBOOL_PROGIDHASNOEXT 0x00004000
  67. #define AIDATA DWORD
  68. #define AIDATA_PROGIDACTION 0x00000001
  69. class IAssocInfo : public IUnknown
  70. {
  71. public:
  72. // IUnknown methods
  73. STDMETHOD(QueryInterface)(REFIID riid, PVOID* ppv) PURE;
  74. STDMETHOD_(ULONG, AddRef)() PURE;
  75. STDMETHOD_(ULONG,Release)() PURE;
  76. // IAssocInfo methods
  77. // Init
  78. STDMETHOD(Init)(AIINIT aiinitFlags, LPTSTR pszStr) PURE;
  79. STDMETHOD(InitComplex)(AIINIT aiinitFlags1, LPTSTR pszStr1,
  80. AIINIT aiinitFlags2, LPTSTR pszStr2) PURE;
  81. // Get
  82. STDMETHOD(GetString)(AISTR aistrFlags, LPTSTR pszStr, DWORD* cchStr) PURE;
  83. STDMETHOD(GetDWORD)(AIDWORD aidwordFlags, DWORD* pdwdata) PURE;
  84. STDMETHOD(GetBOOL)(AIDWORD aiboolFlags, BOOL* pfBool) PURE;
  85. STDMETHOD(GetData)(AIDWORD aidataFlags, PBYTE pbData, DWORD* pcbData) PURE;
  86. // Set
  87. STDMETHOD(SetString)(AISTR aistrFlags, LPTSTR pszStr) PURE;
  88. STDMETHOD(SetDWORD)(AIDWORD aidwordFlags, DWORD dwData) PURE;
  89. STDMETHOD(SetBOOL)(AIDWORD aiboolFlags, BOOL fBool) PURE;
  90. STDMETHOD(SetData)(AIDWORD aidataFlags, PBYTE pbData, DWORD cbData) PURE;
  91. // Create
  92. STDMETHOD(Create)() PURE;
  93. // Delete
  94. STDMETHOD(DelString)(AISTR aistrFlags) PURE;
  95. STDMETHOD(Delete)(AIALL aiallFlags) PURE;
  96. };
  97. class IEnumAssocInfo : public IUnknown
  98. {
  99. public:
  100. // IUnknown methods
  101. STDMETHOD(QueryInterface)(REFIID riid, PVOID* ppv) PURE;
  102. STDMETHOD_(ULONG, AddRef)() PURE;
  103. STDMETHOD_(ULONG, Release)() PURE;
  104. // IEnumAssocInfo methods
  105. // Initialization
  106. STDMETHOD(Init)(ASENUM asenumFlags, LPTSTR pszStr,
  107. AIINIT aiinitFlags) PURE;
  108. // Standard IEnum methods
  109. STDMETHOD(Next)(IAssocInfo** ppAI) PURE;
  110. STDMETHOD(Skip)(DWORD dwSkip) PURE;
  111. STDMETHOD(Reset)() PURE;
  112. STDMETHOD(Clone)(IEnumAssocInfo* pEnum) PURE;
  113. };
  114. class IAssocStore : public IUnknown
  115. {
  116. public:
  117. // IUnknown methods
  118. STDMETHOD(QueryInterface)(REFIID riid, PVOID* ppv) PURE;
  119. STDMETHOD_(ULONG, AddRef)() PURE;
  120. STDMETHOD_(ULONG,Release)() PURE;
  121. // IAssocStore methods
  122. // Enum
  123. STDMETHOD(EnumAssocInfo)(ASENUM asenumFlags, LPTSTR pszStr,
  124. AIINIT aiinitFlags, IEnumAssocInfo** ppEnum) PURE;
  125. // Get/Set
  126. STDMETHOD(GetAssocInfo)(LPTSTR pszStr, AIINIT aiinitFlags,
  127. IAssocInfo** ppAI) PURE;
  128. STDMETHOD(GetComplexAssocInfo)(LPTSTR pszStr1, AIINIT aiinitFlags1,
  129. LPTSTR pszStr2, AIINIT aiinitFlags2, IAssocInfo** ppAI) PURE;
  130. //
  131. STDMETHOD(CheckAccess)() PURE;
  132. };
  133. #endif //ASCSTR_H