ReactOS 0.4.16-dev-1946-g52006dd
windows_storage.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS API Tests
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: COM interface test for windows.storage classes
5 * COPYRIGHT: Copyright 2025 Carl Bialorucki <carl.bialorucki@reactos.org>
6 */
7
8#include "com_apitest.h"
9
10#define NDEBUG
11#include <debug.h>
12
14{
15 {
16 ID_NAME(CLSID_Internet, NTDDI_WIN10, NTDDI_MAX),
17 {
18 { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences },
19 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 },
20 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder },
21 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 },
22 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder },
24 { NTDDI_WIN10, NTDDI_MAX, &IID_IBrowserFrameOptions },
26 }
27 },
28 {
29 ID_NAME(CLSID_MruLongList, NTDDI_WIN10, NTDDI_MAX),
30 {
32 }
33 },
34 {
35 ID_NAME(CLSID_MruPidlList, NTDDI_WIN10, NTDDI_MAX),
36 {
38 }
39 },
40 {
41 ID_NAME(CLSID_MyComputer, NTDDI_WIN10, NTDDI_MAX),
42 {
45 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 },
46 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder },
49 { NTDDI_WIN10, NTDDI_MAX, &IID_IItemNameLimits },
50 { NTDDI_WIN10, NTDDI_MAX, &IID_INewItemAdvisor },
51 { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenuCB },
52 { NTDDI_WIN10, NTDDI_MAX, &IID_IFolderFilter },
53 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIcon },
54 { NTDDI_WIN10, NTDDI_MAX, &IID_IStorage },
55 { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences },
56 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 },
57 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder },
58 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIconOverlay },
59 { NTDDI_WIN10, NTDDI_MAX, &IID_IDelegateHostItemContainer },
60 { NTDDI_WIN10, NTDDI_MAX, &IID_IBackReferencedObject },
61 }
62 },
63 {
64 ID_NAME(CLSID_QueryAssociations, NTDDI_WIN10, NTDDI_MAX),
65 {
67 { NTDDI_WIN10, NTDDI_MAX, &IID_IQueryAssociations },
68 }
69 },
70 {
71 ID_NAME(CLSID_SharedTaskScheduler, NTDDI_WIN10, NTDDI_MAX),
72 {
73 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellTaskScheduler },
75 { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal},
76 }
77 },
78#if 0 // This crashes when un-initializing it. See ROSTESTS-405.
79 {
80 ID_NAME(CLSID_ShellDesktop, NTDDI_WIN10, NTDDI_MAX),
81 {
82 { NTDDI_WIN10, NTDDI_MAX, &CLSID_ShellDesktop },
85 { NTDDI_WIN10, NTDDI_MAX, &IID_IStorage },
86 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 },
87 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder },
89 { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenuCB },
90 { NTDDI_WIN10, NTDDI_MAX, &IID_IItemNameLimits },
91 { NTDDI_WIN10, NTDDI_MAX, &IID_IOleCommandTarget },
92 { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences },
93 { NTDDI_WIN10, NTDDI_MAX, &IID_IFolderFilter },
94 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIcon },
95 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder },
96 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 },
97 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIconOverlay },
98 { NTDDI_WIN10, NTDDI_MAX, &IID_IDelegateHostItemContainer },
99 { NTDDI_WIN10, NTDDI_MAX, &IID_IBackReferencedObject },
100 }
101 },
102#endif
103 {
104 ID_NAME(CLSID_ShellFSFolder, NTDDI_WIN10, NTDDI_MAX),
105 {
108 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 },
109 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder },
110 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIcon },
111 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIconOverlay },
112 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder3 },
113 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 },
114 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder },
116 { NTDDI_WIN10, NTDDI_MAX, &IID_IStorage },
117 { NTDDI_WIN10, NTDDI_MAX, &IID_IItemNameLimits },
118 { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenuCB },
119 { NTDDI_WIN10, NTDDI_MAX, &IID_IOleCommandTarget },
121 { NTDDI_WIN10, NTDDI_MAX, &IID_IParentAndItem },
122 { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences },
123 { NTDDI_WIN10, NTDDI_MAX, &IID_IRemoteComputer },
124 { NTDDI_WIN10, NTDDI_MAX, &IID_IFolderType },
125 { NTDDI_WIN10, NTDDI_MAX, &IID_IBackReferencedObject },
126 }
127 },
128 {
129 ID_NAME(CLSID_ShellItem, NTDDI_WIN10, NTDDI_MAX),
130 {
131 { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal },
132 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellItem2 },
133 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellItem },
134 { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistIDList },
136 { NTDDI_WIN10, NTDDI_MAX, &IID_IParentAndItem },
139 { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences },
140 },
141 L"Both",
142 },
143 {
144 ID_NAME(CLSID_ShellLink, NTDDI_WIN10, NTDDI_MAX),
145 {
146 { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal },
147 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellLinkA },
148 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellLinkW },
152 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellExtInit },
153 { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenu3 },
154 { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenu2 },
155 { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenu },
156 { NTDDI_WIN10, NTDDI_MAX, &IID_IDropTarget },
157 { NTDDI_WIN10, NTDDI_MAX, &IID_IQueryInfo },
158 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellLinkDataList },
159 { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractIconA },
160 { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractIconW },
162 { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractImage2 },
163 { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractImage },
165 { NTDDI_WIN10, NTDDI_MAX, &IID_IServiceProvider },
167 { NTDDI_WIN10, NTDDI_MAX, &IID_IPropertyStore },
168 { NTDDI_WIN10, NTDDI_MAX, &IID_ICustomizeInfoTip },
169 { NTDDI_WIN10, NTDDI_MAX, &IID_ISLTracker },
170 },
171 L"Both",
172 },
173 {
174 ID_NAME(CLSID_ShellTaskScheduler, NTDDI_WIN10, NTDDI_MAX),
175 {
176 { NTDDI_WIN10, NTDDI_MAX, &IID_IShellTaskScheduler },
178 { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal},
179 },
180 },
181};
182
183START_TEST(windows_storage)
184{
185 TestClassesEx(L"windows.storage",
188 TRUE);
189}
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define NTDDI_MAX
Definition: apitest.h:21
#define START_TEST(x)
Definition: atltest.h:75
const GUID IID_IUnknown
VOID TestClassesEx(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount, _In_ ULONG MinimumNTDDIVersion, _In_ ULONG MaximumNTDDIVersion, _In_ BOOLEAN IsWinRT)
Definition: com_apitest.c:779
#define ID_NAME(c)
Definition: com_apitest.c:38
#define TRUE
Definition: types.h:120
#define L(x)
Definition: resources.c:13
const IID IID_IObjectWithSite
const GUID IID_IPersistFile
const GUID IID_IPersist
Definition: proxy.cpp:14
const GUID IID_IPersistStream
Definition: proxy.cpp:13
const GUID IID_IPersistPropertyBag
Definition: proxy.cpp:11
#define NTDDI_WIN10
Definition: sdkddkver.h:117
static const CLASS_AND_INTERFACES ExpectedInterfaces[]