13#include <commoncontrols.h>
20#define myskip(c, ...) ((c) ? 0 : (skip(__VA_ARGS__), 1))
21#define mytrace(...) do { \
22 int debug = winetest_debug; \
25 winetest_debug = debug; \
38#define ID_NAME(c) &c, #c, L ## #c
45 {
ID_NAME(IID_IAccPropServer) },
46 {
ID_NAME(IID_IAccPropServices) },
48 {
ID_NAME(IID_IAccessibleHandler) },
54 {
ID_NAME(IID_IActionProgress) },
55 {
ID_NAME(IID_IActionProgressDialog) },
64 {
ID_NAME(IID_IAutoCompleteDropDown) },
66 {
ID_NAME(IID_IBandNavigate), },
72 {
ID_NAME(IID_IBindEventHandler) },
77 {
ID_NAME(IID_IBindStatusCallback) },
80 {
ID_NAME(IID_IBrowserService) },
89 {
ID_NAME(IID_ICatInformation) },
91 {
ID_NAME(IID_IClassActivator), },
96 {
ID_NAME(IID_ICommDlgBrowser) },
97 {
ID_NAME(IID_ICommDlgBrowser2) },
98 {
ID_NAME(IID_ICommDlgBrowser3) },
99 {
ID_NAME(IID_ICompositeFolder) },
100 {
ID_NAME(IID_IComputerInfoChangeNotify), },
109 {
ID_NAME(IID_IContextMenuSite) },
111 {
ID_NAME(IID_IContinueCallback) },
115 {
ID_NAME(IID_ICustomizeInfoTip) },
120 {
ID_NAME(IID_IDefViewFrame3) },
121 {
ID_NAME(IID_IDefViewFrameGroup) },
122 {
ID_NAME(IID_IDefViewSafety), },
130 {
ID_NAME(IID_IDiscMasterProgressEvents) },
133 {
ID_NAME(IID_IDockingWindow) },
145 {
ID_NAME(IID_IEnumCATEGORYINFO) },
148 {
ID_NAME(IID_IEnumExtraSearch) },
156 {
ID_NAME(IID_IEnumShellItems) },
162 {
ID_NAME(IID_IExplorerBrowser) },
166 {
ID_NAME(IID_IExtractImage) },
167 {
ID_NAME(IID_IExtractImage2) },
170 {
ID_NAME(IID_IFileOpenDialog) },
171 {
ID_NAME(IID_IFileSaveDialog) },
172 {
ID_NAME(IID_IFileSearchBand) },
177 {
ID_NAME(IID_IFolderBandPriv) },
178 {
ID_NAME(IID_IFolderFilter) },
179 {
ID_NAME(IID_IFolderFilterSite) },
183 {
ID_NAME(IID_IFolderViewOC) },
184 {
ID_NAME(IID_IFolderViewSettings) },
186 {
ID_NAME(IID_IGetNameSpaceExtensionPointer),
TRUE},
188 {
ID_NAME(IID_IHWEventHandler) },
189 {
ID_NAME(IID_IHWEventHandler2) },
194 {
ID_NAME(IID_IInitializeWithBindCtx) },
195 {
ID_NAME(IID_IInitializeWithFile) },
197 {
ID_NAME(IID_IInputObjectSite) },
199 {
ID_NAME(IID_IInternetSecurityManager) },
201 {
ID_NAME(IID_IItemNameLimits) },
214 {
ID_NAME(IID_INamespaceWalk) },
215 {
ID_NAME(IID_INamespaceWalkCB) },
216 {
ID_NAME(IID_INamespaceWalkCB2) },
231 {
ID_NAME(IID_INewMenuClient) },
234 {
ID_NAME(IID_INewWindowManager) },
238 {
ID_NAME(IID_IObjectSafety) },
239 {
ID_NAME(IID_IObjectWithBackReferences) },
242 {
ID_NAME(IID_IOleCommandTarget) },
249 {
ID_NAME(IID_IOleInPlaceObjectWindowless),
TRUE },
251 {
ID_NAME(IID_IOleInPlaceSiteEx) },
258 {
ID_NAME(IID_IParentAndItem) },
262 {
ID_NAME(IID_IPersistFolder) },
263 {
ID_NAME(IID_IPersistFolder2) },
264 {
ID_NAME(IID_IPersistFolder3) },
266 {
ID_NAME(IID_IPersistHistory) },
267 {
ID_NAME(IID_IPersistIDList) },
270 {
ID_NAME(IID_IPersistPropertyBag2) },
274 {
ID_NAME(IID_IPreviewHandler) },
275 {
ID_NAME(IID_IPreviewHandlerFrame) },
276 {
ID_NAME(IID_IPreviewHandlerVisuals) },
279 {
ID_NAME(IID_IPropertyBag2) },
280 {
ID_NAME(IID_IPropertySetStorage) },
281 {
ID_NAME(IID_IPropertyStore) },
286 {
ID_NAME(IID_IQueryCancelAutoPlay) },
288 {
ID_NAME(IID_IQuickActivate) },
290 {
ID_NAME(IID_IRemoteComputer) },
291 {
ID_NAME(IID_IResolveShellLink) },
295 {
ID_NAME(IID_IRunningObjectTable), },
297 {
ID_NAME(IID_IScriptErrorList) },
299 {
ID_NAME(IID_ISearchAssistantOC) },
300 {
ID_NAME(IID_ISearchAssistantOC2) },
301 {
ID_NAME(IID_ISearchAssistantOC3) },
304 {
ID_NAME(IID_ISecMgrCacheSeedTarget) },
306 {
ID_NAME(IID_IServiceProvider) },
308 {
ID_NAME(IID_IShellBrowser) },
315 {
ID_NAME(IID_IShellDispatch) },
316 {
ID_NAME(IID_IShellDispatch2) },
317 {
ID_NAME(IID_IShellDispatch3) },
318 {
ID_NAME(IID_IShellDispatch4) },
324 {
ID_NAME(IID_IShellFavoritesNameSpace) },
326 {
ID_NAME(IID_IShellFolder2) },
329 {
ID_NAME(IID_IShellFolderSearchableCallback),
TRUE },
332 {
ID_NAME(IID_IShellFolderViewDual) },
333 {
ID_NAME(IID_IShellFolderViewDual2) },
338 {
ID_NAME(IID_IShellIconOverlayIdentifier),
TRUE },
344 {
ID_NAME(IID_IShellItemArray) },
345 {
ID_NAME(IID_IShellItemFilter) },
348 {
ID_NAME(IID_IShellLinkDual) },
349 {
ID_NAME(IID_IShellLinkDual2) },
355 {
ID_NAME(IID_IShellNameSpace) },
359 {
ID_NAME(IID_IShellUIHelper) },
364 {
ID_NAME(IID_IShellWindows) },
373 {
ID_NAME(IID_ITargetEmbedding) },
375 {
ID_NAME(IID_ITargetFrame2) },
376 {
ID_NAME(IID_ITargetFramePriv) },
377 {
ID_NAME(IID_ITargetFramePriv2) },
378 {
ID_NAME(IID_ITargetNotify) },
380 {
ID_NAME(IID_ITaskbarList2) },
386#define IID_ITransferAdviseSink IID_ITransferAdviseSinkPriv
388#undef IID_ITransferAdviseSink
391 {
ID_NAME(IID_ITranslateShellChangeNotify),
TRUE },
397 {
ID_NAME(IID_IUrlHistoryNotify) },
398 {
ID_NAME(IID_IUrlHistoryStg) },
399 {
ID_NAME(IID_IUrlHistoryStg2) },
403 {
ID_NAME(IID_IVisualProperties) },
406 {
ID_NAME(IID_IWebBrowserApp) },
407 {
ID_NAME(IID_IWebBrowserPriv) },
408 {
ID_NAME(IID_IWebBrowserPriv2) },
412 {
ID_NAME(DIID__SearchAssistantEvents) },
413 {
ID_NAME(DIID_DShellFolderViewEvents) },
414 {
ID_NAME(DIID_DShellNameSpaceEvents) },
415 {
ID_NAME(DIID_DShellWindowsEvents) },
416 {
ID_NAME(DIID_DWebBrowserEvents) },
417 {
ID_NAME(DIID_DWebBrowserEvents2) },
418 {
ID_NAME(DIID_XMLDOMDocumentEvents ) },
429 {
ID_NAME(IID_FolderItemVerb) },
430 {
ID_NAME(IID_FolderItemVerbs) },
434 {
ID_NAME(IID_IQueryContinue) },
435 {
ID_NAME(IID_IUserNotification) },
436 {
ID_NAME(IID_IUserNotificationCallback) },
437 {
ID_NAME(IID_IUserNotification2) },
439 {
ID_NAME(IID_IAggregateFilterCondition) },
441 {
ID_NAME(IID_IAssociationArrayInitialize),
TRUE },
450 {
ID_NAME(IID_IEnumerateAssociationElements),
TRUE },
452 {
ID_NAME(IID_IFilterCondition) },
462 {
ID_NAME(IID_IObjectWithAssociationElement),
TRUE },
474 {
ID_NAME(IID_IRootAndRelativeParsingFolder),
TRUE },
483 {
ID_NAME(IID_IUserEventTimer) },
484 {
ID_NAME(IID_IUserEventTimerCallback) },
487#define IID_IDriveFolderExt IID_IDriveFolderExtOld
489#undef IID_IDriveFolderExt
537 for (
i = 0;
class->ifaces[
i].iid;
i++)
543#define INTF_NOT_EXPOSED LONG_MAX
555 hr = IUnknown_QueryInterface(
pUnk, iid, &pObj);
562 IUnknown_Release(pUnk2);
583 CLSCTX_INPROC_SERVER,
586 ok(
hr ==
S_OK,
"CoCreateInstance failed. hr=0x%lx\n",
hr);
589 skip(
"Failed to instantiate %s.\n",
class->name);
596 for (iIntf = 0;
class->ifaces[iIntf].iid; iIntf++)
601 ok(0,
"%s is missing %s (offset %ld)\n",
class->name, iface->
name,
class->ifaces[iIntf].offset);
604#ifdef FAIL_WRONG_OFFSET
621#ifdef GENERATE_TABLE_ENTRIES
630 IUnknown_Release(
pUnk);
659 PCWSTR expectedThreadingModel;
703 expectedThreadingModel =
class->ThreadingModel;
704 if (!expectedThreadingModel)
705 expectedThreadingModel =
L"Apartment";
706 ok(!
wcsicmp(
data, expectedThreadingModel),
"Server is %ls, expected %ls for %s\n",
data, expectedThreadingModel,
class->name);
737 ok(
hr ==
S_OK,
"DllGetClassObject failed for %s, hr = 0x%lx\n",
class->name,
hr);
742 ok(
hr ==
S_OK,
"IClassFactory::CreateInstance failed for %s, hr = 0x%lx\n",
class->name,
hr);
746 IUnknown_Release(
pUnk);
748 IClassFactory_Release(pCF);
762 ok(
hr ==
S_OK,
"CoInitializeEx failed. hr=0x%lx\n",
hr);
787 for (
i = 0;
i < InterfaceCount;
i++)
798 iface = &Interfaces[
i];
831 expectedName = iface->
wname;
832 ok(!
wcsicmp(
data, expectedName),
"Name is %ls, expected %ls\n",
data, expectedName);
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char * ModuleName
const GUID IID_IShellDesktopTray
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
static const CLASS_AND_INTERFACES ExpectedInterfaces[]
static const INT ExpectedInterfaceCount
VOID TestClasses(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount)
static LONG GetInterfaceOffset(_In_ PUNKNOWN pUnk, _In_ const IID *iid)
static VOID TestInterfaceRegistry(_In_ PCKNOWN_INTERFACE Interfaces, _In_ INT InterfaceCount)
static BOOLEAN IsInterfaceExpected(_In_ PCCLASS_AND_INTERFACES class, _In_ const IID *iid)
const KNOWN_INTERFACE * PCKNOWN_INTERFACE
static const INT KnownInterfaceCount
static VOID TestModuleInterfaces(_In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount)
static VOID TestModuleRegistry(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount)
#define IID_IDriveFolderExt
static VOID TestManualInstantiation(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount)
static PCKNOWN_INTERFACE FindInterface(_In_ const IID *iid)
#define IID_ITransferAdviseSink
static KNOWN_INTERFACE KnownInterfaces[]
struct _KNOWN_INTERFACE KNOWN_INTERFACE
#define NT_SUCCESS(StatCode)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define GetProcAddress(x, y)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
void WINAPI PathStripPathW(LPWSTR lpszPath)
void WINAPI PathRemoveExtensionW(LPWSTR lpszPath)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
#define ERROR_FILE_NOT_FOUND
const IID IID_IObjectWithSite
EXTERN_C const IID IID_INetCfgComponentPropertyUi
EXTERN_C const IID IID_INetCfgComponentControl
EXTERN_C const IID IID_INetLanConnectionUiInfo
EXTERN_C const IID IID_INetCfgPnpReconfigCallback
EXTERN_C const IID IID_INetCfgComponentBindings
EXTERN_C const IID IID_INetCfgLock
EXTERN_C const IID IID_INetCfgComponent
EXTERN_C const IID IID_IEnumNetCfgComponent
EXTERN_C const IID IID_INetCfg
EXTERN_C const IID IID_INetConnectionConnectUi
EXTERN_C const IID IID_IEnumNetConnection
EXTERN_C const IID IID_INetConnectionPropertyUi2
EXTERN_C const IID IID_INetConnectionManager
EXTERN_C const IID IID_INetConnectionPropertyUi
#define KEY_ENUMERATE_SUB_KEYS
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
@ COINIT_APARTMENTTHREADED
const GUID IID_IOleInPlaceActiveObject
const GUID IID_IOleInPlaceSite
const GUID IID_IViewObject
const GUID IID_IOleContainer
const GUID IID_IEnumConnections
const GUID IID_IParseDisplayName
const GUID IID_IConnectionPointContainer
const GUID IID_IConnectionPoint
const GUID IID_IProvideClassInfo
const GUID IID_IOleInPlaceFrame
const GUID IID_IPropertyBag
const GUID IID_IOleWindow
const GUID IID_IViewObject2
const GUID IID_IEnumString
const GUID IID_IOleControlSite
const GUID IID_IRunnableObject
const GUID IID_IProvideClassInfo2
const GUID IID_IOleClientSite
const GUID IID_IDataObject
const GUID IID_IOleInPlaceObject
const GUID IID_IEnumConnectionPoints
const GUID IID_IPersistStorage
const GUID IID_IPersistMemory
const GUID IID_IOleObject
const GUID IID_IEnumSTATSTG
const GUID IID_IOleInPlaceUIWindow
const GUID IID_IOleControl
const GUID IID_IClassFactory2
const GUID IID_IEnumMoniker
const GUID IID_IPersistStreamInit
const GUID IID_IPersistFile
const GUID IID_IEnumUnknown
const GUID IID_IOleItemContainer
const GUID IID_IPersistStream
const GUID IID_ISpecifyPropertyPages
const GUID IID_IPersistPropertyBag
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
DWORD WINAPI GetLastError(void)
#define HKEY_LOCAL_MACHINE