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)
HRESULT WINAPI CreateAntiMoniker(IMoniker **ppmk)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
const GUID IID_IClassFactory
HRESULT WINAPI MonikerCommonPrefixWith(IMoniker *pmkThis, IMoniker *pmkOther, IMoniker **ppmkCommon)
HRESULT WINAPI CreateGenericComposite(IMoniker *pmkFirst, IMoniker *pmkRest, IMoniker **ppmkComposite)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
BOOL WINAPI GetFileAttributesExW(LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI GetClassFile(LPCOLESTR filePathName, CLSID *pclsid)
HRESULT MonikerMarshal_Create(IMoniker *inner, IUnknown **outer)
HRESULT WINAPI StgOpenStorage(const OLECHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen)
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
static HRESULT WINAPI FileMonikerImpl_IsRunning(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, IMoniker *pmkNewlyRunning)
static HRESULT WINAPI FileMonikerImpl_BindToObject(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvResult)
static HRESULT WINAPI FileMonikerImpl_GetTimeOfLastChange(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, FILETIME *pFileTime)
HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, IMoniker **ppmk)
static HRESULT WINAPI FileMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
static const IMonikerVtbl VT_FileMonikerImpl
static HRESULT WINAPI FileMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
static ULONG WINAPI FileMonikerROTDataImpl_AddRef(IROTData *iface)
static ULONG WINAPI FileMonikerImpl_Release(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_Enum(IMoniker *iface, BOOL fForward, IEnumMoniker **ppenumMoniker)
static HRESULT FileMonikerImpl_Construct(FileMonikerImpl *iface, LPCOLESTR lpszPathName)
static HRESULT WINAPI FileMonikerImpl_CommonPrefixWith(IMoniker *iface, IMoniker *pmkOther, IMoniker **ppmkPrefix)
static HRESULT WINAPI FileMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten, IMoniker **ppmkOut)
static FileMonikerImpl * impl_from_IMoniker(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_Reduce(IMoniker *iface, IBindCtx *pbc, DWORD dwReduceHowFar, IMoniker **ppmkToLeft, IMoniker **ppmkReduced)
static HRESULT FileMonikerImpl_Destroy(FileMonikerImpl *iface)
static HRESULT WINAPI FileMonikerImpl_IsDirty(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_Save(IMoniker *iface, IStream *pStm, BOOL fClearDirty)
static const IROTDataVtbl VT_ROTDataImpl
static HRESULT WINAPI FileMonikerROTDataImpl_QueryInterface(IROTData *iface, REFIID riid, VOID **ppvObject)
static HRESULT WINAPI FileMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, VOID **ppvObject)
static HRESULT WINAPI FileMonikerROTDataImpl_GetComparisonData(IROTData *iface, BYTE *pbData, ULONG cbMax, ULONG *pcbData)
static HRESULT WINAPI FileMonikerImpl_Hash(IMoniker *iface, DWORD *pdwHash)
static HRESULT WINAPI FileMonikerImpl_IsSystemMoniker(IMoniker *iface, DWORD *pwdMksys)
static FileMonikerImpl * impl_from_IROTData(IROTData *iface)
static HRESULT WINAPI FileMonikerImpl_GetClassID(IMoniker *iface, CLSID *pClassID)
static HRESULT WINAPI FileMonikerImpl_IsEqual(IMoniker *iface, IMoniker *pmkOtherMoniker)
static void free_stringtable(LPOLESTR *stringTable)
static HRESULT WINAPI FileMonikerImpl_GetDisplayName(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, LPOLESTR *ppszDisplayName)
static WCHAR * memrpbrkW(const WCHAR *ptr, size_t n, const WCHAR *accept)
HRESULT FileMoniker_CreateFromDisplayName(LPBC pbc, LPCOLESTR szDisplayName, LPDWORD pchEaten, IMoniker **ppmk)
static ULONG WINAPI FileMonikerROTDataImpl_Release(IROTData *iface)
HRESULT WINAPI FileMoniker_CreateInstance(IClassFactory *iface, IUnknown *pUnk, REFIID riid, void **ppv)
static HRESULT WINAPI FileMonikerImpl_RelativePathTo(IMoniker *iface, IMoniker *pmOther, IMoniker **ppmkRelPath)
static ULONG WINAPI FileMonikerImpl_AddRef(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_Inverse(IMoniker *iface, IMoniker **ppmk)
static HRESULT WINAPI FileMonikerImpl_Load(IMoniker *iface, IStream *pStm)
int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR **stringTable)
static HRESULT WINAPI FileMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
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
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 MB_ERR_INVALID_CHARS
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
static const WCHAR wszEmpty[]
#define STGM_SHARE_DENY_WRITE
interface IBindCtx * LPBC
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
const GUID IID_IPersistFile
const GUID IID_IPersistStream
#define IsEqualIID(riid1, riid2)
#define IsEqualCLSID(rclsid1, rclsid2)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
INT WSAAPI bind(IN SOCKET s, IN CONST struct sockaddr *name, IN INT namelen)
SOCKET WSAAPI accept(IN SOCKET s, OUT LPSOCKADDR addr, OUT INT FAR *addrlen)
struct _ULARGE_INTEGER::@4132 u
#define CONTAINING_RECORD(address, type, field)
WORD WORD PSZ PSZ pszFileName
#define INVALID_FILE_ATTRIBUTES
_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
_Inout_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_opt_ COLORADJUSTMENT * pca
#define MK_S_REDUCED_TO_SELF
#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED
#define CLASS_E_NOAGGREGATION
#define MK_E_CANTOPENFILE