27 #define NONAMELESSUNION 106 IMoniker_AddRef(iface);
119 TRACE(
"(%p)\n",iface);
133 TRACE(
"(%p)\n",iface);
149 TRACE(
"(%p,%p)\n",iface,pClassID);
154 *pClassID = CLSID_FileMoniker;
170 TRACE(
"(%p)\n",iface);
190 DWORD dwbuffer, bytesA, bytesW,
len;
194 TRACE(
"(%p,%p)\n",iface,pStm);
197 res=IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
198 if (bread!=
sizeof(
WORD))
200 WARN(
"Couldn't read 0 word\n");
205 res=IStream_Read(pStm,&bytesA,
sizeof(
DWORD),&bread);
206 if (bread !=
sizeof(
DWORD))
208 WARN(
"Couldn't read file string length\n");
220 res=IStream_Read(pStm,filePathA,bytesA,&bread);
223 WARN(
"Couldn't read file path string\n");
228 IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
229 if (bread !=
sizeof(
WORD))
231 WARN(
"Couldn't read unknown value\n");
236 IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
237 if (bread !=
sizeof(
WORD))
239 WARN(
"Couldn't read DEAD constant\n");
245 res=IStream_Read(pStm,&dwbuffer,
sizeof(
DWORD),&bread);
246 if (bread!=
sizeof(
DWORD))
248 WARN(
"Couldn't read 0 padding\n");
253 res=IStream_Read(pStm,&dwbuffer,
sizeof(
DWORD),&bread);
254 if (bread!=
sizeof(
DWORD))
279 res=IStream_Read(pStm,&dwbuffer,
sizeof(
DWORD),&bread);
280 if (bread!=
sizeof(
DWORD) || dwbuffer!=bytesW)
283 res=IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
284 if (bread!=
sizeof(
WORD) || wbuffer!=0x3)
294 res=IStream_Read(pStm,filePathW,bytesW,&bread);
303 This->filePathName=filePathW;
351 static const WORD FFFF = 0xFFFF;
354 static const WORD THREE = 0x3;
357 BOOL bUsedDefault, bWriteWide;
359 TRACE(
"(%p,%p,%d)\n",iface,pStm,fClearDirty);
378 res=IStream_Write(pStm,filePathA,bytesA,
NULL);
403 bWriteWide = (bUsedDefault || (
len > 0 && filePathW[
len-1]==
'\\' ));
435 return IStream_Write(pStm,filePathW,bytesW,
NULL);
446 TRACE(
"(%p,%p)\n",iface,pcbSize);
454 pcbSize->
u.LowPart = 0x38 + 4 *
lstrlenW(
This->filePathName);
455 pcbSize->
u.HighPart = 0;
467 if (
This->pMarshal) IUnknown_Release(
This->pMarshal);
496 res=IBindCtx_GetRunningObjectTable(pbc,&prot);
500 res = IRunningObjectTable_GetObject(prot,iface,&pObj);
514 IUnknown_AddRef(pObj);
526 res=IMoniker_BindToObject(pmkToLeft,pbc,
NULL,&IID_IClassActivator,(
void**)&
pca);
540 IUnknown_AddRef(pObj);
564 res= IUnknown_QueryInterface(pObj,
riid,ppvResult);
566 IBindCtx_RegisterObjectBound(pbc,*ppvResult);
568 IUnknown_Release(pObj);
572 IRunningObjectTable_Release(prot);
575 IPersistFile_Release(ppf);
578 IClassActivator_Release(
pca);
581 IClassFactory_Release(pcf);
599 if (pmkToLeft==
NULL){
604 IMoniker_GetDisplayName(iface,pbc,pmkToLeft,&filePath);
635 TRACE(
"(%p,%p,%d,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced);
637 if (ppmkReduced==
NULL)
640 IMoniker_AddRef(iface);
651 for (
i=0; stringTable[
i]!=
NULL;
i++)
664 LPOLESTR str1=0,str2=0,*strDec1=0,*strDec2=0,newStr=0;
665 static const WCHAR twoPoint[]={
'.',
'.',0};
666 static const WCHAR bkSlash[]={
'\\',0};
668 int i=0,
j=0,lastIdx1=0,lastIdx2=0;
671 TRACE(
"(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
673 if (ppmkComposite==
NULL)
681 IMoniker_IsSystemMoniker(pmkRight,&mkSys);
684 if(mkSys==MKSYS_FILEMONIKER){
688 IMoniker_GetDisplayName(iface,
bind,
NULL,&str1);
689 IMoniker_GetDisplayName(pmkRight,
bind,
NULL,&str2);
695 if ((lastIdx1==-1 && lastIdx2>-1)||(lastIdx1==1 &&
wcscmp(strDec1[0],twoPoint)==0))
698 if(
wcscmp(strDec1[lastIdx1],bkSlash)==0)
702 for(
i=0; ( (lastIdx1>=0) && (strDec2[
i]!=
NULL) && (
wcscmp(strDec2[
i],twoPoint)==0) );
i+=2){
712 for(*newStr=0,
j=0;
j<=lastIdx1;
j++)
715 if ((strDec2[
i]==
NULL && lastIdx1>-1 && lastIdx2>-1) ||
wcscmp(strDec2[
i],bkSlash)!=0)
718 for(
j=
i;
j<=lastIdx2;
j++)
738 else if(mkSys==MKSYS_ANTIMONIKER){
743 else if (fOnlyIfNotGeneric){
759 TRACE(
"(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
761 if (ppenumMoniker ==
NULL)
764 *ppenumMoniker =
NULL;
781 TRACE(
"(%p,%p)\n",iface,pmkOtherMoniker);
783 if (pmkOtherMoniker==
NULL)
786 IMoniker_GetClassID(pmkOtherMoniker,&
clsid);
801 IBindCtx_Release(
bind);
823 for (
i =
len ;
i > 0;
i--) {
824 h = (
h * 37) +
val[off++];
830 h = (
h * 39) +
val[off];
849 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
851 if ( (pmkNewlyRunning!=
NULL) && (IMoniker_IsEqual(pmkNewlyRunning,iface)==
S_OK) )
857 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
862 res = IRunningObjectTable_IsRunning(
rot,iface);
864 IRunningObjectTable_Release(
rot);
881 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pFileTime);
889 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
894 res= IRunningObjectTable_GetTimeOfLastChange(
rot,iface,pFileTime);
901 *pFileTime=
info.ftLastWriteTime;
913 TRACE(
"(%p,%p)\n",iface,ppmk);
933 if (ppmkPrefix==
NULL)
942 IMoniker_IsSystemMoniker(pmkOther,&mkSys);
943 if (mkSys != MKSYS_FILEMONIKER)
951 ret = IMoniker_GetDisplayName(iface, bindctx,
NULL, &pathThis);
955 ret = IMoniker_GetDisplayName(pmkOther, bindctx,
NULL, &pathOther);
971 if (nb1 == 0 || nb2 == 0) {
983 for(sameIdx=0; ( (stringTable1[sameIdx]!=
NULL) &&
984 (stringTable2[sameIdx]!=
NULL) &&
985 (
lstrcmpiW(stringTable1[sameIdx],stringTable2[sameIdx])==0)); sameIdx++);
987 if (sameIdx > 1 && *stringTable1[0]==
'\\' && *stringTable2[1]==
'\\'){
988 machineNameCase =
TRUE;
990 for(
i=2;
i<sameIdx;
i++)
991 if( (*stringTable1[
i]==
'\\') && (
i+1 < sameIdx) && (*stringTable1[
i+1]==
'\\') ){
992 machineNameCase =
FALSE;
997 if (machineNameCase && *stringTable1[sameIdx-1]==
'\\')
1000 if (machineNameCase && (sameIdx<=3) && (nb1 > 3 || nb2 > 3) )
1004 for (
i = 0;
i < sameIdx;
i++)
1010 IBindCtx_Release(bindctx);
1025 static const WCHAR bSlash[] = {
'\\',0};
1027 int i=0,
j,tabIndex=0,
ret=0;
1036 if (strgtable==
NULL)
1049 if(
str[
i]==bSlash[0]){
1053 if (strgtable[tabIndex]==
NULL)
1059 lstrcpyW(strgtable[tabIndex++],bSlash);
1066 for(
j=0;
str[
i]!=0 &&
str[
i]!=bSlash[0] ;
i++,
j++)
1073 if (strgtable[tabIndex]==
NULL)
1082 strgtable[tabIndex]=
NULL;
1084 *stringTable=strgtable;
1091 for (
i = 0;
i < tabIndex;
i++)
1110 LPOLESTR str1=0,str2=0,*tabStr1=0,*tabStr2=0,relPath=0;
1111 DWORD len1=0,len2=0,sameIdx=0,
j=0;
1112 static const WCHAR back[] ={
'.',
'.',
'\\',0};
1114 TRACE(
"(%p,%p,%p)\n",iface,pmOther,ppmkRelPath);
1116 if (ppmkRelPath==
NULL)
1126 res=IMoniker_GetDisplayName(iface,
bind,
NULL,&str1);
1129 res=IMoniker_GetDisplayName(pmOther,
bind,
NULL,&str2);
1145 for(sameIdx=0; ( (tabStr1[sameIdx]!=
NULL) &&
1146 (tabStr2[sameIdx]!=
NULL) &&
1147 (
lstrcmpiW(tabStr1[sameIdx],tabStr2[sameIdx])==0)); sameIdx++);
1156 if (len2>0 && !(len1==1 && len2==1 && sameIdx==0))
1157 for(
j=sameIdx;(tabStr1[
j] !=
NULL);
j++)
1158 if (*tabStr1[
j]!=
'\\')
1162 for(
j=sameIdx;tabStr2[
j]!=
NULL;
j++)
1173 if (len1==0 || len2==0 || (len1==1 && len2==1 && sameIdx==0))
1189 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,ppszDisplayName);
1191 if (ppszDisplayName==
NULL)
1194 if (pmkToLeft!=
NULL)
1198 if (*ppszDisplayName==
NULL)
1215 FIXME(
"(%p,%p,%p,%p,%p,%p),stub!\n",iface,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut);
1225 TRACE(
"(%p,%p)\n",iface,pwdMksys);
1230 (*pwdMksys)=MKSYS_FILEMONIKER;
1259 return IMoniker_AddRef(&
This->IMoniker_iface);
1295 for (
i = 0;
i <
len;
i++)
1347 int sizeStr=
lstrlenW(lpszPathName);
1349 static const WCHAR twoPoint[]={
'.',
'.',0};
1350 static const WCHAR bkSlash[]={
'\\',0};
1373 if (
wcscmp(tabStr[0],twoPoint)!=0)
1378 if ( (
wcscmp(tabStr[
i],twoPoint)!=0) && (
wcscmp(tabStr[
i],bkSlash)!=0) ){
1384 if (
wcscmp(tabStr[
i],bkSlash)==0 &&
i<nb-1 &&
wcscmp(tabStr[
i+1],bkSlash)==0){
1392 if (
wcscmp(tabStr[nb-1],bkSlash)==0)
1397 *
This->filePathName=0;
1431 if (!newFileMoniker)
1437 hr = IMoniker_QueryInterface(&newFileMoniker->
IMoniker_iface,&IID_IMoniker,(
void**)ppmk);
1456 static const WCHAR wszSeparators[] = {
':',
'\\',
'/',
'!',0};
1458 for (
end = szDisplayName +
lstrlenW(szDisplayName);
1459 end && (
end != szDisplayName);
1465 LPWSTR file_display_name;
1467 DWORD full_path_name_len;
1468 int len =
end - szDisplayName;
1473 file_display_name[
len] =
'\0';
1482 hr = IBindCtx_GetRunningObjectTable(pbc, &
rot);
1486 IMoniker_Release(file_moniker);
1490 hr = IRunningObjectTable_IsRunning(
rot, file_moniker);
1491 IRunningObjectTable_Release(
rot);
1495 IMoniker_Release(file_moniker);
1500 TRACE(
"found running file moniker for %s\n",
debugstr_w(file_display_name));
1502 *ppmk = file_moniker;
1508 if (!full_path_name_len)
1511 IMoniker_Release(file_moniker);
1515 if (!full_path_name)
1518 IMoniker_Release(file_moniker);
1529 *ppmk = file_moniker;
1536 IMoniker_Release(file_moniker);
1557 if (!newFileMoniker)
WINE_DEFAULT_DEBUG_CHANNEL(ole)
struct FileMonikerImpl FileMonikerImpl
#define MK_S_REDUCED_TO_SELF
#define MB_ERR_INVALID_CHARS
HRESULT WINAPI MonikerCommonPrefixWith(IMoniker *pmkThis, IMoniker *pmkOther, IMoniker **ppmkCommon)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
#define WideCharToMultiByte
HRESULT WINAPI GetClassFile(LPCOLESTR filePathName, CLSID *pclsid)
interface IBindCtx * LPBC
#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
static FileMonikerImpl * impl_from_IMoniker(IMoniker *iface)
static FileMonikerImpl * impl_from_IROTData(IROTData *iface)
static HRESULT WINAPI FileMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *pwdMksys)
static HRESULT FileMonikerImpl_Destroy(FileMonikerImpl *iface)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
static const IROTDataVtbl VT_ROTDataImpl
static HRESULT WINAPI FileMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
static HRESULT WINAPI FileMonikerImpl_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker)
static ULONG WINAPI FileMonikerImpl_Release(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pFileTime)
static HRESULT WINAPI FileMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
GLfloat GLfloat GLfloat GLfloat h
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
static HRESULT WINAPI FileMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
static HRESULT WINAPI FileMonikerImpl_IsDirty(IMoniker *iface)
static ULONG WINAPI FileMonikerROTDataImpl_AddRef(IROTData *iface)
static HRESULT WINAPI FileMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *pmOther, IMoniker **ppmkRelPath)
static HRESULT WINAPI FileMonikerImpl_Load(IMoniker *iface, IStream *pStm)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
WORD WORD PSZ PSZ pszFileName
static HRESULT WINAPI FileMonikerImpl_Hash(IMoniker *iface, DWORD *pdwHash)
static WCHAR * memrpbrkW(const WCHAR *ptr, size_t n, const WCHAR *accept)
static const WCHAR wszEmpty[]
static HRESULT WINAPI FileMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
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)
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 GLint GLint j
#define MK_E_CANTOPENFILE
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
static HRESULT WINAPI FileMonikerROTDataImpl_GetComparisonData(IROTData *iface, BYTE *pbData, ULONG cbMax, ULONG *pcbData)
HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk)
HRESULT WINAPI StgOpenStorage(const OLECHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen)
static HRESULT WINAPI FileMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
#define INVALID_FILE_ATTRIBUTES
int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR **stringTable)
static HRESULT WINAPI FileMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
static HRESULT WINAPI FileMonikerROTDataImpl_QueryInterface(IROTData *iface, REFIID riid, VOID **ppvObject)
const GUID IID_IPersistStream
HRESULT WINAPI CreateAntiMoniker(IMoniker **ppmk)
#define InterlockedDecrement
#define memcpy(s1, s2, n)
static HRESULT WINAPI FileMonikerImpl_Inverse(IMoniker *iface, IMoniker **ppmk)
REFIID LPVOID * ppvObject
#define CLASS_E_NOAGGREGATION
SOCKET WSAAPI accept(IN SOCKET s, OUT LPSOCKADDR addr, OUT INT FAR *addrlen)
static const IMonikerVtbl VT_FileMonikerImpl
_Inout_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_opt_ COLORADJUSTMENT * pca
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
HRESULT WINAPI FileMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv)
#define InterlockedIncrement
static HRESULT WINAPI FileMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
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 FileMonikerImpl_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty)
HRESULT MonikerMarshal_Create(IMoniker *inner, IUnknown **outer)
#define MultiByteToWideChar
struct _ULARGE_INTEGER::@3918 u
const GUID IID_IPersistFile
HRESULT FileMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, LPDWORD pchEaten, IMoniker **ppmk)
static void free_stringtable(LPOLESTR *stringTable)
BOOL WINAPI GetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
static HRESULT WINAPI FileMonikerImpl_GetClassID(IMoniker *iface, CLSID *pClassID)
static ULONG WINAPI FileMonikerROTDataImpl_Release(IROTData *iface)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
HRESULT WINAPI CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)
static HRESULT FileMonikerImpl_Construct(FileMonikerImpl *iface, LPCOLESTR lpszPathName)
#define STGM_SHARE_DENY_WRITE
const GUID IID_IClassFactory
static ULONG WINAPI FileMonikerImpl_AddRef(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
#define IsEqualCLSID(rclsid1, rclsid2)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define HeapFree(x, y, z)
static HRESULT WINAPI FileMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
#define IsEqualIID(riid1, riid2)
static HRESULT WINAPI FileMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
_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
static HRESULT WINAPI FileMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvObject)