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.

2065 lines
82 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (c) Microsoft Corporation. All rights reserved.
  5. //
  6. //--------------------------------------------------------------------------
  7. import "objidl.idl";
  8. import "shtypes.idl";
  9. import "shobjidl.idl";
  10. import "unknwn.idl";
  11. import "wtypes.idl";
  12. import "prsht.idl";
  13. import "msxml.idl";
  14. //
  15. // Forward Declarations
  16. //
  17. interface IDispatch;
  18. cpp_quote("#include <pshpack8.h>")
  19. cpp_quote("#include <poppack.h>") /* Return to byte packing */
  20. [
  21. helpstring("Interface to Customize Icons For Shell Objects"),
  22. uuid(7E23D323-36D6-4eb2-A654-387832868EA3),
  23. object,
  24. ]
  25. interface ICustomIconManager : IUnknown
  26. {
  27. HRESULT SetIcon([in, string] LPCWSTR pszIconPath, [in] int iIcon);
  28. HRESULT GetIcon([out, size_is(cch)] LPWSTR pszIconPath, [in] int cch, [out] int *piIconIndex);
  29. HRESULT GetDefaultIconHandle([out] HICON *phIcon);
  30. HRESULT SetDefaultIcon();
  31. }
  32. typedef [v1_enum] enum tagBNSTATE
  33. {
  34. BNS_NORMAL = 0, // Normal state that we are in
  35. BNS_BEGIN_NAVIGATE = 1, // A Begin navigate event has happened.
  36. BNS_NAVIGATE = 2 // A Navigate event has happened..."
  37. } BNSTATE; // The navigate state..."
  38. cpp_quote("#ifdef MIDL_PASS")
  39. typedef DWORD RGBQUAD;
  40. cpp_quote("#endif")
  41. [
  42. uuid(4D4BE85C-9BF6-4218-999A-8EA489F08EF7),
  43. helpstring("Image List private interface for saving to a stream in a compatible manner."),
  44. local
  45. ]
  46. interface IImageListPersistStream : IUnknown
  47. {
  48. HRESULT LoadEx(DWORD dwFlags, IStream* pstm);
  49. HRESULT SaveEx(DWORD dwFlags, IStream* pstm);
  50. };
  51. [
  52. uuid(E94CC23B-0916-4ba6-93F4-AA52B5355EE8),
  53. helpstring("Image List private interface."),
  54. local
  55. ]
  56. interface IImageListPriv : IUnknown
  57. {
  58. HRESULT SetFlags(UINT flags);
  59. HRESULT GetFlags(UINT* pflags);
  60. HRESULT SetColorTable(int start, int len, RGBQUAD *prgb, int* pi);
  61. HRESULT GetPrivateGoo(HBITMAP* hbmp, HDC* hdc, HBITMAP* hbmpMask, HDC* hdcMask);
  62. HRESULT GetMirror(REFIID riid, PVOID* ppv);
  63. HRESULT CopyDitherImage( WORD iDst, int xDst, int yDst, IUnknown* punk, int iSrc, UINT fStyle);
  64. };
  65. [
  66. uuid(01e13875-2e58-4671-be46-59945432be6e),
  67. local
  68. ]
  69. interface IMarkupCallback : IUnknown
  70. {
  71. HRESULT GetState(UINT uState);
  72. HRESULT Notify(int nCode, int iLink);
  73. HRESULT InvalidateRect(RECT* prc);
  74. HRESULT OnCustomDraw(DWORD dwDrawStage, HDC hdc, const RECT *prc, DWORD dwItemSpec, UINT uItemState, LRESULT *pdwResult);
  75. };
  76. cpp_quote("#define MARKUPSIZE_CALCWIDTH 0 // calculates width without restriction")
  77. cpp_quote("#define MARKUPSIZE_CALCHEIGHT 1 // prc->right contains max width")
  78. cpp_quote("#define MARKUPLINKTEXT_URL 0 // get the URL")
  79. cpp_quote("#define MARKUPLINKTEXT_ID 1 // get the id text associated with the url")
  80. cpp_quote("#define MARKUPLINKTEXT_TEXT 2 // get the plain text associated with the url")
  81. cpp_quote("#define MARKUPSTATE_FOCUSED 0x00000001")
  82. cpp_quote("#define MARKUPSTATE_ENABLED 0x00000002")
  83. cpp_quote("#define MARKUPSTATE_VISITED 0x00000004")
  84. cpp_quote("#define MARKUPSTATE_ALLOWMARKUP 0x80000000")
  85. cpp_quote("#define MARKUPMESSAGE_KEYEXECUTE 0")
  86. cpp_quote("#define MARKUPMESSAGE_CLICKEXECUTE 1")
  87. cpp_quote("#define MARKUPMESSAGE_WANTFOCUS 2")
  88. typedef HANDLE HTHEME;
  89. [
  90. uuid(50cf8c58-029d-41bf-b8dd-4ce4f95d9257),
  91. local
  92. ]
  93. interface IControlMarkup : IUnknown
  94. {
  95. HRESULT SetCallback(IUnknown* punk);
  96. HRESULT GetCallback(REFIID riid, [out, iid_is(riid)] void** ppvUnk);
  97. HRESULT SetFonts(HFONT hFont, HFONT hFontUnderline);
  98. HRESULT GetFonts(HFONT* phFont, HFONT* phFontUnderline);
  99. HRESULT SetText(LPCWSTR pwszText);
  100. HRESULT GetText(BOOL bRaw, LPWSTR pwszText, DWORD *pdwCch);
  101. HRESULT SetLinkText(int iLink, UINT uMarkupLinkText, LPCWSTR pwszText);
  102. HRESULT GetLinkText(int iLink, UINT uMarkupLinkText, LPWSTR pwszText, DWORD *pdwCch);
  103. HRESULT SetRenderFlags(UINT uDT);
  104. HRESULT GetRenderFlags(UINT *puDT, HTHEME *phTheme, int *piPartId, int *piStateIdNormal, int *piStateIdLink);
  105. HRESULT SetThemeRenderFlags(UINT uDT, HTHEME hTheme, int iPartId, int iStateIdNormal, int iStateIdLink);
  106. HRESULT GetState(int iLink, UINT uStateMask, UINT* puState);
  107. HRESULT SetState(int iLink, UINT uStateMask, UINT uState);
  108. HRESULT DrawText(HDC hdcClient, LPCRECT prcClient);
  109. HRESULT SetLinkCursor();
  110. HRESULT CalcIdealSize(HDC hdc, UINT uMarkUpCalc, RECT* prc);
  111. HRESULT SetFocus();
  112. HRESULT KillFocus();
  113. HRESULT IsTabbable();
  114. HRESULT OnButtonDown( POINT pt );
  115. HRESULT OnButtonUp( POINT pt);
  116. HRESULT OnKeyDown(UINT uVitKey);
  117. HRESULT HitTest(POINT pt, UINT* pidLink);
  118. // Reinsert this if you'd like to use it to conveniently process WM_BUTTONDOWN,
  119. // WM_BUTTONUP, WM_KEYDOWN messages. The "correct" way is to process these messages
  120. // yourself and use OnButtonDown, OnButtonUp, OnKeyDown instead.
  121. //HRESULT HandleEvent(BOOL keys, HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  122. };
  123. interface IBasePropPage;
  124. interface IAdvancedDialog;
  125. cpp_quote("#if _WIN32_IE >= 0x0600")
  126. cpp_quote("// INTERFACE: IThemeUIPages")
  127. cpp_quote("// DESCRIPTION:")
  128. cpp_quote("// This interface is used by all the pages in the Display Control Panel. They allow the")
  129. cpp_quote("// base pages (Theme, Background, ScreenSaver, Appearance, and Settings) to specify that")
  130. cpp_quote("// they want to add pages to the Advanced Display Properties dialog. (Theme Settings, ")
  131. cpp_quote("// Appearance, Web, and Effects)")
  132. cpp_quote("// DisplayAdvancedDialog() will open the adv dialog. When this object opens the dialog,")
  133. cpp_quote("// it will add the appropriate pages, check when anyone's state gets dirty,")
  134. cpp_quote("// and then merge the state from the advanced pages back into the base pages.")
  135. cpp_quote("// This object will see if the IAdvancedDialog pages get dirty, and if one is and the")
  136. cpp_quote("// user clicked OK instead of CANCEL, then it will use IAdvancedDialog::OnClose()")
  137. cpp_quote("// to let the IAdvancedDialog object merge it's state into IBasePropPage.")
  138. cpp_quote("// This object is used to allow desk.cpl, shell32.dll, and ThemeUI.dll control the dialog.")
  139. cpp_quote("// ")
  140. cpp_quote("// This object may implement IEnumUnknown to allow callers to access the list of IBasePropPage")
  141. cpp_quote("// objects. IPersist::GetClassID() should be used to identify one IBasePropPage object")
  142. cpp_quote("// from another. This is also true for IAdvancedDialog objects.")
  143. cpp_quote("// ")
  144. cpp_quote("// AddPage: This is used by desk.cpl to ask ThemeUI for the pages it wants to add to the base dlg.")
  145. cpp_quote("// This allows the pages to be put in a specific order.")
  146. cpp_quote("// AddAdvancedPage: This is used by shell32.dll's Background tab to let ThemeUI know")
  147. cpp_quote("// that it wants to add a page to the advanced dialog (the Web tab).")
  148. cpp_quote("// DisplayAdvancedDialog: This is used by any of the base pages to open the advanced page.")
  149. cpp_quote("// ApplyPressed: Each page in the base dialog needs to call this method when they receive")
  150. cpp_quote("// PSN_APPLY. This will allow the IThemeUIPages to notify every object")
  151. cpp_quote("// that the state should be applied, even if their dlgproc was never activated.")
  152. cpp_quote("// ")
  153. cpp_quote("// Values for nPageID in IThemeUIPages::AddPage()")
  154. cpp_quote("#define PAGE_DISPLAY_THEMES 0")
  155. cpp_quote("#define PAGE_DISPLAY_APPEARANCE 1")
  156. cpp_quote("#define PAGE_DISPLAY_SETTINGS 2")
  157. cpp_quote("// ")
  158. cpp_quote("// Values for dwFlags in IThemeUIPages::ApplyPressed()")
  159. cpp_quote("#define TUIAP_NONE 0x00000000")
  160. cpp_quote("#define TUIAP_CLOSE_DIALOG 0x00000001")
  161. cpp_quote("#define TUIAP_WAITFORAPPLY 0x00000002")
  162. cpp_quote("// Values for dwEM in IThemeUIPages::SetExecMode()")
  163. cpp_quote("#define EM_NORMAL 0x00000001")
  164. cpp_quote("#define EM_SETUP 0x00000002")
  165. cpp_quote("#define EM_DETECT 0x00000003")
  166. cpp_quote("#define EM_INVALID_MODE 0x00000004")
  167. [
  168. uuid(7bba4934-ac4b-471c-a3e7-252c5ff3e8dd),
  169. helpstring("Theme UI property pages private interface."),
  170. local
  171. ]
  172. interface IThemeUIPages : IUnknown
  173. {
  174. HRESULT AddPage([in] LPFNSVADDPROPSHEETPAGE pfnAddPage, [in] LPARAM lParam, [in] long nPageID);
  175. HRESULT AddBasePage([in] IBasePropPage * pBasePage);
  176. HRESULT ApplyPressed([in] DWORD dwFlags);
  177. HRESULT GetBasePagesEnum([out] IEnumUnknown ** ppEnumUnknown);
  178. HRESULT UpdatePreview([in] DWORD dwFlags);
  179. HRESULT AddFakeSettingsPage([in] LPVOID pVoid);
  180. HRESULT SetExecMode([in] DWORD dwEM);
  181. HRESULT GetExecMode([out] DWORD* pdwEM);
  182. HRESULT LoadMonitorBitmap([in] BOOL fFillDesktop, [out] HBITMAP* phbmMon);
  183. HRESULT DisplaySaveSettings([in] PVOID pContext, [in] HWND hwnd, [out] int* piRet);
  184. };
  185. cpp_quote("// INTERFACE: IAdvancedDialog")
  186. cpp_quote("// DESCRIPTION:")
  187. cpp_quote("// ")
  188. cpp_quote("// DisplayAdvancedDialog: Display the Advanced Dialog.")
  189. cpp_quote("// hwndParent: Parent the dialog on this hwnd.")
  190. cpp_quote("// pBasePage: Load the state from this propertybag. Save the state here if OK is pressed.")
  191. cpp_quote("// pfEnableApply: Tell the parent dialog if they should enable the Apply button.")
  192. [
  193. uuid(9DD92CA7-BF27-4fcb-AE95-1EAC48FC254D),
  194. helpstring("An advanced property page private negociation interface."),
  195. local
  196. ]
  197. interface IAdvancedDialog : IUnknown
  198. {
  199. HRESULT DisplayAdvancedDialog([in] HWND hwndParent, [in] IPropertyBag * pBasePage, [in] BOOL * pfEnableApply);
  200. };
  201. cpp_quote("// INTERFACE: IBasePropPage")
  202. cpp_quote("// DESCRIPTION:")
  203. cpp_quote("// This interface is implemented by IShellPropSheetExt objects which want to add pages to")
  204. cpp_quote("// the advanced dialog. When one of the base dialog pages clicks on a button that")
  205. cpp_quote("// should open the advanced dialog, IThemeUIPages::DisplayAdvancedDialog() will call")
  206. cpp_quote("// each object's IBasePropPage::GetAdvancedPage() method. The base page will then")
  207. cpp_quote("// create an IAdvancedDialog object to add the advanced pages and track the state. If the")
  208. cpp_quote("// advanced dlg clicks OK, then the state should move back into the IBasePropPage")
  209. cpp_quote("// object, via IAdvancedDialog::OnClose(, pBasePropPage). Then the base dlg object can")
  210. cpp_quote("// persist the state when the dialog receives an OK or APPLY command.")
  211. cpp_quote("// This object may want to implement IObjectWithSite so it can get a IUnknown pointer to")
  212. cpp_quote("// the IThemeUIPages object. This will allow this object's base pages to open the")
  213. cpp_quote("// advanced dialog via IBasePropPage::GetAdvancedPage().")
  214. cpp_quote("// ")
  215. cpp_quote("// GetAdvancedPage: The callee will create the IAdvancedDialog object and return it.")
  216. cpp_quote("// Note that the state may be dirty if the user already opened and closed the")
  217. cpp_quote("// advanced dialog without clicking Apply.")
  218. cpp_quote("// OnClose: The page will be called when the base dialog is closing. This will allow")
  219. cpp_quote("// the object to persist it's state.")
  220. typedef [
  221. helpstring("Constants that define the OnApply action")
  222. ] enum tagPropPageOnApply
  223. {
  224. PPOAACTION_CANCEL, // = 0
  225. PPOAACTION_OK, // = 1
  226. PPOAACTION_APPLY // = 2
  227. } PROPPAGEONAPPLY;
  228. [
  229. uuid(B34E525B-9EB4-433b-8E0F-019C4F21D7E7),
  230. helpstring("A base property page private negociation interface."),
  231. local
  232. ]
  233. interface IBasePropPage : IShellPropSheetExt
  234. {
  235. HRESULT GetAdvancedDialog([out] IAdvancedDialog ** ppAdvDialog);
  236. HRESULT OnApply([in] PROPPAGEONAPPLY oaAction);
  237. };
  238. cpp_quote("// INTERFACE: IPreviewSystemMetrics")
  239. cpp_quote("// DESCRIPTION:")
  240. cpp_quote("// This object will allow the negociation with a preview of the system metrics.")
  241. [
  242. uuid(FC0A77D2-2ADF-4ede-A885-523A3A74A145),
  243. helpstring("This object will allow the negociation with a preview of the system metrics."),
  244. local
  245. ]
  246. interface IPreviewSystemMetrics : IUnknown
  247. {
  248. HRESULT RefreshColors(void);
  249. HRESULT UpdateDPIchange(void);
  250. HRESULT UpdateCharsetChanges(void);
  251. HRESULT DeskSetCurrentScheme([in, string] LPCWSTR pwzSchemeName);
  252. };
  253. cpp_quote("#define SZ_PBPROP_SCREENSAVER_PATH TEXT(\"ScreenSaver_Path\")")
  254. cpp_quote("#define SZ_PBPROP_BACKGROUND_PATH TEXT(\"Background_Path\")")
  255. cpp_quote("#define SZ_PBPROP_BACKGROUNDSRC_PATH TEXT(\"BackgroundSrc_Path\") // The source path of the background. This is before it was converted to a .bmp.")
  256. cpp_quote("#define SZ_PBPROP_BACKGROUND_TILE TEXT(\"Background_TILE\") // VT_UI4 with WPSTYLE_ flags from WALLPAPEROPT in IActiveDesktop::SetWallpaperOptions()")
  257. cpp_quote("#define SZ_PBPROP_VISUALSTYLE_PATH TEXT(\"VisualStyle_Path\") // VT_BSTR with the visual style path (.mstheme file)")
  258. cpp_quote("#define SZ_PBPROP_VISUALSTYLE_COLOR TEXT(\"VisualStyle_Color\") // VT_BSTR with the visual style Color Style")
  259. cpp_quote("#define SZ_PBPROP_VISUALSTYLE_SIZE TEXT(\"VisualStyle_Size\") // VT_BSTR with the visual style size")
  260. cpp_quote("#define SZ_PBPROP_SYSTEM_METRICS TEXT(\"SystemMetrics\") // VT_BYREF byref pointer to SYSTEMMETRICSALL")
  261. cpp_quote("#define SZ_PBPROP_PREVIEW1 TEXT(\"Preview1\") // VT_UNKNOWN to object w/IThemePreview")
  262. cpp_quote("#define SZ_PBPROP_PREVIEW2 TEXT(\"Preview2\") // VT_UNKNOWN to object w/IThemePreview")
  263. cpp_quote("#define SZ_PBPROP_PREVIEW3 TEXT(\"Preview3\") // VT_UNKNOWN to object w/IThemePreview")
  264. cpp_quote("#define SZ_PBPROP_CUSTOMIZE_THEME TEXT(\"Theme_CustomizeTheme\") // VT_EMPTY. Used to indicate that the theme settings have changed")
  265. cpp_quote("#define SZ_PBPROP_WEBCOMPONENTS TEXT(\"WebComponents\") // VT_UNKNOWN. Get or Set the IActiveDesktop interface containing the ActiveDesktop components")
  266. cpp_quote("#define SZ_PBPROP_OPENADVANCEDDLG TEXT(\"OpenAdvancedDialog\") // VT_BOOL. Tells the IPropertyBag to open the Advanced dialog when opening. If read, this indicates if the base dialog should go away when the Adv dlg closes.")
  267. cpp_quote("#define SZ_PBPROP_BACKGROUND_COLOR TEXT(\"BackgroundColor\") // VT_UI4. Get or set the COLORREF (RGB) color for the background system metric.")
  268. cpp_quote("#define SZ_PBPROP_THEME_LAUNCHTHEME TEXT(\"ThemeLaunchTheme\") // VT_LPWSTR. This will be the path to the .theme file to open.")
  269. cpp_quote("#define SZ_PBPROP_APPEARANCE_LAUNCHMSTHEME TEXT(\"AppearanceLaunchMSTheme\") // VT_LPWSTR. This will be the path to the .mstheme file to open.")
  270. cpp_quote("#define SZ_PBPROP_PREOPEN TEXT(\"PreOpen\") // VARIANT is NULL. This is sent right before the dialog opens.")
  271. cpp_quote("#define SZ_PBPROP_DPI_MODIFIED_VALUE TEXT(\"Settings_DPIModifiedValue\") // VT_I4 specifying the currently modified DPI")
  272. cpp_quote("#define SZ_PBPROP_DPI_APPLIED_VALUE TEXT(\"Settings_DPIAppliedValue\") // VT_I4 specifying the currently applied DPI")
  273. cpp_quote("// Display Control Panel flags to specify an opening page.")
  274. cpp_quote("// You can launch \"rundll32.exe shell32.dll,Control_RunDLL desk.cpl ,@Settings\" ")
  275. cpp_quote("// which will launch the Display CPL to the Settings tab.")
  276. cpp_quote("// These names are canonical so they will work on all languages. The tab order")
  277. cpp_quote("// will change when admin policies are applied or when the OS revs the UI and")
  278. cpp_quote("// these names will always work.")
  279. cpp_quote("#define SZ_DISPLAYCPL_OPENTO_THEMES TEXT(\"Themes\") // Themes tab")
  280. cpp_quote("#define SZ_DISPLAYCPL_OPENTO_DESKTOP TEXT(\"Desktop\") // Desktop tab")
  281. cpp_quote("#define SZ_DISPLAYCPL_OPENTO_SCREENSAVER TEXT(\"ScreenSaver\") // Screen Saver tab")
  282. cpp_quote("#define SZ_DISPLAYCPL_OPENTO_APPEARANCE TEXT(\"Appearance\") // Appearance tab")
  283. cpp_quote("#define SZ_DISPLAYCPL_OPENTO_SETTINGS TEXT(\"Settings\") // Settings tab")
  284. cpp_quote("#endif // _WIN32_IE >= 0x0600")
  285. //
  286. // SHAssocEnumHandlers returns an IEnumAssocHandlers object.
  287. //
  288. [
  289. helpstring("Enumerate handlers"),
  290. uuid(973810ad-9599-4b88-9e4d-6ee98c9552da),
  291. object,
  292. pointer_default(unique),
  293. local
  294. ]
  295. interface IAssocHandler : IUnknown
  296. {
  297. HRESULT GetName([string, out] LPWSTR *ppsz);
  298. HRESULT GetUIName([string, out] LPWSTR *ppsz);
  299. HRESULT GetIconLocation([string, out]LPWSTR *ppszPath, int *pIndex);
  300. HRESULT IsRecommended();
  301. HRESULT MakeDefault([in, string] LPCWSTR pszDescription);
  302. HRESULT Exec([in] HWND hwnd, [in, string] LPCWSTR pszFile);
  303. // CHEATING here, need to move CMINVOKECOMMANDINFOEX into shtypes.idl
  304. HRESULT Invoke([in] void *pici, [in, string] LPCWSTR pszFile);
  305. };
  306. [
  307. helpstring("Enumerate handlers"),
  308. uuid(973810ae-9599-4b88-9e4d-6ee98c9552da),
  309. object,
  310. pointer_default(unique),
  311. local
  312. ]
  313. interface IEnumAssocHandlers : IUnknown
  314. {
  315. HRESULT Next(
  316. [in] ULONG celt,
  317. [out, size_is(celt), length_is(*pceltFetched)] IAssocHandler **rgelt,
  318. [out] ULONG *pceltFetched);
  319. // HRESULT Skip([in] ULONG celt);
  320. // HRESULT Reset();
  321. // HRESULT Clone([out] IEnumAssocHandlers **ppEnumHandlers);
  322. };
  323. //-------------------------------------------------------------------------
  324. //
  325. // Hardware Event interfaces
  326. //
  327. //-------------------------------------------------------------------------
  328. ///////////////////////////////////////////////////////////////////////////////
  329. //
  330. [
  331. object,
  332. uuid(99BC7510-0A96-43fa-8BB1-C928A0302EFB),
  333. helpstring("Hardware Event Device Info Interface"),
  334. pointer_default(unique)
  335. ]
  336. interface IHWDevice : IUnknown
  337. {
  338. HRESULT Init([in, string] LPCWSTR pszDeviceID);
  339. HRESULT AutoplayHandler([in, string] LPCWSTR pszEventType,
  340. [in, string] LPCWSTR pszHandler);
  341. };
  342. cpp_quote("#define HWDEVCUSTOMPROP_USEVOLUMEPROCESSING 0x00000001")
  343. [
  344. object,
  345. uuid(77D5D69C-D6CE-4026-B625-26964EEC733F),
  346. helpstring("HW Device Custom Properties"),
  347. pointer_default(unique)
  348. ]
  349. interface IHWDeviceCustomProperties : IUnknown
  350. {
  351. HRESULT InitFromDeviceID([in, string] LPCWSTR pszDeviceID, [in] DWORD dwFlags);
  352. HRESULT InitFromDevNode([in, string] LPCWSTR pszDevNode, [in] DWORD dwFlags);
  353. HRESULT GetDWORDProperty([in, string] LPCWSTR pszPropName,
  354. [out] DWORD* pdwProp);
  355. // Will not retrieve REG_MULTI_SZ values
  356. HRESULT GetStringProperty([in, string] LPCWSTR pszPropName,
  357. [out, string] LPWSTR* ppszProp);
  358. // Will not retrieve REG_SZ values
  359. // The MultiSz string is in ppblob->asData
  360. HRESULT GetMultiStringProperty([in, string] LPCWSTR pszPropName,
  361. [in] BOOL fMergeMultiSz, [out] WORD_BLOB** ppblob);
  362. HRESULT GetBlobProperty([in, string] LPCWSTR pszPropName,
  363. [out] BYTE_BLOB** ppblob);
  364. };
  365. ///////////////////////////////////////////////////////////////////////////////
  366. //
  367. [
  368. object,
  369. uuid(66057ABA-FFDB-4077-998E-7F131C3F8157),
  370. helpstring("Autoplay Handler Enumerator Interface"),
  371. pointer_default(unique)
  372. ]
  373. interface IEnumAutoplayHandler : IUnknown
  374. {
  375. HRESULT Next([out, string] LPWSTR* ppszHandler,
  376. [out, string] LPWSTR* ppszAction,
  377. [out, string] LPWSTR* ppszProvider,
  378. [out, string] LPWSTR* ppszIconLocation);
  379. };
  380. ///////////////////////////////////////////////////////////////////////////////
  381. //
  382. // We want to make sure not to use 0x1 as it is S_FALSE
  383. cpp_quote("#define HANDLERDEFAULT_USERCHOSENDEFAULT 0x00000002")
  384. cpp_quote("#define HANDLERDEFAULT_EVENTHANDLERDEFAULT 0x00000004")
  385. cpp_quote("#define HANDLERDEFAULT_MORERECENTHANDLERSINSTALLED 0x00000008")
  386. cpp_quote("#define HANDLERDEFAULT_DEFAULTSAREDIFFERENT 0x00000010")
  387. cpp_quote("#define HANDLERDEFAULT_MAKERETURNVALUE(a) MAKE_HRESULT(0, FACILITY_ITF, (a))")
  388. cpp_quote("#define HANDLERDEFAULT_GETFLAGS(a) HRESULT_CODE((a))")
  389. [
  390. object,
  391. uuid(335E9E5D-37FC-4d73-8BA8-FD4E16B28134),
  392. helpstring("Autoplay Handler Interface"),
  393. pointer_default(unique)
  394. ]
  395. interface IAutoplayHandler : IUnknown
  396. {
  397. HRESULT Init([in, string] LPCWSTR pszDeviceID,
  398. [in, string] LPCWSTR pszEventType);
  399. HRESULT InitWithContent([in, string] LPCWSTR pszDeviceID,
  400. [in, string] LPCWSTR pszEventType,
  401. [in, string] LPCWSTR pszContentTypeHandler);
  402. HRESULT EnumHandlers([out] IEnumAutoplayHandler** ppenum);
  403. // Will return other S_* success codes than S_OK and S_FALSE.
  404. HRESULT GetDefaultHandler([out, string] LPWSTR* ppszHandler);
  405. HRESULT SetDefaultHandler([in, string] LPCWSTR pszHandler);
  406. };
  407. ///////////////////////////////////////////////////////////////////////////////
  408. //
  409. [
  410. object,
  411. uuid(557730F6-41FA-4d11-B9FD-F88AB155347F),
  412. helpstring("Autoplay Handler Properties Interface"),
  413. pointer_default(unique)
  414. ]
  415. interface IAutoplayHandlerProperties : IUnknown
  416. {
  417. HRESULT Init([in, string] LPCWSTR pszHandler);
  418. HRESULT GetInvokeProgIDAndVerb([out, string] LPWSTR* ppszInvokeProgID,
  419. [out, string] LPWSTR* ppszInvokeVerb);
  420. };
  421. ///////////////////////////////////////////////////////////////////////////////
  422. //
  423. cpp_quote("#include <pshpack8.h>")
  424. typedef struct tagVOLUMEINFO
  425. {
  426. DWORD dwState; // State of volume
  427. LPWSTR pszDeviceIDVolume; // \\?\STORAGE#Volume#...{...GUID...}
  428. LPWSTR pszVolumeGUID; // \\?\Volume{...GUID...}
  429. DWORD dwVolumeFlags; // see HWDVF_... flags
  430. DWORD dwDriveType; // see HWDT_... flags
  431. DWORD dwDriveCapability; // see HWDDC_... flags
  432. LPWSTR pszLabel;
  433. LPWSTR pszFileSystem;
  434. DWORD dwFileSystemFlags;
  435. DWORD dwMaxFileNameLen;
  436. DWORD dwRootAttributes;
  437. DWORD dwSerialNumber; //
  438. DWORD dwDriveState; // see HWDDS_...;
  439. DWORD dwMediaState; // see HWDMS_...;
  440. DWORD dwMediaCap; // see HWDMC_...;
  441. LPWSTR pszAutorunIconLocation; // Autorun IconLocation from autorun.inf
  442. LPWSTR pszAutorunLabel; // Autorun Label from autorun.inf
  443. LPWSTR pszIconLocationFromService; // Icon location from Custom Properties
  444. LPWSTR pszNoMediaIconLocationFromService; // Icon location from Custom Properties
  445. LPWSTR pszLabelFromService; // Label from Custom Properties
  446. } VOLUMEINFO;
  447. typedef struct tagVOLUMEINFO2
  448. {
  449. DWORD cbSize;
  450. WCHAR szDeviceIDVolume[200];
  451. WCHAR szVolumeGUID[50];
  452. WCHAR szLabel[33];
  453. WCHAR szFileSystem[30];
  454. DWORD dwState;
  455. DWORD dwVolumeFlags;
  456. DWORD dwDriveType;
  457. DWORD dwDriveCapability;
  458. DWORD dwFileSystemFlags;
  459. DWORD dwMaxFileNameLen;
  460. DWORD dwRootAttributes;
  461. DWORD dwSerialNumber;
  462. DWORD dwDriveState;
  463. DWORD dwMediaState;
  464. DWORD dwMediaCap;
  465. DWORD oAutorunIconLocation;
  466. DWORD oAutorunLabel;
  467. DWORD oIconLocationFromService;
  468. DWORD oNoMediaIconLocationFromService;
  469. DWORD oLabelFromService;
  470. WCHAR szOptionalStrings[1];
  471. } VOLUMEINFO2;
  472. typedef struct tagHWDEVICEINFO
  473. {
  474. DWORD cbSize;
  475. WCHAR szDeviceIntfID[200];
  476. GUID guidInterface;
  477. DWORD dwState;
  478. DWORD dwDeviceFlags;
  479. } HWDEVICEINFO;
  480. cpp_quote("#define SHHARDWAREEVENT_VOLUMEARRIVED 0x00000001")
  481. cpp_quote("#define SHHARDWAREEVENT_VOLUMEUPDATED 0x00000002")
  482. cpp_quote("#define SHHARDWAREEVENT_VOLUMEREMOVED 0x00000004")
  483. cpp_quote("#define SHHARDWAREEVENT_MOUNTPOINTARRIVED 0x00000008")
  484. cpp_quote("#define SHHARDWAREEVENT_MOUNTPOINTREMOVED 0x00000010")
  485. cpp_quote("#define SHHARDWAREEVENT_DEVICEARRIVED 0x00000020")
  486. cpp_quote("#define SHHARDWAREEVENT_DEVICEUPDATED 0x00000040")
  487. cpp_quote("#define SHHARDWAREEVENT_DEVICEREMOVED 0x00000080")
  488. cpp_quote("#define SHHARDWAREEVENT_VOLUMEMOUNTED 0x00000100")
  489. cpp_quote("#define SHHARDWAREEVENT_VOLUMEDISMOUNTED 0x00000200")
  490. // dont use these escaped misnames..
  491. cpp_quote("#define SHHARDWAREEVENT_MOUNTDEVICEARRIVED 0x00000020 // is really DEVICEARRIVED")
  492. cpp_quote("#define SHHARDWAREEVENT_MOUNTDEVICEUPDATED 0x00000040 // is really DEVICEUPDATED")
  493. cpp_quote("#define SHHARDWAREEVENT_MOUNTDEVICEREMOVED 0x00000080 // is really DEVICEREMOVED")
  494. cpp_quote("#define MAX_FILESYSNAME 30")
  495. cpp_quote("#define MAX_LABEL_NTFS 32 // not including the NULL")
  496. cpp_quote("#define MAX_LABEL MAX_LABEL_NTFS + 1")
  497. cpp_quote("#define MAX_ICONLOCATION MAX_PATH + 12 // + 12 for comma and index")
  498. cpp_quote("#define MAX_VOLUMEINFO2 (sizeof(VOLUMEINFO2) + (4 * MAX_ICONLOCATION + 1 * MAX_LABEL) * sizeof(WCHAR))")
  499. typedef struct tagSHHARDWAREEVENT
  500. {
  501. DWORD cbSize;
  502. DWORD dwEvent;
  503. BYTE rgbPayLoad[1];
  504. } SHHARDWAREEVENT;
  505. typedef struct tagMTPTADDED
  506. {
  507. WCHAR szMountPoint[260/*MAX_PATH*/];
  508. WCHAR szDeviceIDVolume[200/*MAX_DEVICEID*/];
  509. } MTPTADDED;
  510. cpp_quote("#include <poppack.h>") /* Return to byte packing */
  511. // All this information comes from the HW. No information that is not HW
  512. // related should be added to this.
  513. // Media State
  514. cpp_quote("#define HWDMS_PRESENT 0x10000000")
  515. cpp_quote("#define HWDMS_FORMATTED 0x20000000")
  516. //cpp_quote("#define HWDMS_WRITEPROTECTED_SUPPORTDETECTION 0x40000000")
  517. //cpp_quote("#define HWDMS_WRITEPROTECTED 0x80000000")
  518. // Media Capabilities
  519. cpp_quote("#define HWDMC_WRITECAPABILITY_SUPPORTDETECTION 0x00000001")
  520. cpp_quote("#define HWDMC_CDROM 0x00000002")
  521. cpp_quote("#define HWDMC_CDRECORDABLE 0x00000004")
  522. cpp_quote("#define HWDMC_CDREWRITABLE 0x00000008")
  523. cpp_quote("#define HWDMC_DVDROM 0x00000010")
  524. cpp_quote("#define HWDMC_DVDRECORDABLE 0x00000020")
  525. cpp_quote("#define HWDMC_DVDREWRITABLE 0x00000040")
  526. cpp_quote("#define HWDMC_DVDRAM 0x00000080")
  527. cpp_quote("#define HWDMC_ANALOGAUDIOOUT 0x00000100")
  528. cpp_quote("#define HWDMC_RANDOMWRITE 0x00001000")
  529. cpp_quote("#define HWDMC_HASAUTORUNINF 0x00002000")
  530. cpp_quote("#define HWDMC_HASAUTORUNCOMMAND 0x00004000")
  531. cpp_quote("#define HWDMC_HASDESKTOPINI 0x00008000")
  532. cpp_quote("#define HWDMC_HASDVDMOVIE 0x00010000")
  533. cpp_quote("#define HWDMC_HASAUDIOTRACKS 0x00020000")
  534. cpp_quote("#define HWDMC_HASDATATRACKS 0x00040000")
  535. cpp_quote("#define HWDMC_HASAUDIOTRACKS_UNDETERMINED 0x00080000")
  536. cpp_quote("#define HWDMC_HASDATATRACKS_UNDETERMINED 0x00100000")
  537. cpp_quote("#define HWDMC_HASUSEAUTOPLAY 0x00200000")
  538. cpp_quote("#define HWDMC_CDTYPEMASK (HWDMC_CDROM | HWDMC_CDRECORDABLE | HWDMC_CDREWRITABLE | HWDMC_DVDROM | HWDMC_DVDRECORDABLE | HWDMC_DVDREWRITABLE | HWDMC_DVDRAM)")
  539. // Drive State
  540. //cpp_quote("#define HWDDS_PRESENT_SUPPORTDETECTION 0x10000000")
  541. //cpp_quote("#define HWDDS_PRESENT 0x20000000")
  542. //cpp_quote("#define HWDDS_SLEEPING_SUPPORTDETECTION 0x40000000")
  543. //cpp_quote("#define HWDDS_SLEEPING 0x80000000")
  544. // Drive Capabilities
  545. cpp_quote("#define HWDDC_CAPABILITY_SUPPORTDETECTION HWDMC_WRITECAPABILITY_SUPPORTDETECTION ")
  546. cpp_quote("#define HWDDC_CDROM HWDMC_CDROM ")
  547. cpp_quote("#define HWDDC_CDRECORDABLE HWDMC_CDRECORDABLE ")
  548. cpp_quote("#define HWDDC_CDREWRITABLE HWDMC_CDREWRITABLE ")
  549. cpp_quote("#define HWDDC_DVDROM HWDMC_DVDROM ")
  550. cpp_quote("#define HWDDC_DVDRECORDABLE HWDMC_DVDRECORDABLE ")
  551. cpp_quote("#define HWDDC_DVDREWRITABLE HWDMC_DVDREWRITABLE ")
  552. cpp_quote("#define HWDDC_DVDRAM HWDMC_DVDRAM ")
  553. cpp_quote("#define HWDDC_ANALOGAUDIOOUT HWDMC_ANALOGAUDIOOUT ")
  554. cpp_quote("#define HWDDC_RANDOMWRITE HWDMC_RANDOMWRITE")
  555. cpp_quote("#define HWDDC_NOSOFTEJECT 0x00002000")
  556. cpp_quote("#define HWDDC_FLOPPYSOFTEJECT 0x00004000")
  557. cpp_quote("#define HWDDC_REMOVABLEDEVICE 0x00008000")
  558. cpp_quote("#define HWDDC_CDTYPEMASK HWDMC_CDTYPEMASK")
  559. // Volume flags
  560. cpp_quote("#define HWDVF_STATE_SUPPORTNOTIFICATION 0x00000001")
  561. cpp_quote("#define HWDVF_STATE_ACCESSDENIED 0x00000002")
  562. cpp_quote("#define HWDVF_STATE_DISMOUNTED 0x00000004")
  563. cpp_quote("#define HWDVF_STATE_HASAUTOPLAYHANDLER 0x00000008")
  564. cpp_quote("#define HWDVF_STATE_DONOTSNIFFCONTENT 0x00000010")
  565. cpp_quote("#define HWDVF_STATE_JUSTDOCKED 0x00000020")
  566. // Drive Type
  567. // Watch out not to have these conflict with capabilities reporting
  568. cpp_quote("#define HWDTS_FLOPPY35 0x00000001")
  569. cpp_quote("#define HWDTS_FLOPPY525 0x00000002")
  570. cpp_quote("#define HWDTS_REMOVABLEDISK 0x00000004")
  571. cpp_quote("#define HWDTS_FIXEDDISK 0x00000008")
  572. cpp_quote("#define HWDTS_CDROM 0x00000010")
  573. // Device Flags
  574. cpp_quote("#define HWDDF_HASDEVICEHANDLER 0x00000001")
  575. cpp_quote("#define HWDDF_HASDEVICEHANDLER_UNDETERMINED 0x00000002")
  576. cpp_quote("#define HWDDF_REMOVABLEDEVICE 0x00000004")
  577. cpp_quote("#define HWDDF_REMOVABLEDEVICE_UNDETERMINED 0x00000008")
  578. [
  579. object,
  580. uuid(553A4A55-681C-440e-B109-597B9219CFB2),
  581. helpstring("Hardware Device Enumerator"),
  582. pointer_default(unique)
  583. ]
  584. interface IHardwareDevicesEnum : IUnknown
  585. {
  586. HRESULT Next(
  587. [out, string] LPWSTR* ppszDeviceID,
  588. [out] GUID* pguidDeviceID);
  589. };
  590. [
  591. object,
  592. uuid(3342BDE1-50AF-4c5d-9A19-DABD01848DAE),
  593. helpstring("Hardware Device Volumes Enumerator"),
  594. pointer_default(unique)
  595. ]
  596. interface IHardwareDevicesVolumesEnum : IUnknown
  597. {
  598. HRESULT Next([out] VOLUMEINFO* pvolinfo);
  599. };
  600. [
  601. object,
  602. uuid(EE93D145-9B4E-480c-8385-1E8119A6F7B2),
  603. helpstring("Hardware Device MountPoints Enumerator"),
  604. pointer_default(unique)
  605. ]
  606. interface IHardwareDevicesMountPointsEnum : IUnknown
  607. {
  608. HRESULT Next(
  609. [out, string] LPWSTR* ppszMountPoint, // "c:\", or "d:\MountFolder\"
  610. [out, string] LPWSTR* ppszDeviceIDVolume);// \\?\STORAGE#Volume#...{...GUID...}
  611. };
  612. // HWDEV: HardWareDevice EnumVolume
  613. cpp_quote("#define HWDEV_GETCUSTOMPROPERTIES 0x000000001")
  614. [
  615. object,
  616. uuid(CC271F08-E1DD-49bf-87CC-CD6DCF3F3D9F),
  617. helpstring("Hardware Device Interface"),
  618. pointer_default(unique)
  619. ]
  620. interface IHardwareDevices : IUnknown
  621. {
  622. HRESULT EnumVolumes([in] DWORD dwFlags, [out] IHardwareDevicesVolumesEnum** ppenum);
  623. HRESULT EnumMountPoints([out] IHardwareDevicesMountPointsEnum** ppenum);
  624. HRESULT EnumDevices([out] IHardwareDevicesEnum** ppenum);
  625. HRESULT Advise([in] DWORD dwProcessID,
  626. [in] ULONG_PTR hThread, [in] ULONG_PTR pfctCallback, [out] DWORD* pdwToken);
  627. HRESULT Unadvise([in] DWORD dwToken);
  628. };
  629. [
  630. uuid(ec35e37a-6579-4f3c-93cd-6e62c4ef7636),
  631. local
  632. ]
  633. interface IStartMenuPin : IUnknown
  634. {
  635. cpp_quote("#define SMPIN_POS(i) (LPCITEMIDLIST)MAKEINTRESOURCE((i)+1)")
  636. cpp_quote("#define SMPINNABLE_EXEONLY 0x00000001") // allow only EXEs to be pinned
  637. cpp_quote("#define SMPINNABLE_REJECTSLOWMEDIA 0x00000002") // reject slow media
  638. HRESULT EnumObjects([out] IEnumIDList **ppenumIDList);
  639. //
  640. // Pin: pidlFrom = NULL, pidlTo = pidl
  641. // Unpin: pidlFrom = pidl, pidlTo = NULL
  642. // Update: pidlFrom = old, pidlTo = new
  643. // Move: pidlFrom = pidl, pidlTo = SMPINPOS(iPos)
  644. HRESULT Modify(LPCITEMIDLIST pidlFrom, LPCITEMIDLIST pidlTo);
  645. HRESULT GetChangeCount([out] ULONG *pulOut);
  646. //
  647. // pdto = data object to test
  648. // dwFlags is an SMPINNABLE_* flag
  649. // *ppidl receives pidl being pinned
  650. //
  651. HRESULT IsPinnable([in] IDataObject *pdto,
  652. [in] DWORD dwFlags,
  653. [optional,out] LPITEMIDLIST *ppidl); // S_FALSE if not
  654. //
  655. // Find the pidl on the pin list and resolve the shortcut that
  656. // tracks it.
  657. //
  658. // Returns S_OK if the pidl changed and was resolved.
  659. // Returns S_FALSE if the pidl did not change.
  660. // Returns an error if the Resolve failed.
  661. //
  662. HRESULT Resolve([in] HWND hwnd, DWORD dwFlags, [in] LPCITEMIDLIST pidl, [out] LPITEMIDLIST *ppidlResolved);
  663. }
  664. cpp_quote("#if _WIN32_IE >= 0x0600")
  665. typedef struct tagCATLIST
  666. {
  667. const GUID* pguid;
  668. const SHCOLUMNID* pscid;
  669. } CATLIST;
  670. [
  671. uuid(509767BF-AC06-49f8-9E76-8BBC17F0EE93),
  672. local
  673. ]
  674. interface IDefCategoryProvider : IUnknown
  675. {
  676. HRESULT Initialize(const GUID* pguid, // Default GUID to group by
  677. const SHCOLUMNID* pscid, // Default SCID to group by
  678. const SHCOLUMNID* pscidExclude, // array of SHCOLUMNIDs to exlude. Terminated by GUID_NULL
  679. HKEY hkey, // The registry key to add categorizers from (Close key after call)
  680. const CATLIST* pcl, // an array of CATLIST entries terminated by a NULL entry
  681. IShellFolder* psf); // The shell folder that implements IShellFolder2 to group. Needs to implement IPersistFolder2
  682. }
  683. cpp_quote("#define MB_STATE_TRACK 1")
  684. cpp_quote("#define MB_STATE_MENU 2")
  685. cpp_quote("#define MB_STATE_ITEM 4")
  686. [
  687. uuid(b6664df7-0c46-460e-ba97-82ed46d0289e),
  688. local
  689. ]
  690. interface IInitAccessible : IUnknown
  691. {
  692. HRESULT InitAcc([in] int iState, [in] IMenuBand *pmb, [in] int iIndex, [in] HMENU hmenu, [in] WORD wID);
  693. };
  694. [
  695. uuid(4a7efa30-795c-4167-8676-b78fc5330cc7),
  696. local
  697. ]
  698. interface IInitTrackPopupBar : IUnknown
  699. {
  700. HRESULT InitTrackPopupBar([in] void* pvContext, [in] int iID, [in] HMENU hmenu, [in] HWND hwnd);
  701. };
  702. // ICompositeFolder::InitComposite
  703. // initializes a composite folder with the information necessary to aggregate
  704. // the child folders
  705. typedef [v1_enum] enum _CFITYPE
  706. {
  707. CFITYPE_CSIDL = 0, // Use COMPFOLDERINIT.csidl
  708. CFITYPE_PIDL, // Use COMPFOLDERINIT.pidl
  709. CFITYPE_PATH, // Use COMPFOLDERINIT.pszPath
  710. } CFITYPE;
  711. [v1_enum] enum
  712. {
  713. CFINITF_CHILDREN = 0x0000, // each composite folder will show up as a child
  714. CFINITF_FLAT = 0x0001, // each folder's children show up flat together
  715. };
  716. typedef UINT CFINITF;
  717. typedef struct _COMPFOLDERINIT
  718. {
  719. UINT uType;
  720. [switch_type(UINT), switch_is(uType)] union
  721. {
  722. [case(CFITYPE_CSIDL)] int csidl;
  723. [case(CFITYPE_PIDL)] LPCITEMIDLIST pidl;
  724. [case(CFITYPE_PATH)] [string] LPOLESTR pszPath;
  725. } DUMMYUNIONNAME;
  726. LPOLESTR pszName;
  727. } COMPFOLDERINIT;
  728. [
  729. helpstring("ICompositeFolder"),
  730. uuid(601ac3dd-786a-4eb0-bf40-ee3521e70bfb), // IID_ICompositeFolder
  731. object,
  732. pointer_default(unique)
  733. ]
  734. interface ICompositeFolder : IUnknown
  735. {
  736. HRESULT InitComposite(
  737. [in] WORD wSignature,
  738. [in] REFCLSID refclsid,
  739. [in] CFINITF flags,
  740. [in] ULONG celt,
  741. [in, size_is(celt)] const COMPFOLDERINIT *rgCFs);
  742. HRESULT BindToParent(
  743. [in] LPCITEMIDLIST pidl,
  744. [in] REFIID riid,
  745. [out, iid_is(riid)] void **ppv,
  746. [out] LPITEMIDLIST *ppidlLast);
  747. };
  748. cpp_quote("#endif // _WIN32_IE >= 0x0600")
  749. cpp_quote("#include <pshpack8.h>")
  750. typedef struct _tagSHELLREMINDER
  751. {
  752. DWORD cbSize;
  753. LPWSTR pszName;
  754. LPWSTR pszTitle;
  755. LPWSTR pszText;
  756. LPWSTR pszTooltip;
  757. LPWSTR pszIconResource;
  758. LPWSTR pszShellExecute;
  759. GUID* pclsid;
  760. DWORD dwShowTime;
  761. DWORD dwRetryInterval;
  762. DWORD dwRetryCount;
  763. DWORD dwTypeFlags;
  764. } SHELLREMINDER;
  765. cpp_quote("#include <poppack.h>")
  766. [
  767. uuid(6c6d9735-2d86-40e1-b348-08706b9908c0), // IID_IEnumShellReminder
  768. local
  769. ]
  770. interface IEnumShellReminder : IUnknown
  771. {
  772. HRESULT Next(
  773. [in] ULONG celt,
  774. [out, size_is(celt), length_is(*pceltFetched)] SHELLREMINDER** rgelt,
  775. [out] ULONG *pceltFetched);
  776. HRESULT Skip([in] ULONG celt);
  777. HRESULT Reset();
  778. HRESULT Clone([out] IEnumShellReminder **ppesr);
  779. };
  780. [
  781. uuid(968edb91-8a70-4930-8332-5f15838a64f9), // IID_IShellReminderManager
  782. local
  783. ]
  784. interface IShellReminderManager : IUnknown
  785. {
  786. HRESULT Add(const SHELLREMINDER* psr);
  787. HRESULT Delete(LPCWSTR pszName);
  788. HRESULT Enum(IEnumShellReminder** ppesr);
  789. };
  790. cpp_quote("#if _WIN32_IE >= 0x0400")
  791. [
  792. object,
  793. uuid(5dd6b79a-3ab7-49c0-ab82-6b2da7d78d75)
  794. ]
  795. interface IDeskBandEx : IUnknown
  796. {
  797. HRESULT MoveBand();
  798. };
  799. cpp_quote("#endif // _WIN32_IE >= 0x0400")
  800. cpp_quote("#include <pshpack8.h>")
  801. typedef struct tagNOTIFYITEM
  802. {
  803. LPWSTR pszExeName;
  804. LPWSTR pszIconText;
  805. HICON hIcon;
  806. HWND hWnd;
  807. DWORD dwUserPref;
  808. UINT uID;
  809. GUID guidItem;
  810. } NOTIFYITEM, *LPNOTIFYITEM;
  811. cpp_quote("#include <poppack.h>")
  812. [
  813. object,
  814. uuid(d782ccba-afb0-43f1-94db-fda3779eaccb), // IID_INotificationCB
  815. pointer_default(unique)
  816. ]
  817. interface INotificationCB : IUnknown
  818. {
  819. HRESULT Notify([in] DWORD dwMessage, [in] LPNOTIFYITEM pNotifyItem);
  820. };
  821. [
  822. object,
  823. uuid(fb852b2c-6bad-4605-9551-f15f87830935), // IID_ITrayNotify
  824. pointer_default(unique)
  825. ]
  826. interface ITrayNotify : IUnknown
  827. {
  828. HRESULT RegisterCallback([in] INotificationCB* pNotifyCB);
  829. HRESULT SetPreference([in] LPNOTIFYITEM pNotifyItem);
  830. HRESULT EnableAutoTray([in] BOOL bTraySetting);
  831. };
  832. [
  833. uuid(3037B6E1-0B58-4c34-AA63-A958D2A4413D),
  834. local
  835. ]
  836. interface IMagic : IUnknown
  837. {
  838. enum
  839. {
  840. MAGIC_ALIGN_BOTTOMLEFT = 0x00000001,
  841. MAGIC_ALIGN_BOTTOMRIGHT = 0x00000002,
  842. MAGIC_ALIGN_TOPLEFT = 0x00000003,
  843. MAGIC_ALIGN_TOPRIGHT = 0x00000004,
  844. MAGIC_ALIGN_CENTER = 0x00000005,
  845. };
  846. typedef DWORD MAGIC_ALIGN;
  847. [helpstring("Plays an animation (Alpha specified in uId + 1) for each frame in interval. The bitmap is divided by frames to get the size")]
  848. HRESULT Illusion(HMODULE hmod, UINT uId, UINT cFrames, UINT interval, MAGIC_ALIGN align, RECT rc);
  849. HRESULT BlinkFrom(HDC hdcFrom, RECT* rc);
  850. HRESULT BlinkMove(RECT* rc);
  851. HRESULT BlinkTo(HDC hdcTo, UINT cFrames);
  852. }
  853. // a resouce map object defines via XML the mapping of canonical IDs for resources
  854. // to the resources that should be loaded for controls.
  855. //
  856. // a client will CoCreate this object, and call IPersistFile::Load to specify the URL
  857. // to a XML file which contains the mapping. then whe the client is read to start
  858. // mapping resources they do the following:
  859. //
  860. // // from the resource map, pick up the defn for a wizard with the id 'WebPublishing'
  861. // LoadResourceMap(L"wizard", L"WebPublishing");
  862. //
  863. // // load the caption resource from that defn
  864. // LoadString(NULL, L"caption"), szBuffer, ARRAYSIZE(szBuffer))
  865. //
  866. // resources can also be scoped on a particular sub-resource (eg. a dialog in a particular
  867. // map). this is achived by selecting a scope for the resources, eg:
  868. //
  869. // // select the dialog 'welcome' from the current resource map
  870. // IXMLDOMNode *pdn;
  871. // hr = SelectResourceScope(L"dialog", L"welcome", &pdn);
  872. // if (SUCCEEDED(hr))
  873. // {
  874. // // load the caption string
  875. // LoadString(pdn, L"caption", szBuffer, ARRAYSIZE(szBuffer))
  876. // }
  877. [
  878. uuid(9c50a798-5d90-4130-83da-38da83456711),
  879. helpstring("Resource Mapping Object"),
  880. local
  881. ]
  882. interface IResourceMap : IUnknown
  883. {
  884. HRESULT LoadResourceMap([in, string] LPCWSTR pszResourceClass, [in, string] LPCWSTR pszID);
  885. HRESULT SelectResourceScope([in, string] LPCWSTR pszResourceType, [in, string] LPCWSTR pszID, [in, out] IXMLDOMNode **ppdnScope);
  886. HRESULT LoadString([in] IXMLDOMNode *pdnScope, [in, string] LPCWSTR pszID, [in, out] LPWSTR pszBuffer, [in] int cch);
  887. HRESULT LoadBitmap([in] IXMLDOMNode *pdnScope, [in, string] LPCWSTR pszID, [in, out] HBITMAP *pbm);
  888. };
  889. cpp_quote("#define SID_ResourceMap IID_IResourceMap")
  890. cpp_quote("#define HNET_SHARECONNECTION 0x00000001")
  891. cpp_quote("#define HNET_FIREWALLCONNECTION 0x00000002")
  892. cpp_quote("#define HNET_SHAREPRINTERS 0x00000004")
  893. cpp_quote("#define HNET_SETCOMPUTERNAME 0x00000008")
  894. cpp_quote("#define HNET_SETWORKGROUPNAME 0x00000010")
  895. cpp_quote("#define HNET_SHAREFOLDERS 0x00000020")
  896. cpp_quote("#define HNET_BRIDGEPRIVATE 0x00000040")
  897. cpp_quote("#define HNET_ICSCLIENT 0x00000080 // Only on W9x")
  898. cpp_quote("#define HNET_LOG 0x80000000 // Output results to a log file before configuring homenet (TODO)")
  899. [
  900. object,
  901. uuid(543c4fa4-52dd-421a-947a-4d7f92b8860a), // IID_IHomeNetworkWizard
  902. pointer_default(unique)
  903. ]
  904. interface IHomeNetworkWizard : IUnknown
  905. {
  906. HRESULT ConfigureSilently(LPCWSTR pszPublicConnection, DWORD hnetFlags, BOOL* pfRebootRequired);
  907. HRESULT ShowWizard(HWND hwndParent, BOOL* pfRebootRequired);
  908. };
  909. [
  910. helpstring("Shell Namespace enumerator"),
  911. uuid(70629033-e363-4a28-a567-0db78006e6d7),
  912. object,
  913. pointer_default(unique)
  914. ]
  915. interface IEnumShellItems : IUnknown
  916. {
  917. HRESULT Next(
  918. [in] ULONG celt,
  919. [out, size_is(celt), length_is(*pceltFetched)] IShellItem **rgelt,
  920. [out] ULONG *pceltFetched);
  921. HRESULT Skip([in] ULONG celt);
  922. HRESULT Reset();
  923. HRESULT Clone([out] IEnumShellItems **ppenum);
  924. };
  925. [
  926. helpstring("IParentAndItem"),
  927. uuid(b3a4b685-b685-4805-99d9-5dead2873236), // IID_IParentAndItem
  928. object,
  929. pointer_default(unique)
  930. ]
  931. interface IParentAndItem : IUnknown
  932. {
  933. // 2 ways to init
  934. // pidlParent == NULL
  935. // psf is folder, pidlChild is child relative to psf
  936. HRESULT SetParentAndItem([in] LPCITEMIDLIST pidlParent, [in] IShellFolder *psf, [in] LPCITEMIDLIST pidlChild);
  937. // all params optional
  938. // ppidlParent gets full pidl to parent of item
  939. // ppsf gets parent folder for item
  940. // ppidlChild gets item relitve to psf
  941. HRESULT GetParentAndItem([out] LPITEMIDLIST *ppidlParent, [out] IShellFolder **ppsf, [out] LPITEMIDLIST *ppidlChild);
  942. };
  943. // BindHandler GUIDs for IShellItemArray::BindToHandler (defined in shlguid.h)")
  944. // BHID_DataObject Ask shellItemArray for its Dataobject")
  945. [
  946. helpstring("Shell Item Container"),
  947. uuid(787F8E92-9837-4011-9F83-7DE593BDC002),
  948. object,
  949. pointer_default(unique)
  950. ]
  951. interface IShellItemArray : IUnknown
  952. {
  953. typedef [v1_enum] enum
  954. {
  955. SIATTRIBFLAGS_AND = 0x00000001, // if multiple items and the attirbutes together.
  956. SIATTRIBFLAGS_OR = 0x00000002, // if multiple items or the attributes together.
  957. SIATTRIBFLAGS_APPCOMPAT = 0x00000003, // Call GetAttributes directly on the ShellFolder for multiple attributes
  958. SIATTRIBFLAGS_MASK = 0x00000003,
  959. } SIATTRIBFLAGS;
  960. HRESULT BindToHandler(
  961. [in] IBindCtx *pbc,
  962. [in] REFGUID rbhid,
  963. [in] REFIID riid,
  964. [out, iid_is(riid)] void **ppvOut);
  965. HRESULT GetAttributes(
  966. [in] SIATTRIBFLAGS dwAttribFlags,
  967. [in] SFGAOF sfgaoMask,
  968. [out] SFGAOF *psfgaoAttribs);
  969. HRESULT GetCount(
  970. [out] DWORD *pdwNumItems);
  971. HRESULT GetItemAt(
  972. [in] DWORD dwIndex,
  973. [out] IShellItem **ppsi);
  974. HRESULT EnumItems(
  975. [out] IEnumShellItems **ppenumShellItems);
  976. };
  977. [
  978. uuid(198a5f2d-e19f-49ea-9033-c975e0f376ec),
  979. object,
  980. ]
  981. interface IItemHandler : IPersist
  982. {
  983. HRESULT SetItem(IShellItem *psi);
  984. HRESULT GetItem(IShellItem **ppsi);
  985. };
  986. [
  987. helpstring("IShellFolderNames"),
  988. uuid(6cd8f9cc-dfe7-48f2-a60a-3831e26af734),
  989. object,
  990. pointer_default(unique)
  991. ]
  992. interface IShellFolderNames : IUnknown
  993. {
  994. [v1_enum] enum
  995. {
  996. SIPDNF_FROMEDITING = 0x00000001,
  997. };
  998. typedef UINT SIPDNF;
  999. HRESULT ParseIncremental(
  1000. [in] SIPDNF flags,
  1001. [in, string] LPCOLESTR pszName,
  1002. [in] IBindCtx *pbc,
  1003. [out] LPITEMIDLIST *ppidl,
  1004. [out] UINT *pcchNext);
  1005. HRESULT GetDisplayName(
  1006. [in] LPCITEMIDLIST pidl,
  1007. [in] SIGDN sigdnName,
  1008. [out, string] LPOLESTR *ppszName);
  1009. };
  1010. [
  1011. helpstring("IFolderItemsView"),
  1012. uuid(0be044ca-f8a3-49b8-bdb2-5f5319e9de89),
  1013. object,
  1014. pointer_default(unique)
  1015. ]
  1016. interface IFolderItemsView : IUnknown
  1017. {
  1018. HRESULT GetCurrentViewMode([out] UINT *pViewMode);
  1019. HRESULT SetCurrentViewMode([in] UINT ViewMode);
  1020. HRESULT GetFolder([in] REFIID riid, [out, iid_is(riid)] void **ppv);
  1021. HRESULT GetFolderItem([out] IShellItem **ppsiFolder);
  1022. HRESULT ItemCount([in] UINT *pcItems);
  1023. HRESULT EnumItems([out] IEnumShellItems **ppenum);
  1024. HRESULT SelectedItemCount([out] UINT *pcSelected);
  1025. HRESULT EnumSelectedItems([out] IEnumShellItems **ppenum);
  1026. // view index based methods
  1027. HRESULT Item([in] int iViewIndex, [out] IShellItem **ppsi);
  1028. HRESULT ItemIndex([in] IShellItem *psi, [out] int *piViewIndex);
  1029. // uses IShellView, SVSI_ flags
  1030. HRESULT SelectItem([in] int iViewIndex, [in] SVSIF svsif);
  1031. // index of item with SVSI_SELECTIONMARK
  1032. HRESULT SelectionMark([in] int *piViewIndex);
  1033. };
  1034. [
  1035. helpstring("Assist legacy applications to use IShellItem"),
  1036. uuid(679d9e36-f8f9-11d2-8deb-00c04f6837d5),
  1037. object,
  1038. ]
  1039. interface ILocalCopy : IUnknown
  1040. {
  1041. // flags for ILocalCopy methods")
  1042. // LCDOWN_READONLY read only helper, Upload() fails with E_ACCESSDENIED")
  1043. // LCDOWN_SAVEAS write only helper, no download required for Download()")
  1044. // LC_FORCEROUNDTRIP never use local cache (always roundtrip both Upload() and Download())")
  1045. enum
  1046. {
  1047. LCDOWN_READONLY = 0x00000001,
  1048. LC_SAVEAS = 0x00000002,
  1049. LC_FORCEROUNDTRIP = 0x00000010,
  1050. };
  1051. typedef DWORD LCFLAGS;
  1052. HRESULT Download([in] LCFLAGS flags, [in] IBindCtx *pbc, [out, string] LPWSTR *ppszPath);
  1053. HRESULT Upload([in] LCFLAGS flags, [in] IBindCtx *pbc);
  1054. };
  1055. [
  1056. uuid(985F64F0-D410-4E02-BE22-DA07F2B5C5E1),
  1057. object,
  1058. pointer_default(unique)
  1059. ]
  1060. interface IDefViewFrame3 : IUnknown
  1061. {
  1062. // for borrowing/returning the listview
  1063. HRESULT GetWindowLV(HWND * phwnd);
  1064. HRESULT ShowHideListView(); // must call before returning from function that called GetWindowLV2!!!
  1065. HRESULT OnResizeListView();
  1066. HRESULT ReleaseWindowLV();
  1067. // to help with context menu operations on the listview
  1068. HRESULT DoRename(); // REVIEW: needs QueryRename() and needs to be on a different interface (IContextMenuUIHelper? has to be able to be a different object than IContextMenuSite...)
  1069. };
  1070. // IContextMenuSite - handles QueryContextMenu, TrackPopupMenu, Invoke (with all
  1071. // the proper point unicode/ansi information applied), and all message forwarding
  1072. // for whatever wants to do a TrackPopupMenu on an IContextMenu.
  1073. // The site usually updates the status bar as well.
  1074. //
  1075. // fFlags is passed to the QueryContexteMneu call, pt is in screen coordinates.
  1076. //
  1077. cpp_quote("#define SID_SContextMenuSite IID_IContextMenuSite")
  1078. cpp_quote("#define DS_BACKUPDISPLAYCPL 0x00000001")
  1079. [
  1080. uuid(610d76de-7861-4715-9d08-b6e297c3985b),
  1081. helpstring("For enumerating and displaying display settings"),
  1082. local
  1083. ]
  1084. interface IDisplaySettings : IUnknown
  1085. {
  1086. HRESULT SetMonitor([in] DWORD dwMonitor);
  1087. HRESULT GetModeCount([out] DWORD* pdwCount, [in] BOOL fOnlyPreferredModes);
  1088. HRESULT GetMode([in] DWORD dwMode, [in] BOOL fOnlyPreferredModes, [out] DWORD* pdwWidth, [out] DWORD* pdwHeight, [out] DWORD* pdwColor);
  1089. HRESULT SetSelectedMode([in] HWND hwnd, [in] DWORD dwWidth, [in] DWORD dwHeight, [in] DWORD dwColor, [out] BOOL* pfApplied, [in] DWORD dwFlags);
  1090. HRESULT GetSelectedMode([out] DWORD* pdwWidth, [out] DWORD* pdwHeight, [out] DWORD* pdwColor);
  1091. HRESULT GetAttached([out] BOOL* pfAttached);
  1092. HRESULT SetPruningMode([in] BOOL fIsPruningOn);
  1093. HRESULT GetPruningMode([out] BOOL* pfCanBePruned, [out] BOOL* pfIsPruningReadOnly, [out] BOOL* pfIsPruningOn);
  1094. };
  1095. [
  1096. uuid(b80df3d8-82db-4e8d-8097-8c2c0e746470),
  1097. helpstring("For getting around IDLs default interface requirement"),
  1098. local
  1099. ]
  1100. interface IScreenResFixer : IUnknown
  1101. {
  1102. };
  1103. typedef struct tagTREEWALKERSTATS {
  1104. int nFiles; // number of files we have seen
  1105. int nFolders; // number of folders we have seen (does not include the root)
  1106. int nDepth; // the current depth
  1107. DWORD dwClusterSize; // cluster size of the disk we are currently on
  1108. ULONGLONG ulTotalSize; // total size of all files we have seen
  1109. ULONGLONG ulActualSize; // total size on disk of all files, taking into account compression, sparse files, and cluster slop
  1110. } TREEWALKERSTATS;
  1111. // All callbacks receives fully-qualified paths to the item found, being
  1112. // entered, being left, etc.
  1113. //
  1114. // Return values for all methods:
  1115. // S_OK -- Normal, continue processing files, skip the problem file in error case
  1116. // S_FALSE -- Conitnue but quit the current directory
  1117. // E_NOTIMPL -- same as S_OK
  1118. // E_* -- Stop right away.
  1119. [
  1120. uuid(95CE8411-7027-11D1-B879-006008059382),
  1121. helpstring("The callback interface for IShellTreeWalker"),
  1122. ]
  1123. interface IShellTreeWalkerCallBack : IUnknown
  1124. {
  1125. HRESULT FoundFile([in, string] LPCWSTR pwszPath, [in] TREEWALKERSTATS *ptws, [in] WIN32_FIND_DATAW * pwfd);
  1126. HRESULT EnterFolder([in, string] LPCWSTR pwszPath, [in] TREEWALKERSTATS *ptws, [in] WIN32_FIND_DATAW * pwfd);
  1127. HRESULT LeaveFolder([in, string] LPCWSTR pwszPath, [in] TREEWALKERSTATS *ptws);
  1128. HRESULT HandleError([in, string] LPCWSTR pwszPath, [in] TREEWALKERSTATS *ptws, [in] HRESULT hrError);
  1129. };
  1130. [
  1131. uuid(95CE8410-7027-11D1-B879-006008059382),
  1132. helpstring("The common File System tree traversal interface in shell"),
  1133. ]
  1134. interface IShellTreeWalker : IUnknown
  1135. {
  1136. enum
  1137. {
  1138. WT_FOLDERFIRST = 0x00000001, // default to files first
  1139. WT_MAXDEPTH = 0x00000002, // specify the maximum depth we go into
  1140. WT_FOLDERONLY = 0x00000004, // only walks directories: default is to only return files
  1141. WT_NOTIFYFOLDERENTER = 0x00000008, // notifies whenever entering a folder :default is to notify on every file
  1142. WT_NOTIFYFOLDERLEAVE = 0x00000010, // notifies whenever leaving a folder
  1143. WT_GOINTOREPARSEPOINT = 0x00000020, // default is to stop at any reparse points
  1144. WT_EXCLUDEWALKROOT = 0x00000040, // default is to EnterFolder the starting point
  1145. WT_ALL = 0x0000007F, // ;internal
  1146. };
  1147. typedef DWORD STWFLAGS;
  1148. // dwFlags -- search flags: details above
  1149. // pwszWalkRoot -- the root directory to start from
  1150. // pwszWalkSpec -- the spec used to match files
  1151. // iMaxDepth -- maximum depth to go into
  1152. // pstwcb -- pointer to the callback interface
  1153. //
  1154. // Return Value:
  1155. // S_OK -- succeeded
  1156. // E_* -- failed
  1157. HRESULT WalkTree([in] DWORD dwFlags, [in, string] LPCWSTR pwszWalkRoot, [in, string] LPCWSTR pwszWalkSpec, [in] int iMaxPath, [in] IShellTreeWalkerCallBack * pstwcb);
  1158. };
  1159. cpp_quote("_inline void FreeIDListArray(LPITEMIDLIST *ppidls, UINT cItems)")
  1160. cpp_quote("{ ")
  1161. cpp_quote(" UINT i; ")
  1162. cpp_quote(" for (i = 0; i < cItems; i++) ")
  1163. cpp_quote(" { ")
  1164. cpp_quote(" CoTaskMemFree(ppidls[i]); ")
  1165. cpp_quote(" } ")
  1166. cpp_quote(" CoTaskMemFree(ppidls); ")
  1167. cpp_quote("} ")
  1168. [
  1169. uuid(EC6FE84F-DC14-4FBB-889F-EA50FE27FE0F),
  1170. pointer_default(unique)
  1171. ]
  1172. interface IUIElement : IUnknown
  1173. {
  1174. HRESULT get_Name([in] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszName);
  1175. HRESULT get_Icon([in] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszIcon); // we support icon resource strings like: "shell32,-123"
  1176. HRESULT get_Tooltip([in] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszInfotip);
  1177. };
  1178. typedef enum tagUISTATE
  1179. {
  1180. UIS_ENABLED = 0,
  1181. UIS_DISABLED = 1,
  1182. UIS_HIDDEN = 2
  1183. } UISTATE;
  1184. [
  1185. uuid(4026DFB9-7691-4142-B71C-DCF08EA4DD9C),
  1186. pointer_default(unique)
  1187. ]
  1188. interface IUICommand : IUIElement
  1189. {
  1190. HRESULT get_CanonicalName([out] GUID* pguidCommandName);
  1191. HRESULT get_State([in] IShellItemArray *psiItemArray, [in] BOOL fOkToBeSlow, [out] UISTATE* puisState);
  1192. HRESULT Invoke([in] IShellItemArray *psiItemArray, [in, optional] IBindCtx *pbc);
  1193. };
  1194. [
  1195. uuid(869447DA-9F84-4E2A-B92D-00642DC8A911),
  1196. pointer_default(unique)
  1197. ]
  1198. interface IEnumUICommand : IUnknown
  1199. {
  1200. HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] IUICommand** pUICommand, [out] ULONG *pceltFetched);
  1201. HRESULT Skip([in] ULONG celt);
  1202. HRESULT Reset();
  1203. HRESULT Clone([out] IEnumUICommand **ppenum);
  1204. };
  1205. [
  1206. uuid(2CB95001-FC47-4064-89B3-328F2FE60F44),
  1207. pointer_default(unique)
  1208. ]
  1209. interface IUICommandTarget : IUnknown
  1210. {
  1211. HRESULT get_Name([in] REFGUID guidCanonicalName, [in] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszName);
  1212. HRESULT get_Icon([in] REFGUID guidCanonicalName, [in] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszIcon); // we support icon resource strings like: "shell32,-123"
  1213. HRESULT get_Tooltip([in] REFGUID guidCanonicalName, [in] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszInfotip);
  1214. HRESULT get_State([in] REFGUID guidCanonicalName, [in] IShellItemArray *psiItemArray, [out] UISTATE* puisState);
  1215. HRESULT Invoke([in] REFGUID guidCanonicalName, [in] IShellItemArray *psiItemArray, [in, optional] IBindCtx *pbc);
  1216. };
  1217. interface ITransferDest;
  1218. typedef GUID STGTRANSCONFIRMATION, *LPSTGTRANSCONFIRMATION;
  1219. // Custom Confirmation
  1220. //
  1221. // Contains the information required to display a custom confirmation. In addition
  1222. // to this information, data about the item as obtained from the STATSTG structure
  1223. // can also be used.
  1224. typedef struct tagCUSTOMCONFIRMATION
  1225. {
  1226. DWORD cbSize; // sizeof this structure
  1227. DWORD dwFlags; // CCF_*flags to controll what is displayed
  1228. DWORD dwButtons; // CCB_*value that determines what options are valid responses
  1229. LPWSTR pwszTitle; // The title of this confirmation, for example what would be used as a dialog title.
  1230. LPWSTR pwszDescription; // The description of problem being confirmed
  1231. HICON hicon; // OPTIONAL. If provided, the icon is displayed as an indication of what type of operation is being confirmed
  1232. LPWSTR pwszAdvancedDetails; // OPTIONAL. If provided, contains further details about what is being confirmed.
  1233. } CUSTOMCONFIRMATION, *LPCUSTOMCONFIRMATION;
  1234. // Implementing this interface implies that your storage is filesystem
  1235. // based. If the source and destination are both filesystem based then
  1236. // moves and copies can be done using win32 filesystem APIs.
  1237. [
  1238. object,
  1239. uuid(E820910B-1910-404D-AFAF-5D7298B9B28D),
  1240. helpstring("IFileSystemStorage"),
  1241. pointer_default(unique)
  1242. ]
  1243. interface IFileSystemStorage : IUnknown
  1244. {
  1245. // Returns the full filesystem path to the stogage
  1246. HRESULT GetPath([out] WCHAR *pszName, [in] DWORD cch);
  1247. HRESULT GetAttributes([in, string] const WCHAR *pszName, [in] DWORD dwMask, [out] DWORD *pdwAttribs);
  1248. };
  1249. //-------------------------------------------------------------------------
  1250. //
  1251. // IStorageProcessor interface
  1252. //
  1253. //
  1254. // [Member functions]
  1255. //
  1256. // IStorageProcessor::Run(pstgSrc, pstgDest, dwOperation, dwOptions)
  1257. // Launches an operation on the specified storage(s).
  1258. //
  1259. //-------------------------------------------------------------------------
  1260. // Storage operation tags.
  1261. typedef [v1_enum] enum tagSTGOP
  1262. {
  1263. STGOP_MOVE = 1,
  1264. STGOP_COPY = 2,
  1265. STGOP_SYNC = 3,
  1266. STGOP_DIFF = 4,
  1267. STGOP_REMOVE = 5,
  1268. STGOP_RENAME = 6,
  1269. STGOP_STATS = 7,
  1270. STGOP_COPY_PREFERHARDLINK = 8,
  1271. } STGOP, *LPSTGOP;
  1272. // Options governing the overall operation
  1273. typedef [v1_enum] enum tagSTGPROCOPTIONS
  1274. {
  1275. STOPT_ROOTONLY = 0x00000004, // Operation applies only and directly to the root
  1276. STOPT_NOCONFIRMATIONS = 0x00000008, // No confirmations at all
  1277. STOPT_NOPROGRESSUI = 0x00000010, // No default progress UI
  1278. STOPT_NOSTATS = 0x00000020, // no stats calculations
  1279. } STGPROCOPTIONS, *LPSTGPROCOPTIONS;
  1280. // dynamic storage object, used for collecting items before passing to the storage
  1281. // transfer engine.
  1282. [
  1283. helpstring("Interface to in-memory bundle PIDLs, IStreams, IStorages"),
  1284. uuid(c7bfc3d0-8939-4d9d-8973-654099329956),
  1285. object,
  1286. ]
  1287. interface IDynamicStorage : IUnknown
  1288. {
  1289. typedef [v1_enum] enum
  1290. {
  1291. DSTGF_NONE = 0x0,
  1292. DSTGF_ALLOWDUP = 0x1,
  1293. } DSTGF;
  1294. HRESULT AddIDList([in] DWORD cpidl, [in, size_is(cpidl)] LPITEMIDLIST* rgpidl, DSTGF dstgf);
  1295. HRESULT BindToItem([in, string] LPCWSTR pwszName, [in] REFIID riid, [out, iid_is(riid)] void **ppv);
  1296. HRESULT EnumItems([out] IEnumShellItems **ppesi);
  1297. };
  1298. //-------------------------------------------------------------------------
  1299. //
  1300. // ITransferAdviseSink interface
  1301. //
  1302. //-------------------------------------------------------------------------
  1303. // ITransferAdviseSink response codes
  1304. cpp_quote("#define STRESPONSE_CONTINUE S_OK")
  1305. cpp_quote("#define STRESPONSE_RENAME MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_ITF, 20)")
  1306. cpp_quote("#define STRESPONSE_SKIP MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 21)")
  1307. cpp_quote("#define STRESPONSE_CANCEL MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 22)")
  1308. cpp_quote("#define STRESPONSE_RETRY HRESULT_FROM_WIN32(ERROR_RETRY)")
  1309. [
  1310. object,
  1311. uuid(D082C196-A2B2-41ff-A5E5-80EFF91B7D79),
  1312. helpstring("ITransferAdviseSink"),
  1313. pointer_default(unique)
  1314. ]
  1315. interface ITransferAdviseSink : IQueryContinue
  1316. {
  1317. // Before an operation such as a copy, move, or delete is about
  1318. // to be performed the storage will advise the sink via this method.
  1319. HRESULT PreOperation ( [in] const STGOP op,
  1320. [in] IShellItem *psiItem,
  1321. [in] IShellItem *psiDest);
  1322. // When the storage believes that user confirmation or acknowledgement
  1323. // is required, it asks the advise to seek it via this method.
  1324. // pwszItem is [in,out] non-const because rename can massage the name.
  1325. HRESULT ConfirmOperation( [in] IShellItem *psiItem,
  1326. [in] IShellItem *psiDest,
  1327. [in] STGTRANSCONFIRMATION stc,
  1328. [in, unique] LPCUSTOMCONFIRMATION pcc);
  1329. // As the operation (copy, move, etc) proceeds the storage calls
  1330. // this method on the sink. There is no guarantee of service but
  1331. // intervals of one second between updates are ideal.
  1332. HRESULT OperationProgress( [in] const STGOP op,
  1333. [in] IShellItem *psiItem,
  1334. [in] IShellItem *psiDest,
  1335. [in] ULONGLONG ulTotal,
  1336. [in] ULONGLONG ulComplete);
  1337. // When an operation is complete or if it is aborted the storage advises
  1338. // the sink via this method and provides the final status (S_OK, failure,
  1339. // etc) of the task. Certain operations can provide extra information
  1340. // describing the results, such as when a file is renamed on a copy collision.
  1341. HRESULT PostOperation( [in] const STGOP op,
  1342. [in] IShellItem *psiItem,
  1343. [in] IShellItem *psiDest,
  1344. [in] HRESULT hrResult);
  1345. }
  1346. //-------------------------------------------------------------------------
  1347. //
  1348. // ITransferDest interface
  1349. //
  1350. //-------------------------------------------------------------------------
  1351. cpp_quote("#define STGX_MOVE_MOVE 0x00000000")
  1352. cpp_quote("#define STGX_MOVE_COPY 0x00000001")
  1353. cpp_quote("#define STGX_MOVE_ONLYIFEXISTS 0x00000002 // Only perform if target already exists")
  1354. cpp_quote("#define STGX_MOVE_ATOMIC 0x00000004 // Operation must be immediate, all-or-nothing. If a storage must be walked and each sub-element moved/copied that is not atomic, but if the entire storage can be moved/copied in one step that is atomic. If a move must be done as a seperate copy and a delete that is not atomic.")
  1355. cpp_quote("#define STGX_MOVE_TESTONLY 0x00000008 // Test whether operation is valid only, do not perform. Useful in testing for ATOMIC before trying an operation.")
  1356. cpp_quote("#define STGX_MOVE_NORECURSION 0x00000010 // When moving/copying storages, do not move/copy their contents")
  1357. cpp_quote("#define STGX_MOVE_FORCE 0x00001000")
  1358. cpp_quote("#define STGX_MOVE_PREFERHARDLINK 0x00002000 // default to hard linking instead of a full file copy/move")
  1359. typedef DWORD STGXMOVE;
  1360. cpp_quote("#define STGX_MODE_READ 0x00000000L")
  1361. cpp_quote("#define STGX_MODE_WRITE 0x00000001L")
  1362. cpp_quote("#define STGX_MODE_READWRITE 0x00000002L")
  1363. cpp_quote("#define STGX_MODE_ACCESSMASK 0x0000000FL")
  1364. cpp_quote("#define STGX_MODE_SHARE_DENY_NONE 0x00000040L")
  1365. cpp_quote("#define STGX_MODE_SHARE_DENY_READ 0x00000030L")
  1366. cpp_quote("#define STGX_MODE_SHARE_DENY_WRITE 0x00000020L")
  1367. cpp_quote("#define STGX_MODE_SHARE_EXCLUSIVE 0x00000010L")
  1368. cpp_quote("#define STGX_MODE_SHAREMASK 0x000000F0L")
  1369. cpp_quote("#define STGX_MODE_OPEN 0x00000100L // default is to open an existing item and fail if its not there")
  1370. cpp_quote("#define STGX_MODE_CREATE 0x00000200L // Create a new item. If an old item has the same name delete it first.")
  1371. cpp_quote("#define STGX_MODE_FAILIFTHERE 0x00000400L // Use with CREATE. Create a new item but fail if an item with that name already exists.")
  1372. cpp_quote("#define STGX_MODE_OPENEXISTING 0x00000800L // Use with CREATE. If the item already exists open the item, otherwise create the item.")
  1373. cpp_quote("#define STGX_MODE_CREATIONMASK 0x00000F00L")
  1374. cpp_quote("#define STGX_MODE_FORCE 0x00001000")
  1375. typedef DWORD STGXMODE;
  1376. cpp_quote("#define STGX_DESTROY_FORCE 0x00001000")
  1377. typedef DWORD STGXDESTROY;
  1378. typedef [v1_enum] enum tagSTGXTYPE
  1379. {
  1380. STGX_TYPE_ANY = 0x00000000L,
  1381. STGX_TYPE_STORAGE = 0x00000001L,
  1382. STGX_TYPE_STREAM = 0x00000002L,
  1383. } STGXTYPE;
  1384. cpp_quote("#define STGX_E_INCORRECTTYPE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_STORAGE, 0x300) // Tried to open a storage/stream but a stream.storage with the same name already exists")
  1385. cpp_quote("#define STGX_E_NOADVISESINK MAKE_HRESULT(SEVERITY_ERROR, FACILITY_STORAGE, 0x301) // Needed to confirm something but no advise sink was set")
  1386. cpp_quote("#define STGX_E_CANNOTRECURSE MAKE_HRESULT(SEVERITY_ERROR, FACILITY_STORAGE, 0x302) // A move or copy of a storage failed to recurse. The storage itself was copied, but none of its contents were.")
  1387. [
  1388. object,
  1389. uuid(9FE3A135-2915-493b-A8EE-3AB21982776C),
  1390. helpstring("ITransferDest"),
  1391. pointer_default(unique)
  1392. ]
  1393. interface ITransferDest : IUnknown
  1394. {
  1395. HRESULT Advise(
  1396. [in] ITransferAdviseSink *pAdvise,
  1397. [out,retval] DWORD *pdwCookie);
  1398. HRESULT Unadvise([in] DWORD dwCookie);
  1399. // Create or open an element, either storage or stream
  1400. HRESULT OpenElement(
  1401. [in, string] const WCHAR *pwcsName,
  1402. [in] STGXMODE grfMode,
  1403. [in, out] DWORD *pdwType,
  1404. [in] REFIID riid,
  1405. [out, iid_is(riid)] void **ppunk);
  1406. HRESULT CreateElement(
  1407. [in, string] const WCHAR *pwcsName,
  1408. [in] IShellItem *psiTemplate,
  1409. [in] STGXMODE grfMode,
  1410. [in] DWORD dwType,
  1411. [in] REFIID riid,
  1412. [out, iid_is(riid)] void **ppunk);
  1413. // Move or copy an element, either storage or stream
  1414. HRESULT MoveElement(
  1415. [in] IShellItem *psiItem, // item to be moved (source)
  1416. [in, string] WCHAR *pwcsNewName, // Pointer to new name of element in destination
  1417. [in] STGXMOVE grfOptions); // Options (STGMOVEEX_ enum)
  1418. HRESULT DestroyElement(
  1419. [in, string] const WCHAR *pwcsName,
  1420. [in] STGXDESTROY grfOptions);
  1421. //HRESULT RenameElement( is this really necessary? We can OpenElements IShellItem and do whatever we want
  1422. // [in, string] const WCHAR *pwcsName,
  1423. // [in, string] const WCHAR *pwcsNewName);
  1424. };
  1425. [
  1426. object,
  1427. uuid(5AE334C5-06DD-4321-B44F-63B1D23F2E57),
  1428. helpstring("IStorageProcessor"),
  1429. pointer_default(unique)
  1430. ]
  1431. interface IStorageProcessor : IUnknown
  1432. {
  1433. HRESULT Advise(
  1434. [in] ITransferAdviseSink *pAdvise,
  1435. [out,retval] DWORD *dwCookie);
  1436. HRESULT Unadvise(
  1437. [in] DWORD dwCookie);
  1438. HRESULT Run([in] IEnumShellItems *penum,
  1439. [in] IShellItem *psiDest,
  1440. [in] STGOP dwOperation,
  1441. [in] DWORD dwOptions);
  1442. HRESULT SetProgress([in] IActionProgress *pap);
  1443. };
  1444. // Custom Confirmation Flags
  1445. //
  1446. // For use in the dwFlags member of a CUSTOMCONFIRMATION struct.
  1447. cpp_quote("#define CCF_SHOW_SOURCE_INFO 0x00000001 // if set, information about the source will be shown. Information will be gotten from IShellFolder if possible, or a STATSTG structure otherwise.")
  1448. cpp_quote("#define CCF_SHOW_DESTINATION_INFO 0x00000002 // If set, information about the destination will be shown. Information will be gotten from IShellFolder if possible, or a STATSTG structure otherwise.")
  1449. cpp_quote("#define CCF_USE_DEFAULT_ICON 0x00000004 // If set, hicon is ignored and a default is selected based on the current operation.")
  1450. // Custom Confirmation Buttons
  1451. //
  1452. // For use in the dwButtons member of a CUSTOMCONFIRMATION struct.
  1453. cpp_quote("#define CCB_YES_SKIP_CANCEL 1")
  1454. cpp_quote("#define CCB_RENAME_SKIP_CANCEL 2")
  1455. cpp_quote("#define CCB_YES_SKIP_RENAME_CANCEL 3")
  1456. cpp_quote("#define CCB_RETRY_SKIP_CANCEL 4")
  1457. cpp_quote("#define CCB_OK 5")
  1458. // Confirmation Response.
  1459. //
  1460. // These are the possible results that IStgTransConfirmation::Confirm can return.
  1461. typedef [v1_enum] enum tagCONFIRMATIONRESPONSE
  1462. {
  1463. CONFRES_CONTINUE = 0x00000000, // When warned of side effects, user said "Yes, do it anyway"
  1464. CONFRES_SKIP = 0x00000001, // Skip the current item, but continue with any other items if possible
  1465. CONFRES_RETRY = 0x00000002, // Retry the given operation because the user has made some extrenal change that should effect the outcome
  1466. CONFRES_RENAME = 0x00000003, // Try the operation again, but use a different name for the destination (i.e. rename on collision or truncate name on "path to long
  1467. CONFRES_CANCEL = 0x00000004, // Cancel this and all further operations
  1468. CONFRES_UNDO = 0x00000005, // Cancel the current operation and undo any operations already completed if possible. If undo is unavailable, treat like "cancel".
  1469. } CONFIRMATIONRESPONSE, *LPCONFIRMATIONRESPONSE;
  1470. // Describes the source, destination, and operation that needs to be confirmed
  1471. typedef struct tagCONFIRMOP
  1472. {
  1473. STGOP dwOperation; // the type of operation requiring a confirmation (i.e. STGOP_*value)
  1474. STGTRANSCONFIRMATION stc; // the condition that needs to be confirmed
  1475. CUSTOMCONFIRMATION *pcc; // OPTIONAL: If non-NULL, points to custom information to be displayed in the confirmation. Must be provided if a custom STGTRANSCONFIRMATION is provided.
  1476. UINT cRemaining; // the count of operations remaining after the operation being confirmed.
  1477. IShellItem *psiItem; // the sorce
  1478. IShellItem *psiDest; // the destination, or destination item in case target already exists
  1479. LPCWSTR pwszRenameTo; // used only during "rename" confirmations, contains the new target name
  1480. IUnknown *punkSite; // the parent site for the dialog we will create
  1481. } CONFIRMOP, *PCONFIRMOP;
  1482. [
  1483. object,
  1484. uuid(FC45985F-07F8-48E3-894C-7DEE8ED66EE5),
  1485. helpstring("ITransferConfirmation Interface"),
  1486. pointer_default(unique)
  1487. ]
  1488. interface ITransferConfirmation : IUnknown
  1489. {
  1490. // Warns of any side effects and confirms that the operation should proceed.
  1491. HRESULT Confirm([in] CONFIRMOP *pcop, [out] LPCONFIRMATIONRESPONSE pcr, [out] BOOL *pbAll);
  1492. };
  1493. [
  1494. uuid(c3d92d66-68ad-4b2a-86f5-4dfe97fbd2c7),
  1495. helpstring("private helpers for cd burning"),
  1496. ]
  1497. interface ICDBurnPriv : IUnknown
  1498. {
  1499. HRESULT GetMediaCapabilities([out] DWORD *pdwCaps, [out] BOOL *pfUDF);
  1500. HRESULT GetContentState([out] BOOL *pfStagingHasFiles, [out] BOOL *pfDiscHasFiles);
  1501. HRESULT IsWizardUp(); // S_OK means wizard is up, S_FALSE means its not.
  1502. };
  1503. [
  1504. uuid(98467961-4f27-4a1f-9629-22b06d0b5ccb),
  1505. helpstring("drive folder extension"),
  1506. ]
  1507. interface IDriveFolderExt : IUnknown
  1508. {
  1509. HRESULT DriveMatches([in] int iDrive);
  1510. HRESULT Bind([in] LPCITEMIDLIST pidl, [in] IBindCtx *pbc, [in] REFIID riid, [out, iid_is(riid)] void **ppv);
  1511. HRESULT GetSpace([out] ULONGLONG *pcbTotal, [out] ULONGLONG *pcbFree);
  1512. };
  1513. cpp_quote("#if _WIN32_IE >= 0x0600")
  1514. [
  1515. uuid(da22171f-70b4-43db-b38f-296741d1494c),
  1516. helpstring("used to modify the behavior of an IQueryInfo implementation"),
  1517. ]
  1518. interface ICustomizeInfoTip : IUnknown
  1519. {
  1520. HRESULT SetPrefixText([in, string] LPCWSTR pszPrefix);
  1521. HRESULT SetExtraProperties([in, size_is(cscid)] const SHCOLUMNID *pscid, [in] UINT cscid);
  1522. };
  1523. [
  1524. uuid(fadb55b4-d382-4fc4-81d7-abb325c7f12a),
  1525. helpstring("fades a rectangle on the screen"),
  1526. local,
  1527. ]
  1528. interface IFadeTask : IUnknown
  1529. {
  1530. HRESULT FadeRect([in] LPCRECT prc);
  1531. };
  1532. //
  1533. // If a shell folder exposes ISetFolderEnumRestriction, you can use
  1534. // SetEnumRestriction to specify bits that are always set or always cleared
  1535. // in the grfFlags parameter to IShellFolder::EnumObjects.
  1536. //
  1537. [
  1538. uuid(76347b91-9846-4ce7-9a57-69b910d16123),
  1539. local
  1540. ]
  1541. interface ISetFolderEnumRestriction : IUnknown
  1542. {
  1543. HRESULT SetEnumRestriction(DWORD dwRequired, DWORD dwForbidden);
  1544. };
  1545. cpp_quote("#endif // _WIN32_IE >= 0x0600")
  1546. [v1_enum] enum tagASSOCELEM
  1547. {
  1548. ASSOCELEM_DATA = 0x00000001, // InsertElements(ASSOCELEM_DATA)
  1549. ASSOCELEM_USER = 0x00000002, // APPLICATION or progid
  1550. ASSOCELEM_DEFAULT = 0x00000004, // ClsId or progid
  1551. ASSOCELEM_SYSTEM_EXT = 0x00000010, // HKCR\SFA\.ext
  1552. ASSOCELEM_SYSTEM_PERCEIVED = 0x00000020, // HKCR\SFA\PerceivedType
  1553. ASSOCELEM_SYSTEM = 0x00000030, // use SystemFileAssociations
  1554. ASSOCELEM_BASEIS_FOLDER = 0x00000100, // HKCR\Folder
  1555. ASSOCELEM_BASEIS_STAR = 0x00000200, // HKCR\*
  1556. ASSOCELEM_BASE = 0x00000300, // FOLDER | STAR
  1557. ASSOCELEM_EXTRA = 0x00010000, // InsertElements(ASSOCELEM_EXTRA)
  1558. ASSOCELEMF_INCLUDE_SLOW = 0x80000000, // include elements that maybe slow
  1559. ASSOCELEM_MASK_QUERYNORMAL = 0x0000FFFF,
  1560. ASSOCELEM_MASK_ENUMCONTEXTMENU = -1, // context menus usually try everything
  1561. ASSOCELEM_MASK_ALL = -1,
  1562. };
  1563. //
  1564. // IAlphaThumbnailExtractor
  1565. //
  1566. // private interface used by CFolderExtractImage
  1567. //
  1568. [
  1569. uuid(0F97F9D3-A7E2-4db7-A9B4-C540BD4B80A9),
  1570. local
  1571. ]
  1572. interface IAlphaThumbnailExtractor : IUnknown
  1573. {
  1574. HRESULT RequestAlphaThumbnail();
  1575. };
  1576. cpp_quote("#if (_WIN32_IE >= 0x0600)")
  1577. //
  1578. // IQueryPropertyFlags
  1579. //
  1580. // Private interface used by CPropStgColumns, implemented by the shmedia property storage
  1581. // Used to determine properties that are expensive to extract.
  1582. //
  1583. [
  1584. uuid(F0BE9A01-21E3-409c-908D-1A6D388DC8DE),
  1585. local
  1586. ]
  1587. interface IQueryPropertyFlags : IUnknown
  1588. {
  1589. HRESULT GetFlags(const PROPSPEC *pspec, SHCOLSTATEF *pcsFlags);
  1590. HRESULT SetEnumFlags(SHCOLSTATEF csFlags);
  1591. };
  1592. cpp_quote("#endif // _WIN32_IE >= 0x0600)")
  1593. //
  1594. // IPreviousVersionsInfo
  1595. //
  1596. // private interface used by the Timewarp client UI
  1597. //
  1598. [
  1599. object,
  1600. uuid(76e54780-ad74-48e3-a695-3ba9a0aff10d),
  1601. pointer_default(unique),
  1602. local
  1603. ]
  1604. interface IPreviousVersionsInfo : IUnknown
  1605. {
  1606. HRESULT AreSnapshotsAvailable(
  1607. [in, string] LPCWSTR pszPath,
  1608. [in] BOOL fOkToBeSlow,
  1609. [out, retval] BOOL *pfAvailable);
  1610. };
  1611. [
  1612. uuid(f4f1ef99-4d0e-43ca-90b6-2e30e4056975)
  1613. ]
  1614. library ShellPrivateObjects
  1615. {
  1616. // CLSID_HWEventSettings
  1617. [ uuid(5560c070-114e-4e97-929a-7e39f40debc7) ] coclass HWEventSettings { interface IAutoplayHandler; }
  1618. // CLSID_AutoplayHandlerProperties
  1619. [ uuid(11F6B41F-3BE5-4ce3-AF60-398551797DF6) ] coclass AutoplayHandlerProperties { interface IAutoplayHandlerProperties; }
  1620. // CLSID_HWDevice
  1621. [ uuid(aac41048-53e3-4867-a0aa-5fbceae7e5f5) ] coclass HWDevice { interface IHWDevice; }
  1622. // CLSID_HardwareDevices
  1623. [ uuid(dd522acc-f821-461a-a407-50b198b896dc) ] coclass HardwareDevices { interface IHardwareDevices; }
  1624. // CLSID_HWDeviceCustomProperties
  1625. [ uuid(555F3418-D99E-4e51-800A-6E89CFD8B1D7) ] coclass HWDeviceCustomProperties { interface IHWDeviceCustomProperties; }
  1626. // CLSID_IDefCategoryProvider
  1627. [ uuid(B2F2E083-84FE-4a7e-80C3-4B50D10D646E) ] coclass DefCategoryProvider { interface IDefCategoryProvider; }
  1628. // CLSID_VersionColProvider
  1629. [ uuid(66742402-F9B9-11D1-A202-0000F81FEDEE) ] coclass VersionColProvider { interface IPersist; }
  1630. // CLSID_ThemeUIPages
  1631. [ uuid(B12AE898-D056-4378-A844-6D393FE37956) ] coclass ThemeUIPages { interface IThemeUIPages; }
  1632. // CLSID_ScreenSaverPage
  1633. [ uuid(ADB9F5A4-E73E-49b8-99B6-2FA317EF9DBC) ] coclass ScreenSaverPage { interface IPropertyBag; }
  1634. // CLSID_ScreenResFixer
  1635. [ uuid(5a3d988e-820d-4aaf-ba87-440081768a17) ] coclass ScreenResFixer { interface IScreenResFixer; }
  1636. // CLSID_SettingsPage
  1637. [ uuid(4c892621-6757-4fe0-ad8c-a6301be7fba2) ] coclass SettingsPage { interface IBasePropPage; }
  1638. // CLSID_DisplaySettings
  1639. [ uuid(c79d1575-b8c6-4862-a284-788836518b97) ] coclass DisplaySettings { interface IDisplaySettings; }
  1640. // CLSID_VideoThumbnail
  1641. [ uuid(c5a40261-cd64-4ccf-84cb-c394da41d590) ] coclass VideoThumbnail { interface IPersist; }
  1642. // ThumbnailFCNHandler is already defined in uuidcom.lib -> uuid.lib
  1643. // [ uuid(cefc65d8-66d8-11d1-8d8c-0000f804b057)] coclass ThumbnailFCNHandler { interface IThumbnailExtractor; }
  1644. // CLSID_StartMenuPin
  1645. [ uuid(a2a9545d-a0c2-42b4-9708-a0b2badd77c8) ] coclass StartMenuPin { interface IStartMenuPin; }
  1646. // CLSID_ClientExtractIcon, with dummy interface to make midl happy
  1647. [ uuid(25585dc7-4da0-438d-ad04-e42c8d2d64b9) ] coclass ClientExtractIcon { interface IPersist; }
  1648. // CLSID_MediaDeviceFolder
  1649. [ uuid(640167b4-59b0-47a6-b335-a6b3c0695aea) ] coclass MediaDeviceFolder { interface IShellFolder; }
  1650. // CLSID_CDBurnFolder
  1651. [ uuid(00eebf57-477d-4084-9921-7ab3c2c9459d) ] coclass CDBurnFolder { interface IShellFolder; }
  1652. // CLSID_BurnAudioCDExtension
  1653. [ uuid(f83cbf45-1c37-4ca1-a78a-28bcb91642ec) ] coclass BurnAudioCDExtension { interface ICDBurnExt; }
  1654. // CLSID_Accessible
  1655. [ uuid(7e653215-fa25-46bd-a339-34a2790f3cb7) ] coclass Accessible { interface IInitAccessible; }
  1656. // CLSID_TrackPopupBar
  1657. [ uuid(acf35015-526e-4230-9596-becbe19f0ac9) ] coclass TrackPopupBar { interface IInitTrackPopupBar; }
  1658. // CLSID_SharedDocuments
  1659. [ uuid(59031a47-3f72-44a7-89c5-5595fe6b30ee) ] coclass SharedDocuments { interface IShellFolder; }
  1660. // CLSID_PostBootReminder
  1661. [ uuid(7849596a-48ea-486e-8937-a2a3009f31a9) ] coclass PostBootReminder { interface IShellReminderManager; }
  1662. // CLSID_AudioMediaProperties
  1663. [ uuid(875CB1A1-0F29-45de-A1AE-CFB4950D0B78) ] coclass AudioMediaProperties { interface IPersist; }
  1664. // CLSID_VideoMediaProperties
  1665. [ uuid(40C3D757-D6E4-4b49-BB41-0E5BBEA28817) ] coclass VideoMediaProperties { interface IPersist; }
  1666. // CLSID_AVWavProperties
  1667. [ uuid(E4B29F9D-D390-480b-92FD-7DDB47101D71) ] coclass AVWavProperties { interface IPersist; }
  1668. // CLSID_AVAviProperties
  1669. [ uuid(87D62D94-71B3-4b9a-9489-5FE6850DC73E) ] coclass AVAviProperties { interface IPersist; }
  1670. // CLSID_AVMidiProperties
  1671. [ uuid(A6FD9E45-6E44-43f9-8644-08598F5A74D9) ] coclass AVMidiProperties { interface IPersist; }
  1672. // CLSID_TrayNotify
  1673. [ uuid(25dead04-1eac-4911-9e3a-ad0a4ab560fd) ] coclass TrayNotify { interface ITrayNotify; }
  1674. // CLSID_CompositeFolder
  1675. [ uuid(FEF10DED-355E-4e06-9381-9B24D7F7CC88) ] coclass CompositeFolder { interface ICompositeFolder; }
  1676. // CLSID_DynamicStorage
  1677. [ uuid(F46316E4-FB1B-46eb-AEDF-9520BFBB916A) ] coclass DynamicStorage { interface IDynamicStorage; }
  1678. // CLSID_Magic
  1679. [ uuid(8A037D15-3357-4b1c-90EB-7B40B74FC4B2) ] coclass Magic { interface IMagic; }
  1680. // CLSID_HomeNetworkWizard
  1681. [ uuid(2728520d-1ec8-4c68-a551-316b684c4ea7) ] coclass HomeNetworkWizard { interface IHomeNetworkWizard; }
  1682. // CLSID_StartMenuFolder
  1683. [ uuid(48e7caab-b918-4e58-a94d-505519c795dc) ] coclass StartMenuFolder { interface IShellFolder; }
  1684. // CLSID_ProgramsFolder
  1685. [ uuid(7be9d83c-a729-4d97-b5a7-1b7313c39e0a) ] coclass ProgramsFolder { interface IShellFolder; }
  1686. // CLSID_MoreDocumentsFolder
  1687. [ uuid(9387ae38-d19b-4de5-baf5-1f7767a1cf04) ] coclass MoreDocumentsFolder { interface IShellFolder; }
  1688. // CLSID_LocalCopyHelper
  1689. [ uuid(021003e9-aac0-4975-979f-14b5d4e717f8) ] coclass LocalCopyHelper { interface ILocalCopy; }
  1690. // CLSID_ShellItem
  1691. [ uuid(9ac9fbe1-e0a2-4ad6-b4ee-e212013ea917) ] coclass ShellItem { interface IShellItem; }
  1692. // CLSID_WirelessDevices
  1693. [ uuid(30dd6b9c-47b7-4df5-94ae-f779aa7eb644) ] coclass WirelessDevices { interface IShellFolder; }
  1694. // CLSID_FolderCustomize
  1695. [ uuid(ef43ecfe-2ab9-4632-bf21-58909dd177f0) ] coclass FolderCustomize { interface IShellExtInit; }
  1696. // A service to handle interfaces normally implemented for an Ole Control Site, like IOleControlSite, or
  1697. // most importantly in our case, IDispatch, which handles ambient properties for the site.
  1698. cpp_quote("#define SID_OleControlSite IID_IOleControlSite")
  1699. // CLSID_WorkgroupNetCrawler
  1700. [ uuid(72b3882f-453a-4633-aac9-8c3dced62aff) ] coclass WorkgroupNetCrawler { interface INetCrawler; }
  1701. // CLSID_WebDocsNetCrawler
  1702. [ uuid(8a2ecb17-9007-4b9a-b271-7509095c405f) ] coclass WebDocsNetCrawler { interface INetCrawler; }
  1703. // CLSID_PublishedShareNetCrawler
  1704. [ uuid(24eee191-5491-4dc3-bd03-c0627df6a70c) ] coclass PublishedShareNetCrawler { interface INetCrawler; }
  1705. // CLSID_ImagePropertyHandler
  1706. [ uuid(eb9b1153-3b57-4e68-959a-a3266bc3d7fe) ] coclass ImagePropertyHandler { interface IPersist; }
  1707. // CLSID_WebViewRegTreeItem
  1708. [ uuid(01E2E7C0-2343-407f-B947-7E132E791D3E) ] coclass WebViewRegTreeItem { interface IRegTreeItem; }
  1709. // CLSID_ThemesRegTreeItem
  1710. [ uuid(AABE54D4-6E88-4c46-A6B3-1DF790DD6E0D) ] coclass ThemesRegTreeItem { interface IRegTreeItem; }
  1711. // CLSID_CShellTreeWalker
  1712. [ uuid(95CE8412-7027-11D1-B879-006008059382) ] coclass CShellTreeWalker { interface IShellTreeWalker; }
  1713. // CLSID_StorageProcessor
  1714. [ uuid(6CF8E98C-5DD4-42A2-A948-BFE4CA1DC3EB) ] coclass StorageProcessor { interface IStorageProcessor; };
  1715. // CLSID_TransferConfirmationUI
  1716. [ uuid(6B831E4F-A50D-45FC-842F-16CE27595359) ] coclass TransferConfirmationUI { interface ITransferConfirmation; };
  1717. // CLSID_ShellAutoplay
  1718. [ uuid(995C996E-D918-4a8c-A302-45719A6F4EA7) ] coclass ShellAutoplay { interface IHWEventHandler; };
  1719. // CLSID_PrintPhotosDropTarget
  1720. [ uuid(60fd46de-f830-4894-a628-6fa81bc0190d) ] coclass PrintPhotosDropTarget { interface IDropTarget; };
  1721. // CLSID_OrganizeFolder
  1722. [ uuid(10612e23-7679-4dd9-95b8-8e71c461feb2) ] coclass OrganizeFolder { interface IPersist; }
  1723. // CLSID_FadeTask
  1724. [ uuid(7eb5fbe4-2100-49e6-8593-17e130122f91) ] coclass FadeTask { interface IFadeTask; }
  1725. [ uuid(f26a669a-bcbb-4e37-abf9-7325da15f931) ] coclass AutoPlayVerb { interface IDropTarget; }
  1726. }