93 *ppvObject = &
This->IROTData_iface;
101 return IUnknown_QueryInterface(
This->pMarshal,
riid, ppvObject);
107 IMoniker_AddRef(iface);
120 TRACE(
"(%p)\n",iface);
130 TRACE(
"%p, refcount %lu.\n", iface,
ref);
148 TRACE(
"(%p,%p)\n",iface,pClassID);
153 *pClassID = CLSID_FileMoniker;
169 TRACE(
"(%p)\n",iface);
189 DWORD dwbuffer, bytesA, bytesW,
len;
193 TRACE(
"(%p,%p)\n",iface,pStm);
196 res=IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
197 if (bread!=
sizeof(
WORD))
199 WARN(
"Couldn't read 0 word\n");
204 res=IStream_Read(pStm,&bytesA,
sizeof(
DWORD),&bread);
205 if (bread !=
sizeof(
DWORD))
207 WARN(
"Couldn't read file string length\n");
212 filePathA =
malloc(bytesA);
219 res=IStream_Read(pStm,filePathA,bytesA,&bread);
222 WARN(
"Couldn't read file path string\n");
227 IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
228 if (bread !=
sizeof(
WORD))
230 WARN(
"Couldn't read unknown value\n");
235 IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
236 if (bread !=
sizeof(
WORD))
238 WARN(
"Couldn't read DEAD constant\n");
244 res=IStream_Read(pStm,&dwbuffer,
sizeof(
DWORD),&bread);
245 if (bread!=
sizeof(
DWORD))
247 WARN(
"Couldn't read 0 padding\n");
252 res=IStream_Read(pStm,&dwbuffer,
sizeof(
DWORD),&bread);
253 if (bread!=
sizeof(
DWORD))
278 res=IStream_Read(pStm,&dwbuffer,
sizeof(
DWORD),&bread);
279 if (bread!=
sizeof(
DWORD) || dwbuffer!=bytesW)
282 res=IStream_Read(pStm,&wbuffer,
sizeof(
WORD),&bread);
283 if (bread!=
sizeof(
WORD) || wbuffer!=0x3)
293 res=IStream_Read(pStm,filePathW,bytesW,&bread);
302 This->filePathName=filePathW;
350 static const WORD FFFF = 0xFFFF;
353 static const WORD THREE = 0x3;
356 BOOL bUsedDefault, bWriteWide;
358 TRACE(
"(%p,%p,%d)\n",iface,pStm,fClearDirty);
373 filePathA =
malloc(bytesA);
377 res=IStream_Write(pStm,filePathA,bytesA,
NULL);
402 bWriteWide = (bUsedDefault || (
len > 0 && filePathW[
len-1]==
'\\' ));
434 return IStream_Write(pStm,filePathW,bytesW,
NULL);
445 TRACE(
"(%p,%p)\n",iface,pcbSize);
453 pcbSize->
u.LowPart = 0x38 + 4 *
lstrlenW(
This->filePathName);
454 pcbSize->
u.HighPart = 0;
481 res=IBindCtx_GetRunningObjectTable(pbc,&prot);
485 res = IRunningObjectTable_GetObject(prot,iface,&pObj);
499 IUnknown_AddRef(pObj);
511 res=IMoniker_BindToObject(pmkToLeft,pbc,
NULL,&IID_IClassActivator,(
void**)&
pca);
525 IUnknown_AddRef(pObj);
549 res= IUnknown_QueryInterface(pObj,
riid,ppvResult);
551 IBindCtx_RegisterObjectBound(pbc,*ppvResult);
553 IUnknown_Release(pObj);
557 IRunningObjectTable_Release(prot);
560 IPersistFile_Release(ppf);
563 IClassActivator_Release(
pca);
566 IClassFactory_Release(pcf);
587 bind_opts.cbStruct =
sizeof(bind_opts);
588 hr = IBindCtx_GetBindOptions(pbc, &bind_opts);
612 TRACE(
"%p, %p, %ld, %p, %p.\n", iface, pbc, howfar, toleft, reduced);
614 if (!pbc || !reduced)
617 IMoniker_AddRef(iface);
627 for (
i=0; stringTable[
i]!=
NULL;
i++)
635 int i=0,
j,tabIndex=0,
ret=0;
662 if (strgtable[tabIndex]==
NULL)
682 if (strgtable[tabIndex]==
NULL)
691 strgtable[tabIndex]=
NULL;
693 *stringTable=strgtable;
700 for (
i = 0;
i < tabIndex;
i++)
721 int i=0,
j=0,lastIdx1=0,lastIdx2=0;
724 TRACE(
"(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
726 if (ppmkComposite==
NULL)
734 IMoniker_IsSystemMoniker(pmkRight,&mkSys);
737 if(mkSys==MKSYS_FILEMONIKER){
748 if ((lastIdx1 == -1 && lastIdx2 > -1) || (lastIdx1 == 1 && !
wcscmp(strDec1[0],
L"..")))
751 if (!
wcscmp(strDec1[lastIdx1],
L"\\"))
755 for (
i = 0; lastIdx1 >= 0 && strDec2[
i] && !
wcscmp(strDec2[
i],
L"..");
i += 2)
763 for(*newStr=0,
j=0;
j<=lastIdx1;
j++)
766 if ((!strDec2[
i] && lastIdx1 > -1 && lastIdx2 > -1) ||
wcscmp(strDec2[
i],
L"\\"))
769 for(
j=
i;
j<=lastIdx2;
j++)
792 else if (fOnlyIfNotGeneric){
808 TRACE(
"(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
810 if (ppenumMoniker ==
NULL)
813 *ppenumMoniker =
NULL;
852 for (
i =
len ;
i > 0;
i--) {
853 h = (
h * 37) +
val[off++];
859 h = (
h * 39) +
val[off];
878 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
880 if ( (pmkNewlyRunning!=
NULL) && (IMoniker_IsEqual(pmkNewlyRunning,iface)==
S_OK) )
886 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
891 res = IRunningObjectTable_IsRunning(
rot,iface);
893 IRunningObjectTable_Release(
rot);
910 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pFileTime);
918 res=IBindCtx_GetRunningObjectTable(pbc,&
rot);
923 res= IRunningObjectTable_GetTimeOfLastChange(
rot,iface,pFileTime);
930 *pFileTime=
info.ftLastWriteTime;
942 TRACE(
"(%p,%p)\n",iface,ppmk);
962 if (ppmkPrefix==
NULL)
971 IMoniker_IsSystemMoniker(pmkOther,&mkSys);
972 if (mkSys != MKSYS_FILEMONIKER)
980 ret = IMoniker_GetDisplayName(iface, bindctx,
NULL, &pathThis);
984 ret = IMoniker_GetDisplayName(pmkOther, bindctx,
NULL, &pathOther);
1000 if (nb1 == 0 || nb2 == 0) {
1012 for(sameIdx=0; ( (stringTable1[sameIdx]!=
NULL) &&
1013 (stringTable2[sameIdx]!=
NULL) &&
1014 (
lstrcmpiW(stringTable1[sameIdx],stringTable2[sameIdx])==0)); sameIdx++);
1016 if (sameIdx > 1 && *stringTable1[0]==
'\\' && *stringTable2[1]==
'\\'){
1017 machineNameCase =
TRUE;
1019 for(
i=2;
i<sameIdx;
i++)
1020 if( (*stringTable1[
i]==
'\\') && (
i+1 < sameIdx) && (*stringTable1[
i+1]==
'\\') ){
1021 machineNameCase =
FALSE;
1026 if (machineNameCase && *stringTable1[sameIdx-1]==
'\\')
1029 if (machineNameCase && (sameIdx<=3) && (nb1 > 3 || nb2 > 3) )
1033 for (
i = 0;
i < sameIdx;
i++)
1039 IBindCtx_Release(bindctx);
1058 DWORD len1=0,len2=0,sameIdx=0,
j=0;
1060 TRACE(
"(%p,%p,%p)\n",iface,pmOther,ppmkRelPath);
1062 if (ppmkRelPath==
NULL)
1091 for(sameIdx=0; ( (tabStr1[sameIdx]!=
NULL) &&
1092 (tabStr2[sameIdx]!=
NULL) &&
1093 (
lstrcmpiW(tabStr1[sameIdx],tabStr2[sameIdx])==0)); sameIdx++);
1102 if (len2>0 && !(len1==1 && len2==1 && sameIdx==0))
1103 for(
j=sameIdx;(tabStr1[
j] !=
NULL);
j++)
1104 if (*tabStr1[
j]!=
'\\')
1108 for(
j=sameIdx;tabStr2[
j]!=
NULL;
j++)
1119 if (len1==0 || len2==0 || (len1==1 && len2==1 && sameIdx==0))
1135 TRACE(
"(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,ppszDisplayName);
1137 if (ppszDisplayName==
NULL)
1140 if (pmkToLeft!=
NULL)
1144 if (*ppszDisplayName==
NULL)
1161 FIXME(
"(%p,%p,%p,%p,%p,%p),stub!\n",iface,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut);
1171 TRACE(
"(%p,%p)\n",iface,pwdMksys);
1176 (*pwdMksys)=MKSYS_FILEMONIKER;
1205 return IMoniker_AddRef(&
This->IMoniker_iface);
1233 TRACE(
"%p, %p, %lu, %p.\n", iface, pbData, cbMax,
pcbData);
1239 memcpy(pbData, &CLSID_FileMoniker,
sizeof(
CLSID));
1241 for (
i = 0;
i <
len;
i++)
1293 int sizeStr=
lstrlenW(lpszPathName);
1338 if (!
wcscmp(tabStr[nb-1],
L"\\"))
1343 *
This->filePathName=0;
1401 for (
end = szDisplayName +
lstrlenW(szDisplayName);
1402 end && (
end != szDisplayName);
1408 LPWSTR file_display_name;
1410 DWORD full_path_name_len;
1411 int len =
end - szDisplayName;
1416 file_display_name[
len] =
'\0';
1421 free(file_display_name);
1425 hr = IBindCtx_GetRunningObjectTable(pbc, &
rot);
1428 free(file_display_name);
1429 IMoniker_Release(file_moniker);
1433 hr = IRunningObjectTable_IsRunning(
rot, file_moniker);
1434 IRunningObjectTable_Release(
rot);
1437 free(file_display_name);
1438 IMoniker_Release(file_moniker);
1443 TRACE(
"found running file moniker for %s\n",
debugstr_w(file_display_name));
1445 *ppmk = file_moniker;
1446 free(file_display_name);
1451 if (!full_path_name_len)
1453 free(file_display_name);
1454 IMoniker_Release(file_moniker);
1457 full_path_name =
malloc(full_path_name_len *
sizeof(
WCHAR));
1458 if (!full_path_name)
1460 free(file_display_name);
1461 IMoniker_Release(file_moniker);
1472 *ppmk = file_moniker;
1473 free(file_display_name);
1474 free(full_path_name);
1477 free(file_display_name);
1478 free(full_path_name);
1479 IMoniker_Release(file_moniker);
1498 newFileMoniker =
calloc(1,
sizeof(*newFileMoniker));
1499 if (!newFileMoniker)
1507 free(newFileMoniker);
HRESULT create_anti_moniker(DWORD order, IMoniker **ret)
BOOL is_anti_moniker(IMoniker *iface, DWORD *order)
HRESULT WINAPI CreateAntiMoniker(IMoniker **moniker)
#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 *left, IMoniker *right, IMoniker **composite)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#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)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
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 const IMonikerVtbl VT_FileMonikerImpl
static HRESULT WINAPI FileMonikerImpl_ComposeWith(IMoniker *iface, IMoniker *pmkRight, BOOL fOnlyIfNotGeneric, IMoniker **ppmkComposite)
static HRESULT WINAPI FileMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
static int FileMonikerImpl_DecomposePath(LPCOLESTR str, LPOLESTR **stringTable)
static ULONG WINAPI FileMonikerROTDataImpl_AddRef(IROTData *iface)
static ULONG WINAPI FileMonikerImpl_Release(IMoniker *iface)
static HRESULT WINAPI FileMonikerImpl_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMoniker *pmkToLeft, REFIID riid, void **object)
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 howfar, IMoniker **toleft, IMoniker **reduced)
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 FileMonikerImpl * unsafe_impl_from_IMoniker(IMoniker *iface)
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 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 HRESULT WINAPI FileMonikerImpl_IsEqual(IMoniker *iface, IMoniker *other)
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)
static HRESULT WINAPI FileMonikerImpl_GetSizeMax(IMoniker *iface, ULARGE_INTEGER *pcbSize)
GLuint GLdouble GLdouble GLint GLint order
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
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define memcpy(s1, s2, n)
interface IBindCtx * LPBC
HRESULT WINAPI CreateBindCtx(DWORD reserved, IBindCtx **bind_context)
const GUID IID_IPersistFile
const GUID IID_IPersistStream
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
_In_ _Out_writes_opt_ pcchValueName _Inout_opt_ LPDWORD _Out_opt_ _Out_writes_bytes_to_opt_ pcbData _Inout_opt_ LPDWORD pcbData
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
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::@4426 u
#define CONTAINING_RECORD(address, type, field)
WORD WORD PSZ PSZ pszFileName
#define INVALID_FILE_ATTRIBUTES
_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