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
39#define ID_NAME_EX(c, d) &c, #d, L ## #d
527#define ValidClassForVersion(pClass, version) \
528 ((pClass)->MinClassNTDDIVersion <= (version) && (pClass)->MaxClassNTDDIVersion >= (version))
529#define ValidInterfaceForVersion(interface, version) \
530 ((interface).MinInterfaceNTDDIVersion <= (version) && (interface).MaxInterfaceNTDDIVersion >= (version))
555 for (
i = 0;
class->ifaces[
i].iid;
i++)
566#define INTF_NOT_EXPOSED LONG_MAX
578 hr = IUnknown_QueryInterface(
pUnk, iid, &pObj);
585 IUnknown_Release(pUnk2);
593 _In_ INT ExpectedInterfaceCount,
602 for (iClass = 0; iClass < ExpectedInterfaceCount; iClass++)
609 CLSCTX_INPROC_SERVER,
612 ok(
hr ==
S_OK,
"CoCreateInstance failed. hr=0x%lx\n",
hr);
615 skip(
"Failed to instantiate %s.\n",
class->name);
622 for (iIntf = 0;
class->ifaces[iIntf].iid; iIntf++)
629 ok(0,
"%s is missing %s\n",
class->name, iface->
name);
630#ifdef LOG_COM_INTERFACE_OFFSETS
632 mytrace(
"%s0x%lx, %s, %s\n",
offset < 0 ?
"-" :
"", offset < 0 ? -offset : offset, class->
name, iface->
name);
649 IUnknown_Release(
pUnk);
658 _In_ INT ExpectedInterfaceCount,
670 for (iClass = 0; iClass < ExpectedInterfaceCount; iClass++)
679 PCWSTR expectedThreadingModel;
725 expectedThreadingModel =
class->ThreadingModel;
726 if (!expectedThreadingModel)
727 expectedThreadingModel =
L"Apartment";
728 ok(!
_wcsicmp(
data, expectedThreadingModel),
"Server is %ls, expected %ls for %s\n",
data, expectedThreadingModel,
class->name);
742 _In_ INT ExpectedInterfaceCount,
754 for (iClass = 0; iClass < ExpectedInterfaceCount; iClass++)
762 ok(
hr ==
S_OK,
"DllGetClassObject failed for %s, hr = 0x%lx\n",
class->name,
hr);
767 ok(
hr ==
S_OK,
"IClassFactory::CreateInstance failed for %s, hr = 0x%lx\n",
class->name,
hr);
771 IUnknown_Release(
pUnk);
773 IClassFactory_Release(pCF);
782 _In_ INT ExpectedInterfaceCount,
792 if (NTDDIVersion < MinimumNTDDIVersion || NTDDIVersion > MaximumNTDDIVersion)
794 skip(
"Skipping all tests for module %S, NTDDI version (0x%08lx) is outside of the supported range (0x%08lx-0x%08lx).\n",
795 ModuleName, NTDDIVersion, MinimumNTDDIVersion, MaximumNTDDIVersion);
800 ok(
hr ==
S_OK,
"CoInitializeEx failed. hr=0x%lx\n",
hr);
807 skip(
"%S is a WinRT module, skipping manual instantiation tests.\n",
ModuleName);
818 _In_ INT ExpectedInterfaceCount)
840 for (
i = 0;
i < InterfaceCount;
i++)
851 iface = &Interfaces[
i];
884 expectedName = iface->
wname;
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
static ULONG GetNTDDIVersion(VOID)
const GUID IID_IShellDesktopTray
const GUID IID_IClassFactory
#define RegCloseKey(hKey)
static const CLASS_AND_INTERFACES ExpectedInterfaces[]
static VOID TestModuleRegistry(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount, _In_ ULONG NTDDIVersion)
VOID TestClasses(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount)
static LONG GetInterfaceOffset(_In_ PUNKNOWN pUnk, _In_ const IID *iid)
BOOLEAN RegisteredOnWin8OrNewer(ULONG version)
VOID TestClassesEx(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount, _In_ ULONG MinimumNTDDIVersion, _In_ ULONG MaximumNTDDIVersion, _In_ BOOLEAN IsWinRT)
#define ValidClassForVersion(pClass, version)
BOOLEAN RegisteredOnVistaAndWin7(ULONG version)
BOOLEAN RegisteredOnVistaToWin8Dot1(ULONG version)
static VOID TestInterfaceRegistry(_In_ PCKNOWN_INTERFACE Interfaces, _In_ INT InterfaceCount)
BOOLEAN RegisteredOnWS03OrOlder(ULONG version)
#define ValidInterfaceForVersion(interface, version)
const KNOWN_INTERFACE * PCKNOWN_INTERFACE
BOOLEAN RegisteredAlways(ULONG version)
BOOLEAN RegisteredOnVistaOnly(ULONG version)
static const INT KnownInterfaceCount
static PCKNOWN_INTERFACE FindInterface(_In_ const IID *iid)
BOOLEAN RegisteredOnVistaOrNewer(ULONG version)
static VOID TestModuleInterfaces(_In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount, _In_ ULONG NTDDIVersion)
BOOLEAN RegisteredNever(ULONG version)
static KNOWN_INTERFACE KnownInterfaces[]
BOOLEAN RegisteredOnWS03AndVista(ULONG version)
BOOLEAN RegisteredOnWin7OrNewer(ULONG version)
struct _KNOWN_INTERFACE KNOWN_INTERFACE
static BOOLEAN IsInterfaceExpected(_In_ PCCLASS_AND_INTERFACES class, _In_ const IID *iid, _In_ ULONG NTDDIVersion)
static VOID TestManualInstantiation(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount, _In_ ULONG NTDDIVersion)
#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)
static const WCHAR version[]
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
void WINAPI PathRemoveExtensionW(WCHAR *path)
void WINAPI PathStripPathW(WCHAR *path)
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)
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
HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, LPVOID *ppvOut)
EXTERN_C const IID IID_INetCfgComponentPropertyUi
EXTERN_C const IID IID_INetCfgComponentControl
EXTERN_C const IID IID_INetCfgPnpReconfigCallback
EXTERN_C const IID IID_INetCfgComponentBindings
EXTERN_C const IID IID_IEnumNetCfgBindingInterface
EXTERN_C const IID IID_INetCfgLock
EXTERN_C const IID IID_INetCfgComponent
EXTERN_C const IID IID_INetCfgBindingPath
EXTERN_C const IID IID_IEnumNetCfgBindingPath
EXTERN_C const IID IID_IEnumNetCfgComponent
EXTERN_C const IID IID_INetCfg
EXTERN_C const IID IID_INetCfgBindingInterface
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)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
BOOLEAN(* IsRegistered)(ULONG version)
DWORD WINAPI GetLastError(void)
#define HKEY_LOCAL_MACHINE