24#define NONAMELESSUNION
31#define NO_SHLWAPI_PATH
40#define STGM_ACCESS_MODE(stgm) ((stgm)&0x0000f)
41#define STGM_SHARE_MODE(stgm) ((stgm)&0x000f0)
42#define STGM_CREATE_MODE(stgm) ((stgm)&0x0f000)
78 IStream_AddRef(iface);
93 TRACE(
"(%p)->(ref before=%u)\n",
This, refCount - 1);
106 TRACE(
"(%p)->(ref before=%u)\n",
This, refCount + 1);
127 TRACE(
"(%p,%p,0x%08x,%p)\n",
This, pv,
cb, pcbRead);
147 TRACE(
"(%p,%p,0x%08x,%p)\n",
This, pv,
cb, pcbWritten);
162 *pcbWritten = dwWritten;
175 TRACE(
"(%p,%d,%d,%p)\n",
This, dlibMove.
u.LowPart, dwOrigin, pNewPos);
184 pNewPos->
u.HighPart = 0;
185 pNewPos->
u.LowPart = dwPos;
197 TRACE(
"(%p,%d)\n",
This, libNewSize.
u.LowPart);
220 TRACE(
"(%p,%p,%d,%p,%p)\n",
This, pstm,
cb.u.LowPart, pcbRead, pcbWritten);
233 ulSize =
cb.QuadPart;
236 ULONG ulLeft, ulRead, ulWritten;
238 ulLeft = ulSize >
sizeof(copyBuff) ?
sizeof(copyBuff) : ulSize;
242 if (
FAILED(hRet) || ulRead == 0)
251 if (
FAILED(hRet) || ulWritten != ulLeft)
266 TRACE(
"(%p,%d)\n",
This, grfCommitFlags);
289 TRACE(
"(%p,%d,%d,%d)\n",
This, libOffset.
u.LowPart,
cb.u.LowPart, dwLockType);
302 TRACE(
"(%p,%p,%d)\n",
This, lpStat, grfStatFlag);
307 memset(&fi, 0,
sizeof(fi));
310 if (grfStatFlag & STATFLAG_NONAME)
311 lpStat->pwcsName =
NULL;
314 lpStat->type =
This->type;
320 lpStat->grfMode =
This->dwMode;
321 lpStat->grfLocksSupported = 0;
322 memcpy(&lpStat->clsid, &IID_IStream,
sizeof(
CLSID));
323 lpStat->grfStateBits =
This->grfStateBits;
324 lpStat->reserved = 0;
370 if (!fileStream)
return NULL;
375 fileStream->
dwMode = dwMode;
377 fileStream->
type = 0;
380 TRACE (
"Returning %p\n", fileStream);
408 DWORD dwAccess, dwShare, dwCreate;
414 if (!lpszPath || !lppStream || lpTemplate)
492 if (!lpszPath || !lppStream)
549 TRACE(
"(%p,%p,%d)\n", lpStream, lpvDest, ulSize);
551 hRet = IStream_Read(lpStream, lpvDest, ulSize, &ulRead);
575 TRACE(
"(%p)\n", lpStream);
577 memset(&statstg, 0,
sizeof(statstg));
579 if(
SUCCEEDED(IStream_Stat(lpStream, &statstg, 1)))
581 if(statstg.cbSize.QuadPart)
594 IStream_Seek(lpStream,
zero, 0,
NULL);
621 TRACE(
"(%p,%p,%d)\n", lpStream, lpvSrc, ulSize);
623 hRet = IStream_Write(lpStream, lpvSrc, ulSize, &ulWritten);
625 if (
SUCCEEDED(hRet) && ulWritten != ulSize)
646 TRACE(
"(%p)\n", lpStream);
648 return IStream_Seek(lpStream,
zero, 0,
NULL);
669 TRACE(
"(%p,%p)\n", lpStream, lpulSize);
671 memset(&statstg, 0,
sizeof(statstg));
673 hRet = IStream_Stat(lpStream, &statstg, 1);
676 *lpulSize = statstg.cbSize;
700 if (cbSize <
sizeof(
USHORT))
716 for (pItem = &pidl->mkid; pItem <= (
LPSHITEMID)pidlEnd;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define INVALID_SET_FILE_POINTER
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define MultiByteToWideChar
BOOL WINAPI GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
WCHAR *WINAPI StrDupW(const WCHAR *str)
static HRESULT WINAPI IStream_fnSetSize(IStream *iface, ULARGE_INTEGER libNewSize)
HRESULT WINAPI IStream_Size(IStream *lpStream, ULARGE_INTEGER *lpulSize)
static const IStreamVtbl SHLWAPI_fsVTable
static IStream * IStream_Create(LPCWSTR lpszPath, HANDLE hFile, DWORD dwMode)
static HRESULT WINAPI IStream_fnCopyTo(IStream *iface, IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
#define STGM_CREATE_MODE(stgm)
static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVOID *ppvObj)
static HRESULT WINAPI IStream_fnStat(IStream *iface, STATSTG *lpStat, DWORD grfStatFlag)
HRESULT WINAPI IStream_Reset(IStream *lpStream)
static HRESULT WINAPI IStream_fnWrite(IStream *iface, const void *pv, ULONG cb, ULONG *pcbWritten)
HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR lpszPath, DWORD dwMode, IStream **lppStream)
static ULONG WINAPI IStream_fnRelease(IStream *iface)
BOOL WINAPI SHIsEmptyStream(IStream *lpStream)
static HRESULT WINAPI IStream_fnCommit(IStream *, DWORD)
#define STGM_SHARE_MODE(stgm)
static HRESULT WINAPI IStream_fnRevert(IStream *iface)
static HRESULT WINAPI IStream_fnSeek(IStream *iface, LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *pNewPos)
static HRESULT WINAPI IStream_fnLockUnlockRegion(IStream *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode, DWORD dwAttributes, BOOL bCreate, IStream *lpTemplate, IStream **lppStream)
#define STGM_ACCESS_MODE(stgm)
HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode, IStream **lppStream)
HRESULT WINAPI SHIStream_Write(IStream *lpStream, LPCVOID lpvSrc, ULONG ulSize)
static HRESULT WINAPI IStream_fnRead(IStream *iface, void *pv, ULONG cb, ULONG *pcbRead)
HRESULT WINAPI SHIStream_Read(IStream *lpStream, LPVOID lpvDest, ULONG ulSize)
static HRESULT WINAPI IStream_fnClone(IStream *iface, IStream **ppstm)
static ISHFileStream * impl_from_IStream(IStream *iface)
static ULONG WINAPI IStream_fnAddRef(IStream *iface)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
void WINAPI CoTaskMemFree(void *ptr)
#define memcpy(s1, s2, n)
#define STGM_SHARE_DENY_NONE
#define STGM_SHARE_EXCLUSIVE
#define STGM_DELETEONRELEASE
#define STGM_SHARE_DENY_WRITE
#define STGM_SHARE_DENY_READ
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
#define IsEqualIID(riid1, riid2)
_In_ int _In_ BOOL bCreate
HRESULT WINAPI IStream_WritePidl(_In_ IStream *pstm, _In_ LPCITEMIDLIST pidlWrite)
HRESULT WINAPI IStream_ReadPidl(_In_ IStream *pstm, _Out_ LPITEMIDLIST *ppidlOut)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
struct SHITEMID * LPSHITEMID
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
struct _ULARGE_INTEGER::@4610 u
#define CONTAINING_RECORD(address, type, field)
struct _LARGE_INTEGER::@2500 u
DWORD WINAPI GetLastError(void)
#define STG_E_INVALIDPOINTER
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_PATH_NOT_FOUND
#define STG_E_ACCESSDENIED