24#define WIN32_LEAN_AND_MEAN
36#define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr)
38#define DEFINE_EXPECT(func) \
39 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
41#define SET_EXPECT(func) \
42 expect_ ## func = TRUE
44#define CHECK_EXPECT2(func) \
46 ok(expect_ ##func, "unexpected call " #func "\n"); \
47 called_ ## func = TRUE; \
50#define CHECK_EXPECT(func) \
52 CHECK_EXPECT2(func); \
53 expect_ ## func = FALSE; \
56#define CHECK_CALLED(func) \
58 ok(called_ ## func, "expected " #func "\n"); \
59 expect_ ## func = called_ ## func = FALSE; \
83 {0xbc, 0x13, 0x51, 0x6e, 0x92, 0x39, 0xac, 0xd0}
91 {0xbc, 0x13, 0x51, 0x6e, 0x92, 0x39, 0xac, 0xe0}
99 {0xbc, 0x13, 0x51, 0x6e, 0x92, 0x39, 0xac, 0xe1}
102#define TEST_OPTIONAL 0x1
157 trace(
"%s\n", method_name);
172 "Expected %s to be called instead of %s\n",
190#define CHECK_EXPECTED_METHOD(method_name) check_expected_method_fmt(method_name, NULL)
191#define CHECK_EXPECTED_METHOD_FMT(method_name, fmt) check_expected_method_fmt(method_name, fmt)
193#define CHECK_NO_EXTRA_METHODS() \
195 while (expected_method_list->flags & TEST_OPTIONAL) \
196 expected_method_list++; \
197 ok(!expected_method_list->method, "Method sequence starting from %s not called\n", expected_method_list->method); \
203 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
204 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
206 0xc8, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
215 med->tymed = TYMED_HGLOBAL;
220 med->pUnkForRelease =
NULL;
225 med->tymed = TYMED_GDI;
227 med->pUnkForRelease =
NULL;
235 med->tymed = TYMED_ENHMF;
237 med->pUnkForRelease =
NULL;
247 med->tymed = TYMED_MFPICT;
255 med->pUnkForRelease =
NULL;
268 med->tymed = TYMED_HGLOBAL;
270 med->pUnkForRelease =
NULL;
295 trace(
"OleObject_QueryInterface: returning E_NOINTERFACE\n");
334 LPCOLESTR szContainerApp,
335 LPCOLESTR szContainerObj
355 DWORD dwWhichMoniker,
367 DWORD dwWhichMoniker,
524 ok(aspect == DVASPECT_CONTENT,
"got aspect %d\n", aspect);
580 trace(
"OleObjectPersistStg_QueryInterface\n");
697 FORMATETC *pformatetc,
704 ok(pformatetc !=
NULL,
"pformatetc should not be NULL\n");
707 "cfFormat: %x\n", pformatetc->cfFormat);
709 "ptd: %p\n", pformatetc->ptd);
711 "dwAspect: %x\n", pformatetc->dwAspect);
713 "lindex: %x\n", pformatetc->lindex);
715 "tymed: %x\n", pformatetc->tymed);
718 ok(pformatetc ==
NULL,
"pformatetc should be NULL\n");
757 FORMATETC *pformatetc,
786 IClassFactory_AddRef(iface);
866 BOOL fLastUnlockCloses)
894static const CLSID CLSID_Equation3 = {0x0002CE02, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} };
919 void *paspect, DVTARGETDEVICE *
ptd,
HDC hdcTargetDev,
HDC hdcDraw,
930 ok(0,
"unexpected call GetColorSet\n");
935 void *aspect,
DWORD *freeze)
937 ok(0,
"unexpected call Freeze\n");
943 ok(0,
"unexpected call Unfreeze\n");
949 ok(0,
"unexpected call SetAdvise\n");
956 ok(0,
"unexpected call GetAdvise\n");
981 {
"OleObject_QueryInterface", 0 },
982 {
"OleObject_AddRef", 0 },
983 {
"OleObject_QueryInterface", 0 },
987 {
"OleObjectPersistStg_AddRef", 0 },
988 {
"OleObjectPersistStg_InitNew", 0 },
989 {
"OleObjectPersistStg_Release", 0 },
990 {
"OleObject_Release", 0 },
996 {
"OleObject_QueryInterface", 0 },
997 {
"OleObject_AddRef", 0 },
998 {
"OleObject_QueryInterface", 0 },
1002 {
"OleObjectPersistStg_AddRef", 0 },
1003 {
"OleObjectPersistStg_InitNew", 0 },
1004 {
"OleObjectPersistStg_Release", 0 },
1005 {
"OleObject_QueryInterface", 0 },
1006 {
"OleObjectRunnable_AddRef", 0 },
1007 {
"OleObjectRunnable_Run", 0 },
1008 {
"OleObjectRunnable_Release", 0 },
1009 {
"OleObject_QueryInterface", 0 },
1010 {
"OleObjectCache_AddRef", 0 },
1011 {
"OleObjectCache_Cache", 0 },
1012 {
"OleObjectCache_Release", 0 },
1013 {
"OleObject_Release", 0 },
1017 static const struct expected_method methods_olerender_draw_with_site[] =
1019 {
"OleObject_QueryInterface", 0 },
1020 {
"OleObject_AddRef", 0 },
1021 {
"OleObject_QueryInterface", 0 },
1022 {
"OleObject_AddRef", 0 },
1023 {
"OleObject_GetMiscStatus", 0 },
1024 {
"OleObject_QueryInterface", 0 },
1025 {
"OleObjectPersistStg_AddRef", 0 },
1026 {
"OleObjectPersistStg_InitNew", 0 },
1027 {
"OleObjectPersistStg_Release", 0 },
1028 {
"OleObject_SetClientSite", 0 },
1029 {
"OleObject_Release", 0 },
1030 {
"OleObject_QueryInterface", 0 },
1031 {
"OleObjectRunnable_AddRef", 0 },
1032 {
"OleObjectRunnable_Run", 0 },
1033 {
"OleObjectRunnable_Release", 0 },
1034 {
"OleObject_QueryInterface", 0 },
1035 {
"OleObjectCache_AddRef", 0 },
1036 {
"OleObjectCache_Cache", 0 },
1037 {
"OleObjectCache_Release", 0 },
1038 {
"OleObject_Release", 0 },
1043 {
"OleObject_QueryInterface", 0 },
1044 {
"OleObject_AddRef", 0 },
1045 {
"OleObject_QueryInterface", 0 },
1046 {
"OleObject_AddRef", 0 },
1047 {
"OleObject_GetMiscStatus", 0 },
1048 {
"OleObject_QueryInterface", 0 },
1049 {
"OleObjectPersistStg_AddRef", 0 },
1050 {
"OleObjectPersistStg_InitNew", 0 },
1051 {
"OleObjectPersistStg_Release", 0 },
1052 {
"OleObject_SetClientSite", 0 },
1053 {
"OleObject_Release", 0 },
1054 {
"OleObject_QueryInterface", 0 },
1055 {
"OleObjectRunnable_AddRef", 0 },
1056 {
"OleObjectRunnable_Run", 0 },
1057 {
"OleObjectRunnable_Release", 0 },
1058 {
"OleObject_QueryInterface", 0 },
1059 {
"OleObjectCache_AddRef", 0 },
1060 {
"OleObjectCache_Cache", 0 },
1061 {
"OleObjectCache_Release", 0 },
1062 {
"OleObject_Release", 0 },
1067 {
"OleObject_QueryInterface", 0 },
1068 {
"OleObject_AddRef", 0 },
1069 {
"OleObject_QueryInterface", 0 },
1073 {
"OleObjectPersistStg_AddRef", 0 },
1074 {
"OleObjectPersistStg_InitNew", 0 },
1075 {
"OleObjectPersistStg_Release", 0 },
1076 {
"OleObject_Release", 0 },
1080 static const struct expected_method methods_olerender_draw_no_runnable[] =
1082 {
"OleObject_QueryInterface", 0 },
1083 {
"OleObject_AddRef", 0 },
1084 {
"OleObject_QueryInterface", 0 },
1088 {
"OleObjectPersistStg_AddRef", 0 },
1089 {
"OleObjectPersistStg_InitNew", 0 },
1090 {
"OleObjectPersistStg_Release", 0 },
1091 {
"OleObject_QueryInterface", 0 },
1092 {
"OleObject_QueryInterface", 0 },
1093 {
"OleObjectCache_AddRef", 0 },
1094 {
"OleObjectCache_Cache", 0 },
1095 {
"OleObjectCache_Release", 0 },
1096 {
"OleObject_Release", 0 },
1100 static const struct expected_method methods_olerender_draw_no_cache[] =
1102 {
"OleObject_QueryInterface", 0 },
1103 {
"OleObject_AddRef", 0 },
1104 {
"OleObject_QueryInterface", 0 },
1108 {
"OleObjectPersistStg_AddRef", 0 },
1109 {
"OleObjectPersistStg_InitNew", 0 },
1110 {
"OleObjectPersistStg_Release", 0 },
1111 {
"OleObject_QueryInterface", 0 },
1112 {
"OleObjectRunnable_AddRef", 0 },
1113 {
"OleObjectRunnable_Run", 0 },
1114 {
"OleObjectRunnable_Release", 0 },
1115 {
"OleObject_QueryInterface", 0 },
1116 {
"OleObject_Release", 0 },
1122 formatetc.cfFormat = 0;
1123 formatetc.ptd =
NULL;
1124 formatetc.dwAspect = DVASPECT_CONTENT;
1125 formatetc.lindex = -1;
1126 formatetc.tymed = TYMED_NULL;
1130 trace(
"OleCreate with OLERENDER_NONE:\n");
1137 trace(
"OleCreate with OLERENDER_DRAW:\n");
1144 trace(
"OleCreate with OLERENDER_DRAW, with site:\n");
1153 trace(
"OleCreate with OLERENDER_DRAW, with site:\n");
1161 formatetc.ptd =
NULL;
1162 formatetc.dwAspect = DVASPECT_CONTENT;
1163 formatetc.lindex = -1;
1164 formatetc.tymed = TYMED_HGLOBAL;
1166 trace(
"OleCreate with OLERENDER_FORMAT:\n");
1170 "OleCreate failed with error 0x%08x\n",
hr);
1178 trace(
"OleCreate with OLERENDER_ASIS:\n");
1184 formatetc.cfFormat = 0;
1185 formatetc.tymed = TYMED_NULL;
1188 trace(
"OleCreate with OLERENDER_DRAW (no IRunnableObject):\n");
1197 trace(
"OleCreate with OLERENDER_DRAW (no IOleCache):\n");
1214 {
"OleObject_QueryInterface", 0 },
1215 {
"OleObject_AddRef", 0 },
1216 {
"OleObject_QueryInterface", 0 },
1217 {
"OleObject_AddRef", 0 },
1218 {
"OleObject_GetMiscStatus", 0 },
1219 {
"OleObject_QueryInterface", 0 },
1220 {
"OleObjectPersistStg_AddRef", 0 },
1221 {
"OleObjectPersistStg_Load", 0 },
1222 {
"OleObjectPersistStg_Release", 0 },
1223 {
"OleObject_SetClientSite", 0 },
1224 {
"OleObject_Release", 0 },
1225 {
"OleObject_QueryInterface", 0 },
1226 {
"OleObject_GetMiscStatus", 0 },
1227 {
"OleObject_Release", 0 },
1234 trace(
"OleLoad:\n");
1238 "OleLoad failed with error 0x%08x\n",
hr);
1253 trace(
"OleLoad:\n");
1257 "OleLoad failed with error 0x%08x\n",
hr);
1271 static const WCHAR olrepres[] = { 2,
'O',
'l',
'e',
'P',
'r',
'e',
's',
'0',
'0',
'0',0 };
1282 for (
i = 0;
i < 7;
i++)
1285 ok(
hr ==
S_OK,
"StgCreateDocfile error %#x\n",
hr);
1291 ok(
hr ==
S_OK,
"CreateStream error %#x\n",
hr);
1319 data_size =
sizeof(
buf);
1325 header.dvAspect = DVASPECT_CONTENT;
1329 header.dwObjectExtentX = 1;
1330 header.dwObjectExtentY = 1;
1331 header.dwSize = data_size;
1344 IStorage_Release(stg);
1361 IUnknown_Release(
obj);
1362 IStorage_Release(stg);
1384 IAdviseSink_AddRef(iface);
1404 FORMATETC *pFormatetc,
1482 return a->cfFormat ==
b->cfFormat &&
a->dwAspect ==
b->dwAspect &&
1483 a->lindex ==
b->lindex &&
a->tymed ==
b->tymed;
1498 switch (
fmt->cfFormat)
1513 trace(
"unhandled fmt %d\n",
fmt->cfFormat );
1523 LPFORMATETC pformatetc,
1544 LPFORMATETC pformatectIn,
1545 LPFORMATETC pformatetcOut)
1553 LPFORMATETC pformatetc,
1572 FORMATETC* pformatetc,
1575 DWORD* pdwConnection)
1577 STGMEDIUM stgmedium;
1582 if(advf & ADVF_PRIMEFIRST)
1584 ok(pformatetc->cfFormat ==
cf_test_2,
"got %04x\n", pformatetc->cfFormat);
1585 stgmedium.tymed = TYMED_HGLOBAL;
1587 stgmedium.pUnkForRelease =
NULL;
1588 IAdviseSink_OnDataChange(pAdvSink, pformatetc, &stgmedium);
1665 hr = IOleCache2_EnumCache(
cache, &enum_stat );
1668 while (IEnumSTATDATA_Next(enum_stat, 1, &
stat,
NULL) ==
S_OK)
1670 ok(
stat.formatetc.cfFormat ==
expect->formatetc.cfFormat,
"got %d expect %d\n",
1671 stat.formatetc.cfFormat,
expect->formatetc.cfFormat );
1672 ok( !
stat.formatetc.ptd == !
expect->formatetc.ptd,
"got %p expect %p\n",
1674 ok(
stat.formatetc.dwAspect ==
expect->formatetc.dwAspect,
"got %d expect %d\n",
1675 stat.formatetc.dwAspect,
expect->formatetc.dwAspect );
1676 ok(
stat.formatetc.lindex ==
expect->formatetc.lindex,
"got %d expect %d\n",
1677 stat.formatetc.lindex,
expect->formatetc.lindex );
1678 ok(
stat.formatetc.tymed ==
expect->formatetc.tymed,
"got %d expect %d\n",
1679 stat.formatetc.tymed,
expect->formatetc.tymed );
1681 ok(
stat.pAdvSink == 0,
"got %p\n",
stat.pAdvSink );
1682 ok(
stat.dwConnection ==
expect->dwConnection,
"got %d expect %d\n",
stat.dwConnection,
expect->dwConnection );
1687 ok(
num == 0,
"incorrect number. num %d\n",
num );
1689 IEnumSTATDATA_Release( enum_stat );
1704 STGMEDIUM stgmedium;
1712 static const WCHAR wszShell32[] = {
'\\',
's',
'h',
'e',
'l',
'l',
'3',
'2',
'.',
'd',
'l',
'l',0};
1716 {
"AdviseSink_OnViewChange", 0 },
1717 {
"AdviseSink_OnViewChange", 0 },
1718 {
"draw_continue", 1 },
1719 {
"draw_continue_false", 1 },
1720 {
"DataObject_DAdvise", 0 },
1721 {
"DataObject_DAdvise", 0 },
1722 {
"DataObject_DUnadvise", 0 },
1723 {
"DataObject_DUnadvise", 0 },
1728 {
"AdviseSink_OnViewChange", 0 },
1729 {
"draw_continue", 1 },
1730 {
"draw_continue", 1 },
1731 {
"draw_continue", 1 },
1732 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_THUMBNAIL, -1, TYMED_HGLOBAL} },
1733 {
"DataObject_GetData", 0, {
CF_BITMAP,
NULL, DVASPECT_THUMBNAIL, -1, TYMED_GDI} },
1739 {
"DataObject_DAdvise", 0 },
1740 {
"DataObject_DAdvise", 0 },
1741 {
"DataObject_DAdvise", 0 },
1742 {
"DataObject_DAdvise", 0 },
1743 {
"DataObject_DUnadvise", 0 },
1744 {
"DataObject_DUnadvise", 0 },
1745 {
"DataObject_DUnadvise", 0 },
1746 {
"DataObject_DUnadvise", 0 },
1755 fmtetc.dwAspect = DVASPECT_ICON;
1758 fmtetc.tymed = TYMED_MFPICT;
1776 ok(unk != (
IUnknown*)olecache,
"got %p, expected %p\n", olecache, unk);
1777 ok(unk != (
IUnknown*)pOleCache,
"got %p, expected %p\n", pOleCache, unk);
1778 IOleCache2_Release(pOleCache);
1779 IOleCache_Release(olecache);
1780 IUnknown_Release(unk);
1790 ok(unk == (
IUnknown*)olecache,
"got %p, expected %p\n", olecache, unk);
1791 ok(unk == (
IUnknown*)pOleCache,
"got %p, expected %p\n", pOleCache, unk);
1792 ok(unk == unk2,
"got %p, expected %p\n", unk2, unk);
1793 IUnknown_Release(unk2);
1794 IOleCache2_Release(pOleCache);
1795 IOleCache_Release(olecache);
1796 IUnknown_Release(unk);
1810 hr = IViewObject_SetAdvise(pViewObject, DVASPECT_ICON, ADVF_PRIMEFIRST, &
AdviseSink);
1813 hr = IPersistStorage_InitNew(pPS, pStorage);
1816 hr = IPersistStorage_IsDirty(pPS);
1819 hr = IPersistStorage_GetClassID(pPS, &
clsid);
1823 hr = IOleCache2_Uncache(pOleCache, 0xdeadbeef);
1824 ok(
hr ==
OLE_E_NOCONNECTION,
"IOleCache_Uncache with invalid value should return OLE_E_NOCONNECTION instead of 0x%x\n",
hr);
1829 hr = IOleCache2_Cache(pOleCache,
NULL, 0, &dwConnection);
1830 ok(
hr ==
E_INVALIDARG,
"IOleCache_Cache with NULL fmtetc should have returned E_INVALIDARG instead of 0x%08x\n",
hr);
1832 hr = IOleCache2_Cache(pOleCache,
NULL, 0,
NULL);
1833 ok(
hr ==
E_INVALIDARG,
"IOleCache_Cache with NULL pdwConnection should have returned E_INVALIDARG instead of 0x%08x\n",
hr);
1837 skip(
"tests with NULL parameters will crash on NT4 and below\n");
1840 for (fmtetc.cfFormat =
CF_TEXT; fmtetc.cfFormat <
CF_MAX; fmtetc.cfFormat++)
1843 fmtetc.dwAspect = DVASPECT_THUMBNAIL;
1844 for (
i = 0;
i < 7;
i++)
1846 fmtetc.tymed = 1 <<
i;
1847 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
1848 if ((fmtetc.cfFormat ==
CF_METAFILEPICT && fmtetc.tymed == TYMED_MFPICT) ||
1849 (fmtetc.cfFormat ==
CF_BITMAP && fmtetc.tymed == TYMED_GDI) ||
1850 (fmtetc.cfFormat ==
CF_DIB && fmtetc.tymed == TYMED_HGLOBAL) ||
1851 (fmtetc.cfFormat ==
CF_ENHMETAFILE && fmtetc.tymed == TYMED_ENHMF))
1852 ok(
hr ==
S_OK,
"IOleCache_Cache cfFormat = %d, tymed = %d should have returned S_OK instead of 0x%08x\n",
1853 fmtetc.cfFormat, fmtetc.tymed,
hr);
1854 else if (fmtetc.tymed == TYMED_HGLOBAL)
1857 "IOleCache_Cache cfFormat = %d, tymed = %d should have returned CACHE_S_FORMATETC_NOTSUPPORTED instead of 0x%08x\n",
1858 fmtetc.cfFormat, fmtetc.tymed,
hr);
1860 ok(
hr ==
DV_E_TYMED,
"IOleCache_Cache cfFormat = %d, tymed = %d should have returned DV_E_TYMED instead of 0x%08x\n",
1861 fmtetc.cfFormat, fmtetc.tymed,
hr);
1864 hr = IOleCache2_Uncache(pOleCache, dwConnection);
1871 fmtetc.dwAspect = DVASPECT_THUMBNAIL;
1872 fmtetc.tymed = TYMED_GDI;
1873 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
1876 fmtetc.cfFormat = 0;
1877 fmtetc.dwAspect = DVASPECT_ICON;
1878 fmtetc.tymed = TYMED_MFPICT;
1879 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
1883 memcpy(wszPath+
lstrlenW(wszPath), wszShell32,
sizeof(wszShell32));
1886 stgmedium.tymed = TYMED_MFPICT;
1889 stgmedium.pUnkForRelease =
NULL;
1891 fmtetc.dwAspect = DVASPECT_CONTENT;
1892 hr = IOleCache2_SetData(pOleCache, &fmtetc, &stgmedium,
FALSE);
1893 ok(
hr ==
OLE_E_BLANK,
"IOleCache_SetData for aspect not in cache should have return OLE_E_BLANK instead of 0x%08x\n",
hr);
1895 fmtetc.dwAspect = DVASPECT_ICON;
1896 hr = IOleCache2_SetData(pOleCache, &fmtetc, &stgmedium,
FALSE);
1900 hr = IViewObject_Freeze(pViewObject, DVASPECT_ICON, -1,
NULL, &dwFreeze);
1903 hr = IViewObject_Freeze(pViewObject, DVASPECT_CONTENT, -1,
NULL, &dwFreeze);
1904 ok(
hr ==
OLE_E_BLANK,
"IViewObject_Freeze with uncached aspect should have returned OLE_E_BLANK instead of 0x%08x\n",
hr);
1909 rcBounds.
right = 100;
1913 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
1916 hr = IViewObject_Draw(pViewObject, DVASPECT_CONTENT, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
1917 ok(
hr ==
OLE_E_BLANK,
"IViewObject_Draw with uncached aspect should have returned OLE_E_BLANK instead of 0x%08x\n",
hr);
1920 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
NULL, 0xdeadbeef);
1924 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue_false, 0xdeadbeef);
1927 "IViewObject_Draw with draw_continue_false returns 0x%08x\n",
hr);
1931 hr = IOleCacheControl_OnRun(pOleCacheControl, &
DataObject);
1934 hr = IPersistStorage_Save(pPS, pStorage,
TRUE);
1937 hr = IPersistStorage_SaveCompleted(pPS,
NULL);
1940 hr = IPersistStorage_IsDirty(pPS);
1941 ok(
hr ==
S_FALSE,
"IPersistStorage_IsDirty should have returned S_FALSE instead of 0x%x\n",
hr);
1943 IPersistStorage_Release(pPS);
1944 IViewObject_Release(pViewObject);
1945 IOleCache2_Release(pOleCache);
1946 IOleCacheControl_Release(pOleCacheControl);
1951 trace(
"Testing loaded data with CreateDataCache:\n");
1962 hr = IViewObject_SetAdvise(pViewObject, DVASPECT_ICON, ADVF_PRIMEFIRST, &
AdviseSink);
1965 hr = IPersistStorage_Load(pPS, pStorage);
1968 hr = IPersistStorage_IsDirty(pPS);
1969 ok(
hr ==
S_FALSE,
"IPersistStorage_IsDirty should have returned S_FALSE instead of 0x%x\n",
hr);
1971 fmtetc.cfFormat = 0;
1972 fmtetc.dwAspect = DVASPECT_ICON;
1975 fmtetc.tymed = TYMED_MFPICT;
1976 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
1977 ok(
hr ==
CACHE_S_SAMECACHE,
"IOleCache_Cache with already loaded data format type should return CACHE_S_SAMECACHE instead of 0x%x\n",
hr);
1981 rcBounds.
right = 100;
1985 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
1988 hr = IViewObject_Draw(pViewObject, DVASPECT_CONTENT, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
1989 ok(
hr ==
OLE_E_BLANK,
"IViewObject_Draw with uncached aspect should have returned OLE_E_BLANK instead of 0x%08x\n",
hr);
1992 hr = IOleCache2_DiscardCache(pOleCache, DISCARDCACHE_NOSAVE);
1994 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
1998 hr = IPersistStorage_HandsOffStorage(pPS);
2000 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
2002 hr = IOleCache2_DiscardCache(pOleCache, DISCARDCACHE_NOSAVE);
2004 hr = IViewObject_Draw(pViewObject, DVASPECT_ICON, -1,
NULL,
NULL,
NULL,
hdcMem, &rcBounds,
NULL,
draw_continue, 0xdeadbeef);
2005 ok(
hr ==
OLE_E_BLANK,
"IViewObject_Draw with uncached aspect should have returned OLE_E_BLANK instead of 0x%08x\n",
hr);
2012 IPersistStorage_Release(pPS);
2013 IViewObject_Release(pViewObject);
2014 IOleCache2_Release(pOleCache);
2029 fmtetc.dwAspect = DVASPECT_CONTENT;
2030 fmtetc.tymed = TYMED_MFPICT;
2032 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
2035 hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium);
2039 fmtetc.dwAspect = DVASPECT_CONTENT;
2040 fmtetc.tymed = TYMED_HGLOBAL;
2042 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
2045 hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium);
2049 hr = IOleCache2_Cache(pOleCache, &fmtetc, ADVF_PRIMEFIRST, &dwConnection);
2052 hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium);
2055 hr = IOleCacheControl_OnRun(pOleCacheControl, &
DataObject);
2059 hr = IOleCache2_Cache(pOleCache, &fmtetc, 0, &dwConnection);
2063 hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium);
2067 hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium);
2072 hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium);
2075 IOleCacheControl_Release(pOleCacheControl);
2076 IDataObject_Release(pCacheDataObject);
2077 IOleCache2_Release(pOleCache);
2081 IStorage_Release(pStorage);
2089 0x42, 0x4d, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
2090 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
2091 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
2092 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00,
2093 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00,
2094 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00,
2095 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
2096 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
2119 IStream_Release( stm );
2132 FORMATETC
fmt = {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
2138 STATDATA enum_expect[] =
2140 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 1 },
2141 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 1 },
2157 hr = IPersistStorage_Load( persist, stg );
2159 IStorage_Release( stg );
2161 hr = IPersistStorage_GetClassID( persist, &cls );
2165 hr = IDataObject_GetData(
data, &
fmt, &med );
2167 ok( med.tymed == TYMED_HGLOBAL,
"got %x\n", med.tymed );
2180 ok( !
memcmp(
ptr, &expect_info,
sizeof(expect_info) ),
"mismatch\n" );
2188 hr = IViewObject2_GetExtent(
view, DVASPECT_CONTENT, -1,
NULL, &sz );
2192 ok( sz.
cx == 1000,
"got %d\n", sz.
cx );
2193 ok( sz.
cy == 250,
"got %d\n", sz.
cy );
2200 ok( sz.
cx ==
x,
"got %d %d\n", sz.
cx,
x );
2201 ok( sz.
cy ==
y,
"got %d %d\n", sz.
cy,
y );
2206 IOleCache2_Release(
cache );
2207 IViewObject2_Release(
view );
2208 IDataObject_Release(
data );
2209 IPersistStorage_Release( persist );
2210 IUnknown_Release( unk );
2218 ok( bm.bmWidth ==
cx,
"got %d expect %d\n", bm.bmWidth,
cx );
2219 ok( bm.bmHeight ==
cy,
"got %d expect %d\n", bm.bmHeight,
cy );
2227 ok(
info->bmiHeader.biWidth ==
cx,
"got %d expect %d\n",
info->bmiHeader.biWidth,
cx );
2228 ok(
info->bmiHeader.biHeight ==
cy,
"got %d expect %d\n",
info->bmiHeader.biHeight,
cy );
2242 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 0 },
2243 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 0 },
2247 STATDATA view_caching[] =
2249 {{ 0, 0, DVASPECT_CONTENT, -1, TYMED_ENHMF }, 0,
NULL, 0 },
2250 {{ 0, 0, DVASPECT_THUMBNAIL, -1, TYMED_HGLOBAL }, 0,
NULL, 0 },
2251 {{ 0, 0, DVASPECT_DOCPRINT, -1, TYMED_HGLOBAL }, 0,
NULL, 0 },
2261 fmt.dwAspect = DVASPECT_CONTENT;
2263 fmt.tymed = TYMED_HGLOBAL;
2265 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2267 ok( conn == 2,
"got %d\n", conn );
2268 expect[0].dwConnection = conn;
2269 expect[1].dwConnection = conn;
2275 fmt.tymed = TYMED_GDI;
2277 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2282 fmt.tymed = TYMED_MFPICT;
2284 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2286 ok( conn == 3,
"got %d\n", conn );
2287 expect[2].dwConnection = conn;
2293 fmt.tymed = TYMED_ENHMF;
2295 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2297 ok( conn == 4,
"got %d\n", conn );
2298 expect[3].dwConnection = conn;
2316 fmt.tymed = TYMED_GDI;
2318 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2321 expect[0].dwConnection = conn;
2322 expect[1].dwConnection = conn;
2335 hr = IDataObject_GetData(
data, &
fmt, &med );
2337 ok( med.tymed == TYMED_GDI,
"got %d\n", med.tymed );
2342 fmt.tymed = TYMED_HGLOBAL;
2343 hr = IDataObject_GetData(
data, &
fmt, &med );
2345 ok( med.tymed == TYMED_HGLOBAL,
"got %d\n", med.tymed );
2351 fmt.tymed = TYMED_HGLOBAL;
2358 fmt.tymed = TYMED_GDI;
2359 hr = IDataObject_GetData(
data, &
fmt, &med );
2361 ok( med.tymed == TYMED_GDI,
"got %d\n", med.tymed );
2366 fmt.tymed = TYMED_HGLOBAL;
2367 hr = IDataObject_GetData(
data, &
fmt, &med );
2369 ok( med.tymed == TYMED_HGLOBAL,
"got %d\n", med.tymed );
2374 hr = IOleCache2_Uncache(
cache, conn );
2379 fmt.tymed = TYMED_ENHMF;
2380 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2382 view_caching[0].dwConnection = conn;
2384 fmt.tymed = TYMED_HGLOBAL;
2385 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2388 fmt.dwAspect = DVASPECT_THUMBNAIL;
2389 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2391 view_caching[1].dwConnection = conn;
2393 fmt.dwAspect = DVASPECT_DOCPRINT;
2394 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2396 view_caching[2].dwConnection = conn;
2399 fmt.dwAspect = DVASPECT_ICON;
2400 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2402 view_caching[3].dwConnection = conn;
2407 hr = IOleCache2_Uncache(
cache, view_caching[3].dwConnection );
2409 hr = IOleCache2_Uncache(
cache, view_caching[2].dwConnection );
2411 hr = IOleCache2_Uncache(
cache, view_caching[1].dwConnection );
2413 hr = IOleCache2_Uncache(
cache, view_caching[0].dwConnection );
2417 fmt.dwAspect = DVASPECT_ICON;
2419 fmt.tymed = TYMED_HGLOBAL;
2420 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2423 fmt.tymed = TYMED_GDI;
2424 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2427 fmt.tymed = TYMED_ENHMF;
2428 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2431 fmt.tymed = TYMED_MFPICT;
2432 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2436 hr = IOleCache2_Uncache(
cache, conn );
2441 fmt.dwAspect = DVASPECT_CONTENT;
2443 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2446 IDataObject_Release(
data );
2447 IOleCache2_Release(
cache );
2453 fmt.dwAspect = DVASPECT_CONTENT;
2454 fmt.tymed = TYMED_HGLOBAL;
2455 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2459 fmt.dwAspect = DVASPECT_THUMBNAIL;
2460 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2463 fmt.dwAspect = DVASPECT_DOCPRINT;
2464 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2469 fmt.dwAspect = DVASPECT_CONTENT;
2470 fmt.tymed = TYMED_MFPICT;
2471 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2476 fmt.dwAspect = DVASPECT_ICON;
2477 fmt.tymed = TYMED_MFPICT;
2478 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn );
2481 IOleCache2_Release(
cache );
2492 static const STATDATA enum_expect[] =
2494 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 1 },
2495 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 1 },
2502 int enum_start, enum_num;
2520 hr = IPersistStorage_GetClassID( persist, &
clsid );
2525 IPersistStorage_Release( persist );
2526 IOleCache2_Release(
cache );
2535 IStorage *stg_dib, *stg_mf, *stg_wine;
2537 static const STATDATA initnew_expect[] =
2539 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 1 },
2540 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 1 },
2542 static const STATDATA initnew2_expect[] =
2545 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 2 },
2546 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 2 },
2548 static const STATDATA initnew3_expect[] =
2550 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 1 },
2551 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 1 },
2552 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 2 },
2553 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 2 },
2556 static const STATDATA initnew4_expect[] =
2558 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 2 },
2559 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 2 },
2561 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 4 },
2562 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 4 },
2584 hr = IPersistStorage_InitNew( persist, stg_dib );
2587 hr = IPersistStorage_GetClassID( persist, &
clsid );
2593 hr = IPersistStorage_InitNew( persist, stg_mf );
2596 hr = IPersistStorage_HandsOffStorage( persist );
2599 hr = IPersistStorage_GetClassID( persist, &
clsid );
2603 hr = IPersistStorage_InitNew( persist, stg_mf );
2606 hr = IPersistStorage_GetClassID( persist, &
clsid );
2612 hr = IPersistStorage_HandsOffStorage( persist );
2615 hr = IPersistStorage_InitNew( persist, stg_dib );
2618 hr = IPersistStorage_GetClassID( persist, &
clsid );
2624 hr = IPersistStorage_HandsOffStorage( persist );
2627 hr = IPersistStorage_InitNew( persist, stg_wine );
2630 hr = IPersistStorage_GetClassID( persist, &
clsid );
2636 IStorage_Release( stg_wine );
2637 IStorage_Release( stg_mf );
2638 IStorage_Release( stg_dib );
2640 IPersistStorage_Release( persist );
2641 IOleCache2_Release(
cache );
2653 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2654 {
"DataObject_GetData", 0, {
CF_BITMAP,
NULL, DVASPECT_CONTENT, -1, TYMED_GDI } },
2660 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2661 {
"DataObject_GetData", 0, {
CF_ENHMETAFILE,
NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF } },
2662 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2667 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2668 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2673 {
"DataObject_QueryGetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2674 {
"DataObject_QueryGetData", 0, {
CF_ENHMETAFILE,
NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF } },
2675 {
"DataObject_QueryGetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2676 {
"DataObject_QueryGetData", 0, {
CF_BITMAP,
NULL, DVASPECT_CONTENT, -1, TYMED_GDI } },
2681 {
"DataObject_QueryGetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2682 {
"DataObject_QueryGetData", 0, {
CF_ENHMETAFILE,
NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF } },
2683 {
"DataObject_QueryGetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2684 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2689 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2690 {
"DataObject_GetData", 0, {
CF_ENHMETAFILE,
NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF } },
2691 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2692 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2697 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2702 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2703 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2708 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2713 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
2714 {
"DataObject_GetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_MFPICT } },
2722 static STATDATA view_cache[] =
2724 {{ 0, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 0 }
2726 static STATDATA view_cache_after_dib[] =
2728 {{
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0,
NULL, 0 },
2729 {{
CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0,
NULL, 0 }
2732 static FORMATETC dib_fmt[] =
2734 {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
2751 fmt.dwAspect = DVASPECT_CONTENT;
2753 fmt.tymed = TYMED_HGLOBAL;
2755 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn[0] );
2775 fmt.dwAspect = DVASPECT_CONTENT;
2777 fmt.tymed = TYMED_ENHMF;
2779 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn[1] );
2792 hr = IOleCache2_Uncache(
cache, conn[1] );
2797 fmt.dwAspect = DVASPECT_CONTENT;
2799 fmt.tymed = TYMED_MFPICT;
2801 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn[1] );
2810 hr = IOleCache2_Uncache(
cache, conn[1] );
2812 hr = IOleCache2_Uncache(
cache, conn[0] );
2818 fmt.dwAspect = DVASPECT_CONTENT;
2820 fmt.tymed = TYMED_HGLOBAL;
2822 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn[0] );
2824 view_cache[0].dwConnection = conn[0];
2842 view_cache_after_dib[0].dwConnection = view_cache_after_dib[1].dwConnection = view_cache[0].dwConnection;
2845 hr = IOleCache2_Uncache(
cache, conn[0] );
2852 fmt.dwAspect = DVASPECT_CONTENT;
2854 fmt.tymed = TYMED_HGLOBAL;
2856 hr = IOleCache2_Cache(
cache, &
fmt, 0, &conn[0] );
2861 fmt.dwAspect = DVASPECT_CONTENT;
2863 fmt.tymed = TYMED_ENHMF;
2865 hr = IOleCache2_Cache(
cache, &
fmt, ADVF_NODATA, &conn[1] );
2870 fmt.dwAspect = DVASPECT_CONTENT;
2872 fmt.tymed = TYMED_MFPICT;
2874 hr = IOleCache2_Cache(
cache, &
fmt, ADVFCACHE_ONSAVE, &conn[2] );
2898 hr = IOleCache2_DiscardCache(
cache, DISCARDCACHE_NOSAVE );
2908 hr = IOleCache2_DiscardCache(
cache, DISCARDCACHE_NOSAVE );
2920 hr = IOleCache2_UpdateCache(
cache, &
DataObject, UPDFCACHE_ONLYIFBLANK | UPDFCACHE_NORMALCACHE,
NULL );
2925 hr = IOleCache2_DiscardCache(
cache, DISCARDCACHE_NOSAVE );
2930 hr = IOleCache2_UpdateCache(
cache, &
DataObject, UPDFCACHE_ONLYIFBLANK | UPDFCACHE_NORMALCACHE,
NULL );
2942 IOleCache2_Release(
cache );
2963 static const WCHAR wszUnknown[] = {
'U',
'n',
'k',
'n',
'o',
'w',
'n',0};
2964 static const WCHAR wszHostName[] = {
'W',
'i',
'n',
'e',
' ',
'T',
'e',
's',
't',
' ',
'P',
'r',
'o',
'g',
'r',
'a',
'm',0};
2965 static const WCHAR wszDelim[] = {
'!',0};
2969 {
"OleObject_QueryInterface", 0 },
2970 {
"OleObject_AddRef", 0 },
2971 {
"OleObject_QueryInterface", 0 },
2972 {
"OleObject_QueryInterface",
TEST_TODO },
2973 {
"OleObject_QueryInterface", 0 },
2974 {
"OleObject_QueryInterface", 0 },
2988 ok(
hr ==
E_NOINTERFACE,
"IOleObject_QueryInterface(&IID_IOleInPlaceObject) should return E_NOINTERFACE instead of 0x%08x\n",
hr);
2993 hr = IOleObject_Close(
pObject, OLECLOSE_NOSAVE);
2998 hr = IOleObject_EnumVerbs(
pObject, &pEnumVerbs);
3001 hr = IOleObject_GetClientSite(
pObject, &pClientSite);
3004 hr = IOleObject_SetClientSite(
pObject, pClientSite);
3007 hr = IOleObject_GetClipboardData(
pObject, 0, &pDataObject);
3009 "IOleObject_GetClipboardData should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
3012 hr = IOleObject_GetExtent(
pObject, DVASPECT_CONTENT, &sizel);
3013 ok(
hr ==
OLE_E_BLANK,
"IOleObject_GetExtent should have returned OLE_E_BLANK instead of 0x%08x\n",
3017 ok(
hr ==
REGDB_E_CLASSNOTREG,
"IOleObject_GetMiscStatus should have returned REGDB_E_CLASSNOTREG instead of 0x%08x\n",
hr);
3023 hr = IOleObject_GetUserType(
pObject, USERCLASSTYPE_FULL, &pszUserType);
3026 ok(!
lstrcmpW(pszUserType, wszUnknown),
"Retrieved user type was wrong\n");
3030 ok(
hr ==
OLE_E_NOTRUNNING,
"IOleObject_InitFromData should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
hr);
3033 ok(
hr ==
OLE_E_NOTRUNNING,
"IOleObject_IsUpToDate should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
hr);
3039 ok(
hr ==
OLE_E_NOTRUNNING,
"IOleObject_SetColorScheme should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
hr);
3041 sizel.
cx = sizel.
cy = 0;
3042 hr = IOleObject_SetExtent(
pObject, DVASPECT_CONTENT, &sizel);
3043 ok(
hr ==
OLE_E_NOTRUNNING,
"IOleObject_SetExtent should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
hr);
3050 hr = IOleObject_SetMoniker(
pObject, OLEWHICHMK_CONTAINER, pMoniker);
3052 IMoniker_Release(pMoniker);
3054 hr = IOleObject_GetMoniker(
pObject, OLEGETMONIKER_ONLYIFTHERE, OLEWHICHMK_CONTAINER, &pMoniker);
3055 ok(
hr ==
E_FAIL,
"IOleObject_GetMoniker should have returned E_FAIL instead of 0x%08x\n",
hr);
3066 fmtetc.dwAspect = DVASPECT_CONTENT;
3068 fmtetc.tymed = TYMED_NULL;
3069 hr = IDataObject_DAdvise(pDataObject, &fmtetc, 0, &
AdviseSink, &dwAdvConn);
3074 fmtetc.dwAspect = DVASPECT_CONTENT;
3076 fmtetc.tymed = TYMED_ENHMF;
3077 hr = IDataObject_DAdvise(pDataObject, &fmtetc, 0, &
AdviseSink, &dwAdvConn);
3082 fmtetc.dwAspect = DVASPECT_CONTENT;
3084 fmtetc.tymed = TYMED_ENHMF;
3085 hr = IDataObject_QueryGetData(pDataObject, &fmtetc);
3086 ok(
hr ==
OLE_E_NOTRUNNING,
"IDataObject_QueryGetData should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
hr);
3090 fmtetc.dwAspect = DVASPECT_CONTENT;
3092 fmtetc.tymed = TYMED_NULL;
3093 hr = IDataObject_QueryGetData(pDataObject, &fmtetc);
3094 ok(
hr ==
OLE_E_NOTRUNNING,
"IDataObject_QueryGetData should have returned OLE_E_NOTRUNNING instead of 0x%08x\n",
hr);
3099 hr = IRunnableObject_SetContainedObject(pRunnableObject,
TRUE);
3102 hr = IRunnableObject_Run(pRunnableObject,
NULL);
3105 hr = IOleObject_Close(
pObject, OLECLOSE_NOSAVE);
3108 IRunnableObject_Release(pRunnableObject);
3139 ok(
hr == 0x87654321,
"Got 0x%08x\n",
hr);
3155 {
"OleObject_QueryInterface", 0 },
3156 {
"OleObjectRunnable_AddRef", 0 },
3157 {
"OleObjectRunnable_IsRunning", 0 },
3158 {
"OleObjectRunnable_Release", 0 },
3164 {
"OleObject_QueryInterface", 0 },
3177 ok(
ret ==
TRUE,
"Object should be running\n");
3183 ok(
ret ==
FALSE,
"Object should not be running\n");
3189 ok(
ret ==
TRUE,
"Object without IRunnableObject should be running\n");
3227 ok(0,
"unexpected\n");
3239 ok(0,
"unexpected\n");
3244 BOOL last_unlock_closes)
3246 ok(0,
"unexpected\n");
3252 ok(0,
"unexpected\n");
3276 ok(
hr ==
S_OK,
"OleRun failed 0x%08x\n",
hr);
3279 ok(
hr == 0xdeadc0de,
"got 0x%08x\n",
hr);
3287 ok(
hr ==
S_OK,
"OleLockRunning failed 0x%08x\n",
hr);
3305static const WCHAR olepres0W[] = {2,
'O',
'l',
'e',
'P',
'r',
'e',
's',
'0',
'0',
'0',0};
3314 ok(0,
"unexpected call to QueryInterface\n");
3320 ok(0,
"unexpected call to AddRef\n");
3326 ok(0,
"unexpected call to Release\n");
3362 ok(!reserved1,
"reserved1 = %x\n", reserved1);
3364 ok(!!ppstm,
"ppstm = NULL\n");
3366 IStream_AddRef(*ppstm);
3367 hr = IStream_Seek(*ppstm,
pos, STREAM_SEEK_SET,
NULL);
3368 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3369 hr = IStream_SetSize(*ppstm,
size);
3370 ok(
hr ==
S_OK,
"IStream_SetSize returned %x\n",
hr);
3376 static const WCHAR ole1W[] = {1,
'O',
'l',
'e',0};
3381 ok(!reserved1,
"reserved1 = %p\n", reserved1);
3383 ok(!!ppstm,
"ppstm = NULL\n");
3392 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3394 }
else if(!
lstrcmpW(pwcsName, ole1W)) {
3410 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3420 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3424 ok(0,
"unexpected call to OpenStream: %s\n",
wine_dbgstr_w(pwcsName));
3430 ok(0,
"unexpected call to CreateStorage\n");
3436 ok(0,
"unexpected call to OpenStorage\n");
3442 ok(0,
"unexpected call to CopyTo\n");
3448 ok(0,
"unexpected call to MoveElementTo\n");
3454 ok(0,
"unexpected call to Commit\n");
3460 ok(0,
"unexpected call to Revert\n");
3466 ok(0,
"unexpected call to EnumElements\n");
3478 "unexpected call to DestroyElement(%s)\n",
wine_dbgstr_w(pwcsName));
3490 ok(0,
"unexpected call to RenameElement\n");
3496 ok(0,
"unexpected call to SetElementTimes\n");
3510 ok(0,
"unexpected call to SetStateBits\n");
3517 ok(pstatstg !=
NULL,
"pstatstg = NULL\n");
3518 ok(grfStatFlag == STATFLAG_NONAME,
"grfStatFlag = %x\n", grfStatFlag);
3520 memset(pstatstg, 0,
sizeof(STATSTG));
3521 pstatstg->type = STGTY_STORAGE;
3552 static const WCHAR clsidW[] = {
'C',
'L',
'S',
'I',
'D',
'\\',0};
3557 DWORD ansi_user_type_len;
3558 DWORD ansi_clipboard_format_len;
3560 DWORD unicode_marker;
3561 DWORD unicode_user_type_len;
3562 DWORD unicode_clipboard_format_len;
3568 DWORD link_update_option;
3570 DWORD reserved_moniker_stream_size;
3571 DWORD relative_source_moniker_stream_size;
3572 DWORD absolute_source_moniker_stream_size;
3573 DWORD clsid_indicator;
3575 DWORD reserved_display_name;
3577 DWORD local_update_time;
3578 DWORD local_check_update_time;
3579 DWORD remote_update_time;
3590 ok(
hr ==
S_OK,
"CreateStreamOnHGlobal returned %x\n",
hr);
3592 ok(
hr ==
S_OK,
"IStream_Write returned %x\n",
hr);
3595 ok(
hr ==
S_OK,
"CreateStreamOnHGlobal returned %x\n",
hr);
3597 ok(
hr ==
S_OK,
"IStream_Write returned %x\n",
hr);
3620 win_skip(
"not enough permissions to create CLSID key (%u)\n",
ret);
3645 ok(
hr ==
S_OK,
"OleDoAutoConvert returned %x\n",
hr);
3654 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3656 ok(
hr ==
S_OK,
"IStream_Read returned %x\n",
hr);
3657 ok(comp_obj_data.reserved1 == 0xfffe0001,
"reserved1 = %x\n", comp_obj_data.reserved1);
3658 ok(comp_obj_data.version == 0xa03,
"version = %x\n", comp_obj_data.version);
3659 ok(comp_obj_data.reserved2[0] == -1,
"reserved2[0] = %x\n", comp_obj_data.reserved2[0]);
3661 ok(!comp_obj_data.ansi_user_type_len,
"ansi_user_type_len = %d\n", comp_obj_data.ansi_user_type_len);
3662 ok(!comp_obj_data.ansi_clipboard_format_len,
"ansi_clipboard_format_len = %d\n", comp_obj_data.ansi_clipboard_format_len);
3663 ok(!comp_obj_data.reserved3,
"reserved3 = %x\n", comp_obj_data.reserved3);
3664 ok(comp_obj_data.unicode_marker == 0x71b239f4,
"unicode_marker = %x\n", comp_obj_data.unicode_marker);
3665 ok(!comp_obj_data.unicode_user_type_len,
"unicode_user_type_len = %d\n", comp_obj_data.unicode_user_type_len);
3666 ok(!comp_obj_data.unicode_clipboard_format_len,
"unicode_clipboard_format_len = %d\n", comp_obj_data.unicode_clipboard_format_len);
3667 ok(!comp_obj_data.reserved4,
"reserved4 %d\n", comp_obj_data.reserved4);
3670 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3672 ok(
hr ==
S_OK,
"IStream_Read returned %x\n",
hr);
3673 ok(ole_data.version == 0,
"version = %x\n", ole_data.version);
3674 ok(ole_data.flags == 4,
"flags = %x\n", ole_data.flags);
3675 for(
i=2;
i<
sizeof(ole_data)/
sizeof(
DWORD);
i++)
3676 ok(((
DWORD*)&ole_data)[
i] == 0,
"ole_data[%d] = %x\n",
i, ((
DWORD*)&ole_data)[
i]);
3680 ok(
hr ==
S_OK,
"SetConvertStg returned %x\n",
hr);
3687 ok(
hr ==
S_OK,
"WriteFmtUserTypeStg returned %x\n",
hr);
3692 ok(
hr ==
S_OK,
"IStream_Seek returned %x\n",
hr);
3694 ok(
hr ==
S_OK,
"IStream_Read returned %x\n",
hr);
3695 ok(comp_obj_data.reserved1 == 0xfffe0001,
"reserved1 = %x\n", comp_obj_data.reserved1);
3696 ok(comp_obj_data.version == 0xa03,
"version = %x\n", comp_obj_data.version);
3697 ok(comp_obj_data.reserved2[0] == -1,
"reserved2[0] = %x\n", comp_obj_data.reserved2[0]);
3699 ok(!comp_obj_data.ansi_user_type_len,
"ansi_user_type_len = %d\n", comp_obj_data.ansi_user_type_len);
3700 ok(!comp_obj_data.ansi_clipboard_format_len,
"ansi_clipboard_format_len = %d\n", comp_obj_data.ansi_clipboard_format_len);
3701 ok(!comp_obj_data.reserved3,
"reserved3 = %x\n", comp_obj_data.reserved3);
3702 ok(comp_obj_data.unicode_marker == 0x71b239f4,
"unicode_marker = %x\n", comp_obj_data.unicode_marker);
3703 ok(!comp_obj_data.unicode_user_type_len,
"unicode_user_type_len = %d\n", comp_obj_data.unicode_user_type_len);
3704 ok(!comp_obj_data.unicode_clipboard_format_len,
"unicode_clipboard_format_len = %d\n", comp_obj_data.unicode_clipboard_format_len);
3705 ok(!comp_obj_data.reserved4,
"reserved4 %d\n", comp_obj_data.reserved4);
3708 ok(!
ret,
"comp_obj_stream was not freed\n");
3710 ok(!
ret,
"ole_stream was not freed\n");
3722 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,
3723 0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
3724 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,
3725 0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
3726 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,
3727 0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
3728 0x00,0x00,0x02,0x00,0x00,0x00,0xff,0xff,
3729 0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x00,
3735 0x01,0x00,0x09,0x00,0x00,0x03,0x0c,0x00,
3736 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
3737 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00
3742 static const WCHAR contentsW[] = {
'C',
'o',
'n',
't',
'e',
'n',
't',
's',0 };
3749 DWORD clipformat[2];
3757 ILockBytes_Release(ilb);
3766 IStream_Release(stm);
3773 hr = IStream_Write(stm, clipformat,
sizeof(clipformat),
NULL);
3776 hdr.tdSize =
sizeof(
hdr.tdSize);
3777 hdr.dvAspect = DVASPECT_CONTENT;
3779 hdr.advf = ADVF_PRIMEFIRST;
3781 hdr.dwObjectExtentX = 0;
3782 hdr.dwObjectExtentY = 0;
3789 IStream_Release(stm);
3795 hr = IPersistStorage_Load(stg, doc);
3798 IStorage_Release(doc);
3800 hr = IPersistStorage_IsDirty(stg);
3817 trace(
"IPersistStorage_Save:\n");
3831 IPersistStorage_Release(stg);
3832 IOleCache2_Release(
cache);
3835#define MAX_STREAM 16
3866 {{
"Contents", -1, 0, 0,
NULL, 0 },
3867 {
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3872 {{
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3878 {
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3883 {{
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3889 {
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 },
3892 {
"MyStream", -1, 0, 0,
"Hello World!", 13 }}
3897 {{
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 },
3905 {
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 },
3908 {
"MyStream", -1, 0, 0,
"Hello World!", 13 }}
3913 {{
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3921 {
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 },
3922 {
"MyStream", -1, 0, 0,
"Hello World!", 13 }}
3927 {{
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3934 {
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 },
3936 {
"MyStream", -1, 0, 0,
"Hello World!", 13 }}
3941 {{
"\2OlePres000", 0, DVASPECT_ICON, ADVF_PRIMEFIRST | ADVF_ONLYONCE,
NULL, 0 }}
3975 int length, clipformat = -2;
3984 hr = IStream_Read(
stream, &clipformat,
sizeof(clipformat), &
bytes);
3989 ok(0,
"unhandled clipformat length %d\n",
length);
3995 int *enumerated_streams,
int *matched_streams)
4004 trace(
"check_storage_contents:\n=============================================\n");
4006 *enumerated_streams = 0;
4007 *matched_streams = 0;
4009 hr = IStorage_Stat(stg, &
stat, STATFLAG_NONAME);
4014 hr = IStorage_EnumElements(stg, 0,
NULL, 0, &enumstg);
4020 int clipformat = -1;
4027 hr = IEnumSTATSTG_Next(enumstg, 1, &
stat,
NULL);
4032 trace(
"name %s, type %u, size %d, clsid %s\n",
4035 ok(
stat.type == STGTY_STREAM,
"unexpected %#x\n",
stat.type);
4048 if (clipformat == 0)
4053 ok(
bytes == header_size,
"read %u bytes, expected %u\n",
bytes, header_size);
4056 trace(
"header: tdSize %#x, dvAspect %#x, lindex %#x, advf %#x, unknown7 %#x, dwObjectExtentX %#x, dwObjectExtentY %#x, dwSize %#x\n",
4069 if (seen_stream[
i])
continue;
4072 trace(
"%s/%s, %d/%d, %d/%d, %d/%d\n",
4074 stg_def->
stream[
i].cf, clipformat,
4079 stg_def->
stream[
i].cf == clipformat &&
4083 (!stg_def->
stream[
i].data_size ||
4087 trace(
"stream %d matches def stream %d\n", *enumerated_streams,
i);
4089 *matched_streams += 1;
4096 *enumerated_streams += 1;
4099 IEnumSTATSTG_Release(enumstg);
4105 ULONG datasize1, datasize2;
4107 if (med1->tymed != med2->tymed)
4110 if (med1->tymed == TYMED_MFPICT)
4117 if (datasize1 == datasize2)
4126 else if (med1->tymed == TYMED_ENHMF)
4130 if (datasize1 == datasize2)
4139 else if (med1->tymed == TYMED_HGLOBAL)
4144 if (datasize1 == datasize2)
4158 if (med1->tymed == TYMED_HGLOBAL)
4163 else if (med1->tymed == TYMED_MFPICT)
4189 hr = IStorage_SetClass(stg, stg_def->
clsid);
4200 if (stg_def->
stream[
i].cf != -1)
4208 clipformat[1] = stg_def->
stream[
i].cf;
4209 hr = IStream_Write(stm, clipformat,
sizeof(clipformat),
NULL);
4214 hr = IStream_Write(stm, &clipformat[0],
sizeof(clipformat[0]),
NULL);
4218 hdr.tdSize =
sizeof(
hdr.tdSize);
4223 hdr.dwObjectExtentX = 0;
4224 hdr.dwObjectExtentY = 0;
4230 if (stg_def->
stream[
i].data_size)
4236 IStream_Release(stm);
4244 0x42, 0x4d, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00,
4245 0x00, 0x00, 0x36, 0x00, 0x00, 0x00
4250 0xd7, 0xcd, 0xc6, 0x9a, 0x00, 0x00, 0x00, 0x00,
4251 0x00, 0x00, 0x16, 0x00, 0x2d, 0x00, 0x40, 0x02,
4252 0x00, 0x00, 0x00, 0x00, 0x6a, 0x55
4265 data_size =
sizeof(
dib);
4266 if (!
strcmp(stg_def->
stream[stm_idx].name,
"CONTENTS"))
4279 stg_def->
stream[stm_idx].data_size = data_size;
4284 if (!
strcmp(stg_def->
stream[stm_idx].name,
"CONTENTS"))
4289 data_size +=
sizeof(
mf_rec);
4297 stg_def->
stream[stm_idx].data_size = data_size;
4301 if (!
strcmp(stg_def->
stream[stm_idx].name,
"CONTENTS"))
4318 stg_def->
stream[stm_idx].data_size = data_size;
4338 ok(0,
"cf %x not implemented\n", cfFormat);
4352 int enumerated_streams, matched_streams,
i;
4355 struct tests_data_cache
4358 int num_fmts, num_set;
4363 static struct tests_data_cache *
pdata,
data[] =
4367 {
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
4370 { 0, 0, DVASPECT_DOCPRINT, -1, TYMED_HGLOBAL },
4377 {
"\2OlePres003", 0, DVASPECT_DOCPRINT, 0,
NULL, 0 } }
4383 {
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
4397 {
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
4425 {
CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
4463 for (
i = 0;
i <
pdata->num_fmts;
i++)
4467 if (i < pdata->num_set)
4481 ILockBytes_Release(ilb);
4489 trace(
"IPersistStorage_Save:\n");
4490 hr = IPersistStorage_Save(persist, doc,
FALSE);
4493 hr = IPersistStorage_IsDirty(persist);
4497 ok(enumerated_streams == matched_streams,
"enumerated %d != matched %d\n",
4498 enumerated_streams, matched_streams);
4499 ok(enumerated_streams ==
pdata->stg_def.stream_count,
"created %d != def streams %d\n",
4500 enumerated_streams,
pdata->stg_def.stream_count);
4502 IPersistStorage_Release(persist);
4503 IOleCache2_Release(
cache);
4511 hr = IStorage_SetClass(doc,
pdata->clsid);
4513 trace(
"IPersistStorage_Load\n");
4514 hr = IPersistStorage_Load(persist, doc);
4519 for (
i = 0;
i <
pdata->num_set;
i++)
4521 hr = IDataObject_GetData(odata, &
pdata->fmts[
i], &stgmed);
4530 IDataObject_Release(odata);
4531 IPersistStorage_Release(persist);
4532 IStorage_Release(doc);
4533 IOleCache2_Release(
cache);
4534 for (
i = 0;
i <
pdata->num_set;
i++)
4546 int i, enumerated_streams, matched_streams;
4568 trace(
"start testing storage def %d\n",
i);
4571 if (!doc1)
continue;
4573 enumerated_streams = matched_streams = -1;
4575 ok(enumerated_streams == matched_streams,
"%d in: enumerated %d != matched %d\n",
i,
4576 enumerated_streams, matched_streams);
4577 ok(enumerated_streams ==
test_data[
i].
in->stream_count,
"%d: created %d != def streams %d\n",
i,
4578 enumerated_streams,
test_data[
i].in->stream_count);
4584 hr = IPersistStorage_Load(stg, doc1);
4587 IStorage_Release(doc1);
4592 hr = IPersistStorage_IsDirty(stg);
4595 hr = IPersistStorage_Save(stg, doc2,
FALSE);
4598 IPersistStorage_Release(stg);
4600 enumerated_streams = matched_streams = -1;
4603 ok(enumerated_streams == matched_streams,
"%d out: enumerated %d != matched %d\n",
i,
4604 enumerated_streams, matched_streams);
4607 ok(enumerated_streams ==
test_data[
i].
out->stream_count,
"%d: saved streams %d != def streams %d\n",
i,
4608 enumerated_streams,
test_data[
i].out->stream_count);
4610 IStorage_Release(doc2);
4613 trace(
"done testing storage def %d\n",
i);
4626 int enumerated_streams, matched_streams;
4628 static FORMATETC dib_fmt[] =
4630 {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
4633 static FORMATETC emf_fmt[] =
4638 static FORMATETC text_fmt[] =
4640 {
CF_TEXT,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
4645 {
"DataObject_EnumFormatEtc",
TEST_TODO },
4646 {
"DataObject_GetDataHere", 0 },
4647 {
"DataObject_QueryGetData", 0, {
CF_METAFILEPICT,
NULL, DVASPECT_CONTENT, -1, TYMED_ISTORAGE } },
4652 {
"DataObject_GetData", 0, {
CF_DIB,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
4657 {
"DataObject_GetData", 0, {
CF_ENHMETAFILE,
NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF } },
4660 static const struct expected_method methods_createstatic_from_text[] =
4662 {
"DataObject_GetData", 0, {
CF_TEXT,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL } },
4668 {{
"\1Ole", -1, 0, 0,
NULL, 0 },
4669 {
"\1CompObj", -1, 0, 0,
NULL, 0 },
4670 {
"CONTENTS", -1, 0, 0,
NULL, 0 }}
4675 {{
"\1Ole", -1, 0, 0,
NULL, 0 },
4676 {
"\1CompObj", -1, 0, 0,
NULL, 0 },
4677 {
"CONTENTS", -1, 0, 0,
NULL, 0 }}
4682 ok(
hr ==
S_OK,
"CreateILockBytesOnHGlobal failed: 0x%08x.\n",
hr);
4685 ok(
hr ==
S_OK,
"StgCreateDocfileOnILockBytes failed: 0x%08x.\n",
hr);
4686 ILockBytes_Release(ilb);
4689 dib_fmt,
NULL,
NULL, (
void **)&ole_obj);
4701 ok(
hr ==
S_OK,
"OleCreateStaticFromData failed: 0x%08x.\n",
hr);
4702 hr = IOleObject_QueryInterface(ole_obj, &
IID_IPersist, (
void **)&persist);
4703 ok(
hr ==
S_OK,
"IOleObject_QueryInterface failed: 0x%08x.\n",
hr);
4704 hr = IPersist_GetClassID(persist, &
clsid);
4705 ok(
hr ==
S_OK,
"IPersist_GetClassID failed: 0x%08x.\n",
hr);
4708 hr = IStorage_Stat(
storage, &statstg, STATFLAG_NONAME);
4711 enumerated_streams = matched_streams = -1;
4715 ok(enumerated_streams == matched_streams,
"enumerated %d != matched %d\n",
4716 enumerated_streams, matched_streams);
4717 ok(enumerated_streams == stg_def_dib.
stream_count,
"created %d != def streams %d\n",
4720 IPersist_Release(persist);
4722 IOleObject_Release(ole_obj);
4726 ok(
hr ==
S_OK,
"CreateILockBytesOnHGlobal failed: 0x%08x.\n",
hr);
4729 ok(
hr ==
S_OK,
"StgCreateDocfileOnILockBytes failed: 0x%08x.\n",
hr);
4730 ILockBytes_Release(ilb);
4735 ok(
hr ==
S_OK,
"OleCreateStaticFromData failed: 0x%08x.\n",
hr);
4736 hr = IOleObject_QueryInterface(ole_obj, &
IID_IPersist, (
void **)&persist);
4737 ok(
hr ==
S_OK,
"IOleObject_QueryInterface failed: 0x%08x.\n",
hr);
4738 hr = IPersist_GetClassID(persist, &
clsid);
4739 ok(
hr ==
S_OK,
"IPersist_GetClassID failed: 0x%08x.\n",
hr);
4742 hr = IStorage_Stat(
storage, &statstg, STATFLAG_NONAME);
4745 enumerated_streams = matched_streams = -1;
4749 ok(enumerated_streams == matched_streams,
"enumerated %d != matched %d\n",
4750 enumerated_streams, matched_streams);
4751 ok(enumerated_streams == stg_def_emf.
stream_count,
"created %d != def streams %d\n",
4754 IPersist_Release(persist);
4756 IOleObject_Release(ole_obj);
4760 ok(
hr ==
S_OK,
"CreateILockBytesOnHGlobal failed: 0x%08x.\n",
hr);
4763 ok(
hr ==
S_OK,
"StgCreateDocfileOnILockBytes failed: 0x%08x.\n",
hr);
4764 ILockBytes_Release(ilb);
4773 ok(
hr ==
S_OK,
"CreateILockBytesOnHGlobal failed: 0x%08x.\n",
hr);
4776 ok(
hr ==
S_OK,
"StgCreateDocfileOnILockBytes failed: 0x%08x.\n",
hr);
4777 ILockBytes_Release(ilb);
4807 hr = IStorage_Stat(pStorage, &statstg, STATFLAG_NONAME);
4813 IStorage_Release(pStorage);
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static unsigned char bytes[4]
const GUID IID_IClassFactory
#define STDMETHODCALLTYPE
#define RegCloseKey(hKey)
const CLSID CLSID_Picture_EnhMetafile
const CLSID CLSID_Picture_Dib
const CLSID CLSID_ManualResetEvent
const CLSID CLSID_Picture_Metafile
_In_ size_t const _In_ int _In_ bool const _In_ unsigned const _In_ __acrt_rounding_mode const _Inout_ __crt_cached_ptd_host & ptd
HRESULT WINAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid, REFIID riid, LPVOID *ppvObj)
static const WCHAR clsidW[]
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR version[]
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
UINT WINAPI GetSystemDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI DECLSPEC_HOTPATCH CoRevokeClassObject(DWORD dwRegister)
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
HRESULT WINAPI OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, IClassFactory *pCF, REFIID riid, LPVOID *ppvObj)
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
HRESULT WINAPI CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM *ppstm)
HRESULT WINAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
HRESULT WINAPI DECLSPEC_HOTPATCH OleRun(LPUNKNOWN pUnknown)
HRESULT WINAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses)
HRESULT WINAPI OleDraw(IUnknown *pUnk, DWORD dwAspect, HDC hdcDraw, LPCRECT rect)
BOOL WINAPI OleIsRunning(LPOLEOBJECT object)
HRESULT WINAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew)
HRESULT WINAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID *ppvObj)
HRESULT WINAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj)
HRESULT WINAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew)
HRESULT WINAPI StgCreateDocfileOnILockBytes(ILockBytes *plkbyt, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen)
HRESULT WINAPI StgCreateDocfile(LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen)
HRESULT WINAPI WriteFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType)
HRESULT WINAPI SetConvertStg(IStorage *storage, BOOL convert)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum GLboolean sink
GLboolean GLboolean GLboolean GLboolean a
GLfloat GLfloat GLfloat GLfloat h
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
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
_Check_return_ long __cdecl atol(_In_z_ const char *_Str)
HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, IMoniker **ppmk)
HRESULT WINAPI CreateILockBytesOnHGlobal(HGLOBAL global, BOOL delete_on_release, ILockBytes **ret)
#define memcpy(s1, s2, n)
#define todo_wine_if(is_todo)
#define cmp(status, error)
static HGLOBAL create_text(void)
static HGLOBAL create_storage(void)
static HENHMETAFILE create_emf(void)
static IPersistStorage OleObjectPersistStg
static HRESULT WINAPI Storage_Commit(IStorage *iface, DWORD grfCommitFlags)
static HRESULT WINAPI OleObjectPersistStg_SaveCompleted(IPersistStorage *iface, IStorage *pStgNew)
static IStorage * create_storage_from_def(const struct storage_def *stg_def)
static BOOL WINAPI OleObjectRunnable_IsRunning(IRunnableObject *iface)
static void test_data_cache_updatecache(void)
static const struct storage_def stg_def_9
static HRESULT WINAPI OleObjectPersistStg_InitNew(IPersistStorage *iface, IStorage *pStg)
static const IRunnableObjectVtbl oleruntestvtbl
static IRunnableObject testrunnable
static IStorageVtbl StorageVtbl
static const IPersistStorageVtbl OleObjectPersistStgVtbl
static const struct storage_def stg_def_1
static HRESULT WINAPI viewobject_SetAdvise(IViewObject *iface, DWORD aspects, DWORD advf, IAdviseSink *sink)
static void WINAPI AdviseSink_OnSave(IAdviseSink *iface)
static HRESULT WINAPI OleObject_IsUpToDate(IOleObject *iface)
static HRESULT WINAPI OleObject_Advise(IOleObject *iface, IAdviseSink *pAdvSink, DWORD *pdwConnection)
static BOOL STDMETHODCALLTYPE draw_continue_false(ULONG_PTR param)
static HRESULT WINAPI DataObject_DAdvise(IDataObject *iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection)
static HRESULT WINAPI Storage_DestroyElement(IStorage *iface, LPCOLESTR pwcsName)
static ULONG WINAPI AdviseSink_Release(IAdviseSink *iface)
static HRESULT WINAPI viewobject_GetColorSet(IViewObject *iface, DWORD draw_aspect, LONG index, void *aspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **colorset)
static ULONG WINAPI AdviseSink_AddRef(IAdviseSink *iface)
static void test_data_cache_save(void)
static HRESULT WINAPI AdviseSink_QueryInterface(IAdviseSink *iface, REFIID riid, void **ppv)
static const struct storage_def stg_def_7
static const IClassFactoryVtbl OleObjectCFVtbl
static ULONG WINAPI OleObjectCF_Release(IClassFactory *iface)
static void WINAPI AdviseSink_OnViewChange(IAdviseSink *iface, DWORD dwAspect, LONG lindex)
static ULONG WINAPI OleRun_Release(IRunnableObject *iface)
static HRESULT WINAPI OleObjectPersistStg_Load(IPersistStorage *iface, IStorage *pStg)
static HRESULT WINAPI OleObject_QueryInterface(IOleObject *iface, REFIID riid, void **ppv)
static HRESULT WINAPI OleObjectPersistStg_GetClassId(IPersistStorage *iface, CLSID *clsid)
static HRESULT WINAPI OleObjectRunnable_LockRunning(IRunnableObject *iface, BOOL fLock, BOOL fLastUnlockCloses)
static const struct storage_def stg_def_6
static const struct storage_def stg_def_0_saved
static HRESULT WINAPI OleObject_EnumAdvise(IOleObject *iface, IEnumSTATDATA **ppenumAdvise)
static ULONG WINAPI OleObject_AddRef(IOleObject *iface)
static ULONG WINAPI OleObjectRunnable_AddRef(IRunnableObject *iface)
static IRunnableObject OleObjectRunnable
#define ok_ole_success(hr, func)
static const struct expected_method * expected_method_list
static const CLSID CLSID_WineTest
static IOleObject OleObject
static const BYTE dib_inf[]
static HRESULT WINAPI OleRun_SetContainedObject(IRunnableObject *iface, BOOL contained)
static ULONG WINAPI Unknown_AddRef(IUnknown *iface)
static void test_runnable(void)
static void test_data_cache_cache(void)
static HRESULT WINAPI OleObjectPersistStg_IsDirty(IPersistStorage *iface)
static ULONG WINAPI DataObject_AddRef(IDataObject *iface)
static const struct storage_def stg_def_9_saved
static IAdviseSink AdviseSink
static BOOL WINAPI OleRun_IsRunning(IRunnableObject *iface)
static HRESULT WINAPI Storage_OpenStream(IStorage *iface, LPCOLESTR pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream **ppstm)
static ULONG WINAPI DataObject_Release(IDataObject *iface)
static ULONG WINAPI OleObjectRunnable_Release(IRunnableObject *iface)
static const IUnknownVtbl UnknownVtbl
#define CHECK_EXPECT(func)
static HRESULT WINAPI Storage_RenameElement(IStorage *iface, LPCOLESTR pwcsOldName, LPCOLESTR pwcsNewName)
static HRESULT WINAPI OleObject_GetMoniker(IOleObject *iface, DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
static void get_stgmedium(CLIPFORMAT cfFormat, STGMEDIUM *stgmedium)
static HRESULT WINAPI Storage_EnumElements(IStorage *iface, DWORD reserved1, void *reserved2, DWORD reserved3, IEnumSTATSTG **ppenum)
static HRESULT WINAPI Storage_CreateStorage(IStorage *iface, LPCOLESTR pwcsName, DWORD grfMode, DWORD dwStgFmt, DWORD reserved2, IStorage **ppstg)
static IStream * ole_stream
#define CHECK_EXPECTED_METHOD_FMT(method_name, fmt)
static HRESULT WINAPI OleObjectCache_Uncache(IOleCache *iface, DWORD dwConnection)
#define DEFINE_EXPECT(func)
static HRESULT WINAPI OleObject_GetClipboardData(IOleObject *iface, DWORD dwReserved, IDataObject **ppDataObject)
static HRESULT g_QIFailsWith
static HRESULT WINAPI Storage_SetClass(IStorage *iface, REFCLSID clsid)
static HRESULT WINAPI Storage_Stat(IStorage *iface, STATSTG *pstatstg, DWORD grfStatFlag)
#define CHECK_NO_EXTRA_METHODS()
static void test_default_handler(void)
static HRESULT WINAPI OleObjectRunnable_SetContainedObject(IRunnableObject *iface, BOOL fContained)
static HRESULT WINAPI OleObject_GetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
static void create_dib(STGMEDIUM *med)
static HRESULT WINAPI OleObjectCache_SetData(IOleCache *iface, FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
static ULONG WINAPI OleObjectPersistStg_Release(IPersistStorage *iface)
static void test_OleLockRunning(void)
static void test_data_cache_save_data(void)
static const CLSID CLSID_WineTestOld
static const struct storage_def stg_def_4
static const CLSID CLSID_Equation3
#define CHECK_EXPECTED_METHOD(method_name)
static const unsigned char bmpimage[]
static const IRunnableObjectVtbl OleObjectRunnableVtbl
static const struct storage_def stg_def_5_saved
static const struct storage_def stg_def_1_saved
static void create_mfpict(STGMEDIUM *med)
static ULONG WINAPI OleRun_AddRef(IRunnableObject *iface)
static HRESULT WINAPI OleObject_GetUserType(IOleObject *iface, DWORD dwFormOfType, LPOLESTR *pszUserType)
static ULONG WINAPI OleObjectCache_Release(IOleCache *iface)
static HRESULT WINAPI OleObject_GetMiscStatus(IOleObject *iface, DWORD aspect, DWORD *pdwStatus)
static ULONG WINAPI OleObjectCache_AddRef(IOleCache *iface)
static HRESULT WINAPI OleObjectCache_InitCache(IOleCache *iface, IDataObject *pDataObject)
static const struct storage_def stg_def_2
static HRESULT WINAPI OleObjectCF_CreateInstance(IClassFactory *iface, IUnknown *punkOuter, REFIID riid, void **ppv)
static HRESULT WINAPI viewobject_Freeze(IViewObject *iface, DWORD draw_aspect, LONG index, void *aspect, DWORD *freeze)
static HRESULT WINAPI OleObjectRunnable_QueryInterface(IRunnableObject *iface, REFIID riid, void **ppv)
static void check_expected_method_fmt(const char *method_name, const FORMATETC *fmt)
static HRESULT WINAPI OleRun_GetRunningClass(IRunnableObject *iface, CLSID *clsid)
static const struct storage_def stg_def_8
static ULONG WINAPI OleObject_Release(IOleObject *iface)
static HRESULT WINAPI OleObject_SetHostNames(IOleObject *iface, LPCOLESTR szContainerApp, LPCOLESTR szContainerObj)
static FORMATETC * g_expected_fetc
static HRESULT WINAPI OleObjectCF_LockServer(IClassFactory *iface, BOOL lock)
static ULONG WINAPI Storage_Release(IStorage *iface)
static void check_storage_contents(IStorage *stg, const struct storage_def *stg_def, int *enumerated_streams, int *matched_streams)
static HRESULT WINAPI OleObject_GetUserClassID(IOleObject *iface, CLSID *pClsid)
static int Storage_DestroyElement_limit
static HRESULT WINAPI Storage_SetElementTimes(IStorage *iface, LPCOLESTR pwcsName, const FILETIME *pctime, const FILETIME *patime, const FILETIME *pmtime)
static const WCHAR comp_objW[]
static void WINAPI AdviseSink_OnRename(IAdviseSink *iface, IMoniker *pmk)
static const struct storage_def stg_def_7_saved
#define CHECK_EXPECT2(func)
static BOOL STDMETHODCALLTYPE draw_continue(ULONG_PTR param)
static HRESULT WINAPI DataObject_GetCanonicalFormatEtc(IDataObject *iface, LPFORMATETC pformatectIn, LPFORMATETC pformatetcOut)
static IClassFactory OleObjectCF
static HRESULT WINAPI Storage_CreateStream(IStorage *iface, LPCOLESTR pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream **ppstm)
static HRESULT WINAPI OleObjectCache_Cache(IOleCache *iface, FORMATETC *pformatetc, DWORD advf, DWORD *pdwConnection)
static HRESULT WINAPI OleObjectRunnable_Run(IRunnableObject *iface, LPBINDCTX pbc)
static HRESULT stgmedium_cmp(const STGMEDIUM *med1, STGMEDIUM *med2)
static ULONG WINAPI viewobject_AddRef(IViewObject *iface)
static HRESULT WINAPI OleObject_DoVerb(IOleObject *iface, LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect)
static const struct storage_def stg_def_2_saved
static HRESULT WINAPI DataObject_DUnadvise(IDataObject *iface, DWORD dwConnection)
static HRESULT WINAPI Storage_SetStateBits(IStorage *iface, DWORD grfStateBits, DWORD grfMask)
static const struct storage_def stg_def_0
static HRESULT WINAPI Storage_MoveElementTo(IStorage *iface, LPCOLESTR pwcsName, IStorage *pstgDest, LPCOLESTR pwcsNewName, DWORD grfFlags)
static BOOL fmtetc_equal(const FORMATETC *a, const FORMATETC *b)
static const WCHAR olepres0W[]
static IStream * olepres_stream
static HRESULT WINAPI viewobject_Unfreeze(IViewObject *iface, DWORD freeze)
static const struct storage_def stg_def_3
static HRESULT g_GetMiscStatusFailsWith
static const struct storage_def stg_def_5
static HRESULT WINAPI OleObjectCache_QueryInterface(IOleCache *iface, REFIID riid, void **ppv)
static IDataObject DataObject
static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, IOleClientSite *pClientSite)
static const struct storage_def stg_def_6_saved
static HRESULT WINAPI OleObjectPersistStg_HandsOffStorage(IPersistStorage *iface)
static HRESULT WINAPI OleRun_Run(IRunnableObject *iface, LPBINDCTX ctx)
static HRESULT WINAPI DataObject_GetDataHere(IDataObject *iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium)
static HRESULT WINAPI Storage_CopyTo(IStorage *iface, DWORD ciidExclude, const IID *rgiidExclude, SNB snbExclude, IStorage *pstgDest)
static HRESULT WINAPI Storage_OpenStorage(IStorage *iface, LPCOLESTR pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstg)
static void check_dib_size(HGLOBAL h, int cx, int cy)
static void test_OleCreateStaticFromData(void)
static const IOleObjectVtbl OleObjectVtbl
#define CHECK_CALLED(func)
static HRESULT WINAPI OleObject_SetMoniker(IOleObject *iface, DWORD dwWhichMoniker, IMoniker *pmk)
static IStream * comp_obj_stream
static ULONG WINAPI OleObjectCF_AddRef(IClassFactory *iface)
static HRESULT WINAPI Unknown_QueryInterface(IUnknown *iface, REFIID riid, void **ppv)
static IStream * contents_stream
static HRESULT WINAPI OleObjectCache_EnumCache(IOleCache *iface, IEnumSTATDATA **ppenumSTATDATA)
static const struct storage_def stg_def_3_saved
static HRESULT WINAPI viewobject_Draw(IViewObject *iface, DWORD aspect, LONG index, void *paspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL bounds, LPCRECTL wbounds, BOOL(STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue)
static BOOL g_showRunnable
static const unsigned char mf_blank_bits[]
static HRESULT WINAPI OleObjectCF_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
static void check_bitmap_size(HBITMAP h, int cx, int cy)
static HRESULT WINAPI OleRun_QueryInterface(IRunnableObject *iface, REFIID riid, void **ppv)
static HRESULT WINAPI DataObject_EnumDAdvise(IDataObject *iface, IEnumSTATDATA **ppenumAdvise)
static IOleCache OleObjectCache
static HRESULT WINAPI OleRun_LockRunning(IRunnableObject *iface, BOOL lock, BOOL last_unlock_closes)
static HRESULT WINAPI DataObject_QueryGetData(IDataObject *iface, FORMATETC *fmt_in)
static HRESULT WINAPI OleObjectPersistStg_Save(IPersistStorage *iface, IStorage *pStgSave, BOOL fSameAsLoad)
static HRESULT WINAPI Storage_Revert(IStorage *iface)
static void test_data_cache_initnew(void)
static void test_OleLoad(IStorage *pStorage)
static HRESULT WINAPI DataObject_GetData(IDataObject *iface, FORMATETC *fmt_in, STGMEDIUM *med)
static HRESULT WINAPI DataObject_QueryInterface(IDataObject *iface, REFIID riid, void **ppvObject)
static const BYTE mf_rec[]
static HRESULT WINAPI OleObject_EnumVerbs(IOleObject *iface, IEnumOLEVERB **ppEnumOleVerb)
static HRESULT WINAPI OleObject_Update(IOleObject *iface)
static IViewObject viewobject
static void WINAPI AdviseSink_OnClose(IAdviseSink *iface)
static void test_OleDraw(void)
static void test_data_cache(void)
static HRESULT WINAPI OleObject_SetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel)
static IDataObjectVtbl DataObjectVtbl
static void test_OleDoAutoConvert(void)
static const struct IViewObjectVtbl viewobjectvtbl
static void test_data_cache_dib_contents_stream(int num)
static HRESULT WINAPI DataObject_EnumFormatEtc(IDataObject *iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc)
static ULONG WINAPI Storage_AddRef(IStorage *iface)
static const struct storage_def stg_def_8_saved
static void test_data_cache_contents(void)
static HRESULT WINAPI OleObjectRunnable_GetRunningClass(IRunnableObject *iface, LPCLSID lpClsid)
static int read_clipformat(IStream *stream)
static void check_enum_cache(IOleCache2 *cache, const STATDATA *expect, int num)
static HRESULT WINAPI viewobject_GetAdvise(IViewObject *iface, DWORD *aspects, DWORD *advf, IAdviseSink **sink)
static const IAdviseSinkVtbl AdviseSinkVtbl
static HRESULT WINAPI OleObject_SetColorScheme(IOleObject *iface, LOGPALETTE *pLogpal)
static const IID IID_WineTest
static FORMATETC * g_dataobject_fmts
static HRESULT WINAPI OleObjectPersistStg_QueryInterface(IPersistStorage *iface, REFIID riid, void **ppv)
static ULONG WINAPI Unknown_Release(IUnknown *iface)
static IRunnableObject * runnable
static HRESULT WINAPI OleObject_Unadvise(IOleObject *iface, DWORD dwConnection)
static void test_data_cache_init(void)
static HRESULT WINAPI OleObject_Close(IOleObject *iface, DWORD dwSaveOption)
static HRESULT WINAPI OleObject_GetClientSite(IOleObject *iface, IOleClientSite **ppClientSite)
static ULONG WINAPI OleObjectPersistStg_AddRef(IPersistStorage *iface)
static const WCHAR CONTENTS[]
static HRESULT WINAPI OleObject_InitFromData(IOleObject *iface, IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved)
static HRESULT WINAPI Storage_QueryInterface(IStorage *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI viewobject_QueryInterface(IViewObject *iface, REFIID riid, void **obj)
static void test_OleCreate(IStorage *pStorage)
static void get_stgdef(struct storage_def *stg_def, CLIPFORMAT cf, STGMEDIUM *stg_med, int stm_idx)
static void test_OleRun(void)
static const CLSID * Storage_SetClass_CLSID
static ULONG WINAPI viewobject_Release(IViewObject *iface)
static const IOleCacheVtbl OleObjectCacheVtbl
static HRESULT WINAPI DataObject_SetData(IDataObject *iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease)
static const struct storage_def stg_def_4_saved
static void WINAPI AdviseSink_OnDataChange(IAdviseSink *iface, FORMATETC *pFormatetc, STGMEDIUM *pStgmed)
static PROTOCOLDATA * pdata
static HBITMAP create_bitmap(void)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
#define KEY_CREATE_SUB_KEY
#define STGM_SHARE_EXCLUSIVE
#define STGM_DELETEONRELEASE
interface IBindCtx * LPBINDCTX
#define EMBDHLP_INPROC_SERVER
HRESULT WINAPI OleCreateFromData(LPDATAOBJECT data, REFIID iid, DWORD renderopt, LPFORMATETC fmt, LPOLECLIENTSITE client_site, LPSTORAGE stg, LPVOID *obj)
HRESULT WINAPI OleCreateStaticFromData(IDataObject *data, REFIID iid, DWORD renderopt, FORMATETC *fmt, IOleClientSite *client_site, IStorage *stg, void **obj)
HGLOBAL WINAPI OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel, LPOLESTR lpszSourceFile, UINT iIconIndex)
const GUID IID_IViewObject
const GUID IID_IAdviseSink
const GUID IID_IViewObject2
const GUID IID_IRunnableObject
const GUID IID_IOleCache2
const GUID IID_IOleCacheControl
const GUID IID_IDataObject
const GUID IID_IOleInPlaceObject
const GUID IID_IPersistStorage
const GUID IID_IOleObject
_Out_opt_ int _Out_opt_ int * cy
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define IsEqualCLSID(rclsid1, rclsid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
@ OLEMISC_RECOMPOSEONRESIZE
struct stream_def stream[MAX_STREAM]
#define FIELD_OFFSET(t, f)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define REGDB_E_CLASSNOTREG
#define CACHE_S_SAMECACHE
#define OLE_E_NOCONNECTION
#define CACHE_S_FORMATETC_NOTSUPPORTED
#define CACHE_E_NOCACHE_UPDATED
#define CO_E_OBJNOTCONNECTED
#define STG_E_FILENOTFOUND
#define OLE_E_ADVISENOTSUPPORTED
#define CO_E_ALREADYINITIALIZED
#define REGDB_E_KEYMISSING
BOOL WINAPI DeleteMetaFile(_In_ HMETAFILE)
UINT WINAPI GetEnhMetaFileBits(_In_ HENHMETAFILE hEMF, _In_ UINT nSize, _Out_writes_bytes_opt_(nSize) LPBYTE lpData)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HDC WINAPI CreateMetaFileA(_In_opt_ LPCSTR)
HDC WINAPI CreateEnhMetaFileW(_In_opt_ HDC, _In_opt_ LPCWSTR, _In_opt_ LPCRECT, _In_opt_ LPCWSTR)
UINT WINAPI GetWinMetaFileBits(_In_ HENHMETAFILE hemf, _In_ UINT cbData16, _Out_writes_bytes_opt_(cbData16) LPBYTE pData16, _In_ INT iMapMode, _In_ HDC hdcRef)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HMETAFILE WINAPI CloseMetaFile(_In_ HDC hdc)
UINT WINAPI GetMetaFileBitsEx(_In_ HMETAFILE hMF, _In_ UINT cbBuffer, _Out_writes_bytes_opt_(cbBuffer) LPVOID lpData)
HDC WINAPI CreateMetaFileW(_In_opt_ LPCWSTR)
LONG WINAPI GetBitmapBits(_In_ HBITMAP hbit, _In_ LONG cb, _Out_writes_bytes_(cb) LPVOID lpvBits)
HENHMETAFILE WINAPI CloseEnhMetaFile(_In_ HDC hdc)
struct tagENHMETAHEADER ENHMETAHEADER
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI DeleteDC(_In_ HDC)
#define HKEY_CLASSES_ROOT
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HICON WINAPI LoadIconA(_In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpIconName)
HDC WINAPI GetDC(_In_opt_ HWND)
UINT WINAPI RegisterClipboardFormatA(_In_ LPCSTR)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)