26 #define NONAMELESSUNION 96 IMoniker_AddRef(iface);
135 TRACE(
"(%p,%p)\n",iface,pClassID);
140 *pClassID = CLSID_ItemMoniker;
154 TRACE(
"(%p)\n",iface);
166 DWORD delimiterLength,nameLength,lenW;
167 CHAR *itemNameA,*itemDelimiterA;
175 res=IStream_Read(pStm,&delimiterLength,
sizeof(
DWORD),&bread);
176 if (bread !=
sizeof(
DWORD))
182 res=IStream_Read(pStm,itemDelimiterA,delimiterLength,&bread);
183 if (bread != delimiterLength)
191 if (!
This->itemDelimiter)
200 res=IStream_Read(pStm,&nameLength,
sizeof(
DWORD),&bread);
201 if (bread !=
sizeof(
DWORD))
207 res=IStream_Read(pStm,itemNameA,nameLength,&bread);
208 if (bread != nameLength)
234 CHAR *itemNameA,*itemDelimiterA;
248 TRACE(
"%p, %s\n", pStm, fClearDirty ?
"TRUE" :
"FALSE");
250 res=IStream_Write(pStm,&delimiterLength,
sizeof(
DWORD),
NULL);
251 res=IStream_Write(pStm,itemDelimiterA,delimiterLength *
sizeof(
CHAR),
NULL);
253 res=IStream_Write(pStm,itemNameA,nameLength *
sizeof(
CHAR),
NULL);
270 TRACE(
"(%p,%p)\n",iface,pcbSize);
277 pcbSize->
u.LowPart =
sizeof(
DWORD) +
282 pcbSize->
u.HighPart=0;
311 res=IMoniker_BindToObject(pmkToLeft,pbc,
NULL,&refid,(
void**)&poic);
315 res=IOleItemContainer_GetObject(poic,
This->itemName,BINDSPEED_MODERATE,pbc,
riid,ppvResult);
317 IOleItemContainer_Release(poic);
347 res=IOleItemContainer_GetObjectStorage(poic,
This->itemName,pbc,
riid,ppvResult);
349 IOleItemContainer_Release(poic);
360 DWORD dwReduceHowFar,
364 TRACE(
"(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced);
366 if (ppmkReduced==
NULL)
380 BOOL fOnlyIfNotGeneric,
389 TRACE(
"(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
391 if ((ppmkComposite==
NULL)||(pmkRight==
NULL))
396 IMoniker_IsSystemMoniker(pmkRight,&mkSys);
399 if(mkSys==MKSYS_ANTIMONIKER)
406 if(mkSys==MKSYS_GENERICCOMPOSITE){
408 res=IMoniker_Enum(pmkRight,
TRUE,&penumMk);
413 res=IEnumMoniker_Next(penumMk,1,&pmostLeftMk,
NULL);
415 IMoniker_IsSystemMoniker(pmostLeftMk,&mkSys2);
417 if(mkSys2==MKSYS_ANTIMONIKER){
419 IMoniker_Release(pmostLeftMk);
421 tempMkComposite=iface;
422 IMoniker_AddRef(iface);
424 while(IEnumMoniker_Next(penumMk,1,&pmostLeftMk,
NULL)==
S_OK){
428 IMoniker_Release(tempMkComposite);
429 IMoniker_Release(pmostLeftMk);
431 tempMkComposite=*ppmkComposite;
432 IMoniker_AddRef(tempMkComposite);
443 if (!fOnlyIfNotGeneric)
455 TRACE(
"(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
457 if (ppenumMoniker ==
NULL)
460 *ppenumMoniker =
NULL;
476 TRACE(
"(%p,%p)\n",iface,pmkOtherMoniker);
478 if (!pmkOtherMoniker)
return S_FALSE;
515 for (
i =
len ;
i > 0;
i--)
536 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
541 if ((pmkNewlyRunning!=
NULL)&&(IMoniker_IsEqual(pmkNewlyRunning,iface)==
S_OK))
547 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
552 res = IRunningObjectTable_IsRunning(
rot,iface);
554 IRunningObjectTable_Release(
rot);
566 res=IOleItemContainer_IsRunning(poic,
This->itemName);
568 IOleItemContainer_Release(poic);
587 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pItemTime);
606 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
608 IMoniker_Release(compositeMk);
612 if (IRunningObjectTable_GetTimeOfLastChange(
rot,compositeMk,pItemTime)!=
S_OK)
614 res=IMoniker_GetTimeOfLastChange(pmkToLeft,pbc,
NULL,pItemTime);
616 IMoniker_Release(compositeMk);
627 TRACE(
"(%p,%p)\n",iface,ppmk);
642 TRACE(
"(%p,%p)\n", pmkOther, ppmkPrefix);
644 IMoniker_IsSystemMoniker(pmkOther,&mkSys);
648 if((mkSys==MKSYS_ITEMMONIKER) && (IMoniker_IsEqual(iface,pmkOther)==
S_OK) ){
652 IMoniker_AddRef(iface);
667 TRACE(
"(%p,%p,%p)\n",iface,pmOther,ppmkRelPath);
669 if (ppmkRelPath==
NULL)
687 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,ppszDisplayName);
689 if (ppszDisplayName==
NULL)
692 if (pmkToLeft!=
NULL){
698 if (*ppszDisplayName==
NULL)
744 res=IParseDisplayName_ParseDisplayName(ppdn,pbc,
displayName,pchEaten,ppmkOut);
746 IOleItemContainer_Release(poic);
747 IParseDisplayName_Release(ppdn);
758 TRACE(
"(%p,%p)\n",iface,pwdMksys);
763 (*pwdMksys)=MKSYS_ITEMMONIKER;
789 TRACE(
"(%p)\n",iface);
801 TRACE(
"(%p)\n",iface);
830 *pszItemDelimiter = *
This->itemDelimiter;
832 pszItemName = pszItemDelimiter + 1;
885 int sizeStr1=
lstrlenW(lpszItem), sizeStr2;
886 static const OLECHAR emptystr[1];
903 FIXME(
"lpszDelim is NULL. Using empty string which is possibly wrong.\n");
905 delim = lpszDelim ? lpszDelim : emptystr;
909 if (!
This->itemDelimiter) {
924 if (
This->pMarshal) IUnknown_Release(
This->pMarshal);
static ItemMonikerImpl * impl_from_IMoniker(IMoniker *iface)
static HRESULT WINAPI ItemMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
#define MK_S_REDUCED_TO_SELF
HRESULT WINAPI MonikerCommonPrefixWith(IMoniker *pmkThis, IMoniker *pmkOther, IMoniker **ppmkCommon)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
#define WideCharToMultiByte
struct _ULARGE_INTEGER::@3897 u
static ULONG WINAPI ItemMonikerImpl_Release(IMoniker *iface)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
const GUID IID_IOleItemContainer
static HRESULT ItemMonikerImpl_Construct(ItemMonikerImpl *This, LPCOLESTR lpszDelim, LPCOLESTR lpszItem)
static HRESULT WINAPI ItemMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
static HRESULT WINAPI ItemMonikerImpl_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pItemTime)
static ULONG WINAPI ItemMonikerImpl_AddRef(IMoniker *iface)
WINE_DEFAULT_DEBUG_CHANNEL(ole)
#define STG_E_INSUFFICIENTMEMORY
static HRESULT WINAPI ItemMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
static const IMonikerVtbl VT_ItemMonikerImpl
static ULONG WINAPI ItemMonikerROTDataImpl_AddRef(IROTData *iface)
static HRESULT ItemMonikerImpl_Destroy(ItemMonikerImpl *iface)
GLfloat GLfloat GLfloat GLfloat h
static ULONG WINAPI ItemMonikerROTDataImpl_Release(IROTData *iface)
static HRESULT WINAPI ItemMonikerImpl_IsDirty(IMoniker *iface)
HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, IMoniker **ppmk)
static HRESULT WINAPI ItemMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
static HRESULT WINAPI ItemMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
const GUID IID_IParseDisplayName
static const WCHAR wszEmpty[]
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
static HRESULT WINAPI ItemMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
static HRESULT WINAPI ItemMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
static ItemMonikerImpl * impl_from_IROTData(IROTData *iface)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
const GUID IID_IPersistStream
static HRESULT WINAPI ItemMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *pmOther, IMoniker **ppmkRelPath)
HRESULT WINAPI CreateAntiMoniker(IMoniker **ppmk)
#define InterlockedDecrement
#define memcpy(s1, s2, n)
REFIID LPVOID * ppvObject
#define CLASS_E_NOAGGREGATION
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
static HRESULT WINAPI ItemMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
#define InterlockedIncrement
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
static HRESULT WINAPI ItemMonikerROTDataImpl_QueryInterface(IROTData *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI ItemMonikerROTDataImpl_GetComparisonData(IROTData *iface, BYTE *pbData, ULONG cbMax, ULONG *pcbData)
HRESULT MonikerMarshal_Create(IMoniker *inner, IUnknown **outer)
static const IROTDataVtbl VT_ROTDataImpl
static HRESULT WINAPI ItemMonikerImpl_GetClassID(IMoniker *iface, CLSID *pClassID)
static HRESULT WINAPI ItemMonikerImpl_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
static HRESULT WINAPI ItemMonikerImpl_Inverse(IMoniker *iface, IMoniker **ppmk)
static HRESULT WINAPI ItemMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *pwdMksys)
#define MultiByteToWideChar
static HRESULT WINAPI ItemMonikerImpl_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker)
static HRESULT WINAPI ItemMonikerImpl_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty)
struct ItemMonikerImpl ItemMonikerImpl
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
HRESULT WINAPI CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)
static HRESULT WINAPI ItemMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
HRESULT WINAPI ItemMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv)
static HRESULT WINAPI ItemMonikerImpl_Load(IMoniker *iface, IStream *pStm)
#define IsEqualCLSID(rclsid1, rclsid2)
static HRESULT WINAPI ItemMonikerImpl_Hash(IMoniker *iface, DWORD *pdwHash)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define HeapFree(x, y, z)
#define IsEqualIID(riid1, riid2)
static HRESULT WINAPI ItemMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
_In_ DWORD _Out_writes_bytes_to_opt_ pcbData void _Inout_ DWORD * pcbData
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData