37#define BLOCK_TAB_SIZE 5
115 IMoniker_AddRef(iface);
137 for (
i = 0;
i <
This->tabLastIndex;
i++)
138 IMoniker_Release(
This->tabMoniker[
i]);
140 This->tabLastIndex = 0;
174 TRACE(
"(%p,%p)\n",iface,pClassID);
179 *pClassID = CLSID_CompositeMoniker;
194 TRACE(
"(%p)\n",iface);
210 TRACE(
"(%p,%p)\n",iface,pStm);
214 res=IStream_Read(pStm,&moniker_count,
sizeof(
DWORD),
NULL);
217 ERR(
"couldn't reading moniker count from stream\n");
223 for (
i = 0;
i < moniker_count;
i++)
228 ERR(
"couldn't load moniker from stream, res = 0x%08x\n",
res);
233 if (++
This->tabLastIndex==
This->tabSize){
256 DWORD moniker_count =
This->tabLastIndex;
258 TRACE(
"(%p,%p,%d)\n",iface,pStm,fClearDirty);
266 res=IStream_Write(pStm,&moniker_count,
sizeof(moniker_count),
NULL);
269 IMoniker_Enum(iface,
TRUE,&enumMk);
271 while(IEnumMoniker_Next(enumMk,1,&pmk,
NULL)==
S_OK){
275 IMoniker_Release(pmk);
279 IEnumMoniker_Release(enumMk);
284 IEnumMoniker_Release(enumMk);
303 TRACE(
"(%p,%p)\n",iface,pcbSize);
310 IMoniker_Enum(iface,
TRUE,&enumMk);
312 while(IEnumMoniker_Next(enumMk,1,&pmk,
NULL)==
S_OK){
314 IMoniker_GetSizeMax(pmk,&ptmpSize);
316 IMoniker_Release(pmk);
321 IEnumMoniker_Release(enumMk);
335 IMoniker *tempMk,*antiMk,*rightMostMk;
348 res=IBindCtx_GetRunningObjectTable(pbc,&prot);
353 res = IRunningObjectTable_GetObject(prot,iface,(
IUnknown**)ppvResult);
363 IMoniker_Enum(iface,
FALSE,&enumMoniker);
364 IEnumMoniker_Next(enumMoniker,1,&rightMostMk,
NULL);
365 IEnumMoniker_Release(enumMoniker);
368 res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
369 IMoniker_Release(antiMk);
371 res=IMoniker_BindToObject(rightMostMk,pbc,tempMk,
riid,ppvResult);
373 IMoniker_Release(tempMk);
374 IMoniker_Release(rightMostMk);
388 IMoniker *tempMk,*antiMk,*rightMostMk,*leftMk;
400 res = IMoniker_ComposeWith(pmkToLeft, iface,
FALSE, &leftMk);
406 IMoniker_Enum(iface,
FALSE, &enumMoniker);
407 IEnumMoniker_Next(enumMoniker, 1, &rightMostMk,
NULL);
408 IEnumMoniker_Release(enumMoniker);
412 res = IMoniker_ComposeWith(leftMk, antiMk, 0, &tempMk);
414 IMoniker_Release(antiMk);
416 res = IMoniker_BindToStorage(rightMostMk, pbc, tempMk,
riid, ppvResult);
418 IMoniker_Release(tempMk);
420 IMoniker_Release(rightMostMk);
423 IMoniker_Release(leftMk);
436 IMoniker *tempMk,*antiMk,*rightMostMk,*leftReducedComposedMk,*rightMostReducedMk;
439 TRACE(
"(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced);
441 if (ppmkReduced==
NULL)
446 if (ppmkToLeft==
NULL){
448 IMoniker_Enum(iface,
FALSE,&enumMoniker);
449 IEnumMoniker_Next(enumMoniker,1,&rightMostMk,
NULL);
450 IEnumMoniker_Release(enumMoniker);
453 IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
454 IMoniker_Release(antiMk);
456 res = IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,&tempMk, ppmkReduced);
457 IMoniker_Release(tempMk);
458 IMoniker_Release(rightMostMk);
462 else if (*ppmkToLeft==
NULL)
464 return IMoniker_Reduce(iface,pbc,dwReduceHowFar,
NULL,ppmkReduced);
469 IMoniker_Enum(iface,
FALSE,&enumMoniker);
470 IEnumMoniker_Next(enumMoniker,1,&rightMostMk,
NULL);
471 IEnumMoniker_Release(enumMoniker);
474 IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
475 IMoniker_Release(antiMk);
479 if (IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,
NULL,&rightMostReducedMk) &&
480 IMoniker_Reduce(rightMostMk,pbc,dwReduceHowFar,&tempMk,&leftReducedComposedMk) ){
481 IMoniker_Release(tempMk);
482 IMoniker_Release(rightMostMk);
488 IMoniker_Release(tempMk);
489 IMoniker_Release(rightMostMk);
491 IMoniker_AddRef(iface);
507 TRACE(
"(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
509 if ((ppmkComposite==
NULL)||(pmkRight==
NULL))
518 if (fOnlyIfNotGeneric)
532 TRACE(
"(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
534 if (ppenumMoniker ==
NULL)
551 TRACE(
"(%p,%p)\n",iface,pmkOtherMoniker);
553 if (pmkOtherMoniker==
NULL)
558 IMoniker_Enum(pmkOtherMoniker,
TRUE,&enumMoniker1);
560 if (enumMoniker1==
NULL)
563 IMoniker_Enum(iface,
TRUE,&enumMoniker2);
567 res1=IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL);
568 res2=IEnumMoniker_Next(enumMoniker2,1,&tempMk2,
NULL);
571 done = (
res = IMoniker_IsEqual(tempMk1,tempMk2)) ==
S_FALSE;
580 IMoniker_Release(tempMk1);
583 IMoniker_Release(tempMk2);
586 IEnumMoniker_Release(enumMoniker1);
587 IEnumMoniker_Release(enumMoniker2);
602 TRACE(
"(%p,%p)\n",iface,pdwHash);
607 res = IMoniker_Enum(iface,
TRUE,&enumMoniker);
613 while(IEnumMoniker_Next(enumMoniker,1,&tempMk,
NULL)==
S_OK){
614 res = IMoniker_Hash(tempMk, &tempHash);
617 *pdwHash = *pdwHash ^ tempHash;
619 IMoniker_Release(tempMk);
622 IEnumMoniker_Release(enumMoniker);
636 IMoniker *tempMk,*antiMk,*rightMostMk;
639 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
642 if (pmkToLeft!=
NULL){
646 res = IMoniker_IsRunning(tempMk,pbc,
NULL,pmkNewlyRunning);
648 IMoniker_Release(tempMk);
656 if (pmkNewlyRunning!=
NULL)
658 if (IMoniker_IsEqual(iface,pmkNewlyRunning)==
S_OK)
674 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
679 res = IRunningObjectTable_IsRunning(
rot,iface);
680 IRunningObjectTable_Release(
rot);
687 IMoniker_Enum(iface,
FALSE,&enumMoniker);
688 IEnumMoniker_Next(enumMoniker,1,&rightMostMk,
NULL);
689 IEnumMoniker_Release(enumMoniker);
692 res=IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
693 IMoniker_Release(antiMk);
695 res=IMoniker_IsRunning(rightMostMk,pbc,tempMk,pmkNewlyRunning);
697 IMoniker_Release(tempMk);
698 IMoniker_Release(rightMostMk);
713 IMoniker *tempMk,*antiMk,*rightMostMk,*leftMk;
716 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pCompositeTime);
718 if (pCompositeTime==
NULL)
729 res = IMoniker_ComposeWith(pmkToLeft, iface,
FALSE, &leftMk);
733 res = IBindCtx_GetRunningObjectTable(pbc,&
rot);
736 IMoniker_Release(leftMk);
740 if (IRunningObjectTable_GetTimeOfLastChange(
rot,leftMk,pCompositeTime)==
S_OK)
742 IMoniker_Release(leftMk);
749 IMoniker_Enum(iface,
FALSE, &enumMoniker);
750 IEnumMoniker_Next(enumMoniker, 1, &rightMostMk,
NULL);
751 IEnumMoniker_Release(enumMoniker);
754 res = IMoniker_ComposeWith(leftMk, antiMk, 0, &tempMk);
755 IMoniker_Release(antiMk);
757 res = IMoniker_GetTimeOfLastChange(rightMostMk, pbc, tempMk, pCompositeTime);
759 IMoniker_Release(tempMk);
760 IMoniker_Release(rightMostMk);
763 IMoniker_Release(leftMk);
775 IMoniker *tempMk,*antiMk,*rightMostMk,*tempInvMk,*rightMostInvMk;
778 TRACE(
"(%p,%p)\n",iface,ppmk);
792 res=IMoniker_ComposeWith(iface,antiMk,
FALSE,&tempMk);
793 IMoniker_Release(antiMk);
799 return IMoniker_Inverse(iface,ppmk);
803 IMoniker_Enum(iface,
FALSE,&enumMoniker);
804 IEnumMoniker_Next(enumMoniker,1,&rightMostMk,
NULL);
805 IEnumMoniker_Release(enumMoniker);
807 IMoniker_Inverse(rightMostMk,&rightMostInvMk);
812 IMoniker_Release(tempMk);
813 IMoniker_Release(rightMostMk);
814 IMoniker_Release(tempInvMk);
815 IMoniker_Release(rightMostInvMk);
830 IMoniker *tempMk1,*tempMk2,*mostLeftMk1,*mostLeftMk2;
838 if (ppmkPrefix==
NULL)
846 IMoniker_IsSystemMoniker(pmkOther,&mkSys);
848 if(mkSys==MKSYS_GENERICCOMPOSITE){
850 IMoniker_Enum(iface,
TRUE,&enumMoniker1);
851 IMoniker_Enum(pmkOther,
TRUE,&enumMoniker2);
855 res1=IEnumMoniker_Next(enumMoniker1,1,&mostLeftMk1,
NULL);
856 res2=IEnumMoniker_Next(enumMoniker2,1,&mostLeftMk2,
NULL);
862 IMoniker_AddRef(iface);
865 else if ((res1==
S_OK) && (res2==
S_OK)){
867 if (IMoniker_IsEqual(mostLeftMk1,mostLeftMk2)==
S_OK)
875 else if (res1==
S_OK){
879 *ppmkPrefix=pmkOther;
890 IEnumMoniker_Release(enumMoniker1);
891 IEnumMoniker_Release(enumMoniker2);
897 IEnumMoniker_Reset(enumMoniker1);
899 IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL);
905 IEnumMoniker_Next(enumMoniker1,1,&tempMk2,
NULL);
907 IMoniker_Release(tempMk1);
908 IMoniker_Release(tempMk2);
911 for(
i=0;
i<nbCommonMk;
i++){
913 IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL);
917 IMoniker_Release(*ppmkPrefix);
919 IMoniker_Release(tempMk1);
936 IMoniker_Enum(iface,
TRUE,&enumMoniker1);
938 IEnumMoniker_Next(enumMoniker1,1,&mostLeftMk1,
NULL);
940 if (IMoniker_IsEqual(pmkOther,mostLeftMk1)==
S_OK){
942 *ppmkPrefix=pmkOther;
968 IMoniker_Enum(pGenMk,
TRUE,&enumMoniker1);
970 IMoniker_IsSystemMoniker(commonMk,&mkSys);
972 if (mkSys==MKSYS_GENERICCOMPOSITE){
974 IMoniker_Enum(commonMk,
TRUE,&enumMoniker2);
977 res1=IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL);
978 res2=IEnumMoniker_Next(enumMoniker2,1,&tempMk2,
NULL);
986 IMoniker_Release(tempMk1);
987 IMoniker_Release(tempMk2);
991 IMoniker_Release(tempMk1);
992 IMoniker_Release(tempMk2);
996 IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL);
997 IMoniker_Release(tempMk1);
1001 IEnumMoniker_Clone(enumMoniker1,&enumMoniker3);
1003 for(;IEnumMoniker_Next(enumMoniker3,1,&tempMk,
NULL)==
S_OK;nbRestMk++)
1005 IMoniker_Release(tempMk);
1011 IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL);
1020 IEnumMoniker_Next(enumMoniker1,1,&tempMk2,
NULL);
1024 IMoniker_Release(tempMk1);
1026 IMoniker_Release(tempMk2);
1028 while(IEnumMoniker_Next(enumMoniker1,1,&tempMk1,
NULL)==
S_OK){
1032 IMoniker_Release(tempMk1);
1034 IMoniker_Release(*restMk);
1049 IMoniker *restOtherMk=0,*restThisMk=0,*invRestThisMk=0,*commonMk=0;
1051 TRACE(
"(%p,%p,%p)\n",iface,pmkOther,ppmkRelPath);
1053 if (ppmkRelPath==
NULL)
1063 res=IMoniker_CommonPrefixWith(iface,pmkOther,&commonMk);
1068 *ppmkRelPath=pmkOther;
1069 IMoniker_AddRef(pmkOther);
1080 IMoniker_Inverse(restThisMk,ppmkRelPath);
1081 IMoniker_Release(restThisMk);
1087 *ppmkRelPath=restOtherMk;
1088 IMoniker_AddRef(restOtherMk);
1094 IMoniker_Inverse(restThisMk,&invRestThisMk);
1095 IMoniker_Release(restThisMk);
1097 IMoniker_Release(invRestThisMk);
1098 IMoniker_Release(restOtherMk);
1115 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,ppszDisplayName);
1117 if (ppszDisplayName==
NULL)
1122 if (*ppszDisplayName==
NULL)
1128 **ppszDisplayName=0;
1130 IMoniker_Enum(iface,
TRUE,&enumMoniker);
1132 while(IEnumMoniker_Next(enumMoniker,1,&tempMk,
NULL)==
S_OK){
1134 IMoniker_GetDisplayName(tempMk,pbc,
NULL,&tempStr);
1140 if (*ppszDisplayName==
NULL)
1143 lstrcatW(*ppszDisplayName,tempStr);
1146 IMoniker_Release(tempMk);
1149 IEnumMoniker_Release(enumMoniker);
1163 IMoniker *tempMk,*rightMostMk,*antiMk;
1168 IMoniker_Enum(iface,
FALSE,&enumMoniker);
1169 IEnumMoniker_Next(enumMoniker,1,&rightMostMk,
NULL);
1170 IEnumMoniker_Release(enumMoniker);
1174 IMoniker_ComposeWith(iface,antiMk,0,&tempMk);
1175 IMoniker_Release(antiMk);
1177 return IMoniker_ParseDisplayName(rightMostMk,pbc,tempMk,pszDisplayName,pchEaten,ppmkOut);
1186 TRACE(
"(%p,%p)\n",iface,pwdMksys);
1191 (*pwdMksys)=MKSYS_GENERICCOMPOSITE;
1218 TRACE(
"(%p)\n",iface);
1220 return IMoniker_AddRef(&
This->IMoniker_iface);
1230 TRACE(
"(%p)\n",iface);
1232 return IMoniker_Release(&
This->IMoniker_iface);
1251 hr = IMoniker_Enum(&
This->IMoniker_iface,
TRUE, &pEnumMk);
1254 while(IEnumMoniker_Next(pEnumMk, 1, &pmk,
NULL) ==
S_OK)
1257 hr = IMoniker_QueryInterface(pmk, &IID_IROTData, (
void **)&pROTData);
1259 ERR(
"moniker doesn't support IROTData interface\n");
1264 hr = IROTData_GetComparisonData(pROTData,
NULL, 0, &cbData);
1265 IROTData_Release(pROTData);
1272 ERR(
"IROTData_GetComparisonData failed with error 0x%08x\n",
hr);
1275 IMoniker_Release(pmk);
1279 IEnumMoniker_Release(pEnumMk);
1286 IEnumMoniker_Reset(pEnumMk);
1290 cbMax -=
sizeof(
CLSID);
1292 while (IEnumMoniker_Next(pEnumMk, 1, &pmk,
NULL) ==
S_OK)
1295 hr = IMoniker_QueryInterface(pmk, &IID_IROTData, (
void **)&pROTData);
1297 ERR(
"moniker doesn't support IROTData interface\n");
1302 hr = IROTData_GetComparisonData(pROTData,
pbData, cbMax, &cbData);
1303 IROTData_Release(pROTData);
1310 ERR(
"IROTData_GetComparisonData failed with error 0x%08x\n",
hr);
1313 IMoniker_Release(pmk);
1317 IEnumMoniker_Release(pEnumMk);
1322 IEnumMoniker_Release(pEnumMk);
1340 TRACE(
"(%p)\n",iface);
1349 TRACE(
"(%p)\n",iface);
1356 void* pvDestContext,
DWORD mshlflags,
CLSID* pCid)
1361 dwDestContext, pvDestContext, mshlflags, pCid);
1363 return IMoniker_GetClassID(&
This->IMoniker_iface, pCid);
1368 void* pvDestContext,
DWORD mshlflags,
DWORD* pSize)
1377 dwDestContext, pvDestContext, mshlflags, pSize);
1381 hr = IMoniker_Enum(&
This->IMoniker_iface,
TRUE, &pEnumMk);
1384 hr = IMoniker_GetSizeMax(&
This->IMoniker_iface, &
size);
1386 while (IEnumMoniker_Next(pEnumMk, 1, &pmk,
NULL) ==
S_OK)
1394 IMoniker_Release(pmk);
1398 IEnumMoniker_Release(pEnumMk);
1403 IEnumMoniker_Release(pEnumMk);
1410 void* pvDestContext,
DWORD mshlflags)
1419 dwDestContext, pvDestContext, mshlflags);
1421 hr = IMoniker_Enum(&
This->IMoniker_iface,
TRUE, &pEnumMk);
1424 while (IEnumMoniker_Next(pEnumMk, 1, &pmk,
NULL) ==
S_OK)
1428 IMoniker_Release(pmk);
1432 IEnumMoniker_Release(pEnumMk);
1439 FIXME(
"moniker count of %d not supported\n",
i);
1441 IEnumMoniker_Release(pEnumMk);
1457 if (
This->tabLastIndex + 2 >
This->tabSize)
1469 ERR(
"couldn't unmarshal moniker, hr = 0x%08x\n",
hr);
1472 This->tabLastIndex++;
1476 ERR(
"couldn't unmarshal moniker, hr = 0x%08x\n",
hr);
1479 This->tabLastIndex++;
1481 return IMoniker_QueryInterface(&
This->IMoniker_iface,
riid,
ppv);
1486 TRACE(
"(%p)\n", pStm);
1527 IEnumMoniker_AddRef(iface);
1563 IMoniker_Release(
This->tabMoniker[
i]);
1582 for(
i=0;((
This->currentPos <
This->tabSize) && (
i < celt));
i++)
1584 rgelt[
i]=
This->tabMoniker[
This->currentPos++];
1585 IMoniker_AddRef(rgelt[
i]);
1588 if (pceltFethed!=
NULL)
1605 if ((
This->currentPos+celt) >=
This->tabSize)
1608 This->currentPos+=celt;
1660 if (currentPos > tabSize)
1665 if (newEnumMoniker == 0)
1670 newEnumMoniker->
ref = 1;
1672 newEnumMoniker->
tabSize=tabSize;
1683 for (
i=0;
i<tabSize;
i++){
1686 IMoniker_AddRef(tabMoniker[
i]);
1689 for (
i = tabSize;
i > 0;
i--){
1691 newEnumMoniker->
tabMoniker[tabSize-
i]=tabMoniker[
i - 1];
1692 IMoniker_AddRef(tabMoniker[
i - 1]);
1772 TRACE(
"(%p,%p,%p)\n",
This,pmkFirst,pmkRest);
1781 This->tabLastIndex=0;
1789 if (!pmkFirst && !pmkRest)
1791 *ppMoniker = &
This->IMoniker_iface;
1795 IMoniker_IsSystemMoniker(pmkFirst,&mkSys);
1798 if (mkSys!=MKSYS_GENERICCOMPOSITE){
1800 This->tabMoniker[(
This->tabLastIndex)++]=pmkFirst;
1801 IMoniker_AddRef(pmkFirst);
1805 IMoniker_Enum(pmkFirst,
TRUE,&enumMoniker);
1807 while(IEnumMoniker_Next(enumMoniker,1,&
This->tabMoniker[
This->tabLastIndex],
NULL)==
S_OK){
1810 if (++
This->tabLastIndex==
This->tabSize){
1817 for (
i = 0;
i <
This->tabLastIndex;
i++)
1818 IMoniker_Release(tab_moniker[
i]);
1826 IEnumMoniker_Release(enumMoniker);
1831 IMoniker_IsSystemMoniker(pmkRest,&mkSys);
1833 if (mkSys!=MKSYS_GENERICCOMPOSITE){
1837 res=IMoniker_ComposeWith(
This->tabMoniker[
This->tabLastIndex-1],pmkRest,
TRUE,&tempMk);
1842 This->tabMoniker[
This->tabLastIndex]=pmkRest;
1844 This->tabLastIndex++;
1846 IMoniker_AddRef(pmkRest);
1848 else if (tempMk==
NULL){
1851 IMoniker_Release(
This->tabMoniker[
This->tabLastIndex-1]);
1853 This->tabLastIndex--;
1858 IMoniker_Release(
This->tabMoniker[
This->tabLastIndex-1]);
1860 This->tabMoniker[
This->tabLastIndex-1]=tempMk;
1862 for (
i = 0;
i <
This->tabLastIndex;
i++)
1863 IMoniker_Release(
This->tabMoniker[
i]);
1870 if (
This->tabLastIndex==
This->tabSize){
1878 for (
i = 0;
i <
This->tabLastIndex;
i++)
1879 IMoniker_Release(tab_moniker[
i]);
1892 IMoniker_Enum(pmkRest,
TRUE,&enumMoniker);
1894 while(IEnumMoniker_Next(enumMoniker,1,&
This->tabMoniker[
This->tabLastIndex],
NULL)==
S_OK){
1896 res=IMoniker_ComposeWith(
This->tabMoniker[
This->tabLastIndex-1],
This->tabMoniker[
This->tabLastIndex],
TRUE,&tempMk);
1900 This->tabLastIndex++;
1902 else if (tempMk==
NULL){
1904 IMoniker_Release(
This->tabMoniker[
This->tabLastIndex-1]);
1905 IMoniker_Release(
This->tabMoniker[
This->tabLastIndex]);
1906 This->tabLastIndex--;
1910 IMoniker_Release(
This->tabMoniker[
This->tabLastIndex-1]);
1912 This->tabMoniker[
This->tabLastIndex-1]=tempMk;
1915 if (
This->tabLastIndex==
This->tabSize){
1923 for (
i = 0;
i <
This->tabLastIndex;
i++)
1924 IMoniker_Release(tab_moniker[
i]);
1932 IEnumMoniker_Release(enumMoniker);
1936 if (
This->tabLastIndex == 1)
1938 *ppMoniker =
This->tabMoniker[0];
1939 IMoniker_AddRef(*ppMoniker);
1940 IMoniker_Release(&
This->IMoniker_iface);
1943 *ppMoniker = &
This->IMoniker_iface;
1957 TRACE(
"(%p,%p,%p)\n",pmkFirst,pmkRest,ppmkComposite);
1959 if (ppmkComposite==
NULL)
1964 if (pmkFirst==
NULL && pmkRest!=
NULL){
1966 *ppmkComposite=pmkRest;
1967 IMoniker_AddRef(pmkRest);
1970 else if (pmkFirst!=
NULL && pmkRest==
NULL){
1971 *ppmkComposite=pmkFirst;
1972 IMoniker_AddRef(pmkFirst);
1975 else if (pmkFirst==
NULL && pmkRest==
NULL)
1983 hr = IMoniker_QueryInterface(
moniker,&IID_IMoniker,(
void**)ppmkComposite);
1995 FIXME(
"(),stub!\n");
2016 hr = IMoniker_QueryInterface(pMoniker,
riid,
ppv);
2017 IMoniker_Release(pMoniker);
HRESULT WINAPI CreateAntiMoniker(IMoniker **ppmk)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static HRESULT CompositeMonikerImpl_Construct(IMoniker **ppMoniker, IMoniker *pmkFirst, IMoniker *pmkRest)
static CompositeMonikerImpl * impl_from_IMarshal(IMarshal *iface)
static HRESULT WINAPI CompositeMonikerMarshalImpl_DisconnectObject(IMarshal *iface, DWORD dwReserved)
static HRESULT WINAPI CompositeMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
static CompositeMonikerImpl * impl_from_IMoniker(IMoniker *iface)
static HRESULT WINAPI CompositeMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
static HRESULT WINAPI CompositeMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
static ULONG WINAPI CompositeMonikerImpl_Release(IMoniker *iface)
static const IMonikerVtbl VT_CompositeMonikerImpl
static const IMarshalVtbl VT_MarshalImpl
HRESULT WINAPI MonikerCommonPrefixWith(IMoniker *pmkThis, IMoniker *pmkOther, IMoniker **ppmkCommon)
static HRESULT WINAPI EnumMonikerImpl_Reset(IEnumMoniker *iface)
static HRESULT WINAPI CompositeMonikerROTDataImpl_GetComparisonData(IROTData *iface, BYTE *pbData, ULONG cbMax, ULONG *pcbData)
static EnumMonikerImpl * impl_from_IEnumMoniker(IEnumMoniker *iface)
static HRESULT WINAPI CompositeMonikerImpl_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty)
static ULONG WINAPI EnumMonikerImpl_Release(IEnumMoniker *iface)
static HRESULT WINAPI CompositeMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
static HRESULT WINAPI EnumMonikerImpl_Clone(IEnumMoniker *iface, IEnumMoniker **ppenum)
static CompositeMonikerImpl * impl_from_IROTData(IROTData *iface)
static HRESULT WINAPI CompositeMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkRelPath)
static HRESULT WINAPI CompositeMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *pwdMksys)
static ULONG WINAPI CompositeMonikerMarshalImpl_AddRef(IMarshal *iface)
static HRESULT WINAPI CompositeMonikerROTDataImpl_QueryInterface(IROTData *iface, REFIID riid, VOID **ppvObject)
static HRESULT WINAPI CompositeMonikerMarshalImpl_UnmarshalInterface(IMarshal *iface, IStream *pStm, REFIID riid, void **ppv)
struct EnumMonikerImpl EnumMonikerImpl
static HRESULT WINAPI CompositeMonikerImpl_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
static HRESULT WINAPI EnumMonikerImpl_Skip(IEnumMoniker *iface, ULONG celt)
static HRESULT WINAPI CompositeMonikerMarshalImpl_QueryInterface(IMarshal *iface, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI CompositeMonikerMarshalImpl_MarshalInterface(IMarshal *iface, IStream *pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags)
static HRESULT WINAPI CompositeMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
static ULONG WINAPI CompositeMonikerImpl_AddRef(IMoniker *iface)
HRESULT WINAPI CompositeMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv)
static ULONG WINAPI CompositeMonikerMarshalImpl_Release(IMarshal *iface)
static const IROTDataVtbl VT_ROTDataImpl
static HRESULT WINAPI EnumMonikerImpl_Next(IEnumMoniker *iface, ULONG celt, IMoniker **rgelt, ULONG *pceltFethed)
static ULONG WINAPI CompositeMonikerROTDataImpl_AddRef(IROTData *iface)
static void CompositeMonikerImpl_ReleaseMonikersInTable(CompositeMonikerImpl *This)
static HRESULT WINAPI CompositeMonikerImpl_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pCompositeTime)
static VOID GetAfterCommonPrefix(IMoniker *pGenMk, IMoniker *commonMk, IMoniker **restMk)
static HRESULT WINAPI CompositeMonikerImpl_Hash(IMoniker *iface, DWORD *pdwHash)
static HRESULT WINAPI CompositeMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
static HRESULT WINAPI CompositeMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
static HRESULT WINAPI CompositeMonikerImpl_GetClassID(IMoniker *iface, CLSID *pClassID)
static HRESULT WINAPI CompositeMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
static HRESULT WINAPI CompositeMonikerImpl_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker)
static HRESULT WINAPI CompositeMonikerImpl_Load(IMoniker *iface, IStream *pStm)
static HRESULT WINAPI CompositeMonikerMarshalImpl_GetUnmarshalClass(IMarshal *iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid)
static HRESULT WINAPI CompositeMonikerImpl_IsDirty(IMoniker *iface)
static HRESULT WINAPI CompositeMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
static HRESULT WINAPI CompositeMonikerImpl_Inverse(IMoniker *iface, IMoniker **ppmk)
HRESULT WINAPI CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)
static ULONG WINAPI EnumMonikerImpl_AddRef(IEnumMoniker *iface)
static HRESULT WINAPI CompositeMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI CompositeMonikerMarshalImpl_GetMarshalSizeMax(IMarshal *iface, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize)
static HRESULT WINAPI CompositeMonikerMarshalImpl_ReleaseMarshalData(IMarshal *iface, IStream *pStm)
static HRESULT EnumMonikerImpl_CreateEnumMoniker(IMoniker **tabMoniker, ULONG tabSize, ULONG currentPos, BOOL leftToRight, IEnumMoniker **ppmk)
static HRESULT WINAPI EnumMonikerImpl_QueryInterface(IEnumMoniker *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI CompositeMonikerROTDataImpl_Release(IROTData *iface)
static const IEnumMonikerVtbl VT_EnumMonikerImpl
#define HeapFree(x, y, z)
HRESULT WINAPI CoUnmarshalInterface(IStream *pStream, REFIID riid, LPVOID *ppv)
HRESULT WINAPI CoGetMarshalSizeMax(ULONG *pulSize, REFIID riid, IUnknown *pUnk, DWORD dwDestContext, void *pvDestContext, DWORD mshlFlags)
HRESULT WINAPI CoMarshalInterface(IStream *pStream, REFIID riid, IUnknown *pUnk, DWORD dwDestContext, void *pvDestContext, DWORD mshlFlags)
HRESULT WINAPI OleLoadFromStream(IStream *pStm, REFIID iidInterface, void **ppvObj)
HRESULT WINAPI OleSaveToStream(IPersistStream *pPStm, IStream *pStm)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
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 WINAPI CoTaskMemRealloc(LPVOID pvOld, SIZE_T size)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
const GUID IID_IEnumMoniker
const GUID IID_IPersistStream
#define IsEqualIID(riid1, riid2)
IEnumMoniker IEnumMoniker_iface
#define CONTAINING_RECORD(address, type, field)
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
#define MK_S_REDUCED_TO_SELF
#define CLASS_E_NOAGGREGATION
#define STG_E_INSUFFICIENTMEMORY