{
StreamOnMemory *This = StreamOnMemory_from_IStream(iface);
ULONG uBytesRead;
- TRACE("(%p)\n", This);
+
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbRead);
if (!pv) return E_INVALIDARG;
{
StreamOnMemory *This = StreamOnMemory_from_IStream(iface);
HRESULT hr;
- TRACE("(%p)\n", This);
+
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbWritten);
if (!pv) return E_INVALIDARG;
StreamOnMemory *This = StreamOnMemory_from_IStream(iface);
LARGE_INTEGER NewPosition;
HRESULT hr=S_OK;
- TRACE("(%p)\n", This);
+
+ TRACE("(%p, %s, %d, %p)\n", This, wine_dbgstr_longlong(dlibMove.QuadPart), dwOrigin, plibNewPosition);
EnterCriticalSection(&This->lock);
if (dwOrigin == STREAM_SEEK_SET) NewPosition.QuadPart = dlibMove.QuadPart;
static HRESULT WINAPI StreamOnMemory_SetSize(IStream *iface,
ULARGE_INTEGER libNewSize)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s)\n", iface, wine_dbgstr_longlong(libNewSize.QuadPart));
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnMemory_CopyTo(IStream *iface,
IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %p, %s, %p, %p)\n", iface, pstm, wine_dbgstr_longlong(cb.QuadPart), pcbRead, pcbWritten);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnMemory_Commit(IStream *iface,
DWORD grfCommitFlags)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %#x)\n", iface, grfCommitFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnMemory_LockRegion(IStream *iface,
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s, %s, %d)\n", iface, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnMemory_UnlockRegion(IStream *iface,
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s, %s, %d)\n", iface, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
return E_NOTIMPL;
}
STATSTG *pstatstg, DWORD grfStatFlag)
{
StreamOnMemory *This = StreamOnMemory_from_IStream(iface);
- TRACE("(%p)\n", This);
+ TRACE("(%p, %p, %#x)\n", This, pstatstg, grfStatFlag);
if (!pstatstg) return E_INVALIDARG;
static HRESULT WINAPI StreamOnMemory_Clone(IStream *iface,
IStream **ppstm)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %p)\n", iface, ppstm);
return E_NOTIMPL;
}
void *pv, ULONG cb, ULONG *pcbRead)
{
StreamOnFileHandle *This = StreamOnFileHandle_from_IStream(iface);
- TRACE("(%p)\n", This);
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbRead);
return IWICStream_Read(This->stream, pv, cb, pcbRead);
}
static HRESULT WINAPI StreamOnFileHandle_Write(IStream *iface,
void const *pv, ULONG cb, ULONG *pcbWritten)
{
- ERR("(%p)\n", iface);
+ ERR("(%p, %p, %u, %p)\n", iface, pv, cb, pcbWritten);
return HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED);
}
LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
{
StreamOnFileHandle *This = StreamOnFileHandle_from_IStream(iface);
- TRACE("(%p)\n", This);
+ TRACE("(%p, %s, %d, %p)\n", This, wine_dbgstr_longlong(dlibMove.QuadPart), dwOrigin, plibNewPosition);
return IWICStream_Seek(This->stream, dlibMove, dwOrigin, plibNewPosition);
}
static HRESULT WINAPI StreamOnFileHandle_SetSize(IStream *iface,
ULARGE_INTEGER libNewSize)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s)\n", iface, wine_dbgstr_longlong(libNewSize.QuadPart));
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnFileHandle_CopyTo(IStream *iface,
IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %p, %s, %p, %p)\n", iface, pstm, wine_dbgstr_longlong(cb.QuadPart), pcbRead, pcbWritten);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnFileHandle_Commit(IStream *iface,
DWORD grfCommitFlags)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %#x)\n", iface, grfCommitFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnFileHandle_LockRegion(IStream *iface,
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s, %s, %d)\n", iface, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnFileHandle_UnlockRegion(IStream *iface,
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s, %s, %d)\n", iface, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
return E_NOTIMPL;
}
STATSTG *pstatstg, DWORD grfStatFlag)
{
StreamOnFileHandle *This = StreamOnFileHandle_from_IStream(iface);
- TRACE("(%p)\n", This);
+ TRACE("(%p, %p, %#x)\n", This, pstatstg, grfStatFlag);
return IWICStream_Stat(This->stream, pstatstg, grfStatFlag);
}
static HRESULT WINAPI StreamOnFileHandle_Clone(IStream *iface,
IStream **ppstm)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %p)\n", iface, ppstm);
return E_NOTIMPL;
}
-
static const IStreamVtbl StreamOnFileHandle_Vtbl =
{
/*** IUnknown methods ***/
HRESULT hr;
ULARGE_INTEGER OldPosition;
LARGE_INTEGER SetPosition;
- TRACE("(%p)\n", This);
+
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbRead);
if (!pv) return E_INVALIDARG;
ULARGE_INTEGER OldPosition;
LARGE_INTEGER SetPosition;
ULONG uBytesWritten=0;
- TRACE("(%p)\n", This);
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbWritten);
if (!pv) return E_INVALIDARG;
ULARGE_INTEGER NewPosition, actual_size;
HRESULT hr=S_OK;
STATSTG statstg;
- TRACE("(%p)\n", This);
+ TRACE("(%p, %s, %d, %p)\n", This, wine_dbgstr_longlong(dlibMove.QuadPart), dwOrigin, plibNewPosition);
EnterCriticalSection(&This->lock);
actual_size = This->max_size;
static HRESULT WINAPI StreamOnStreamRange_SetSize(IStream *iface,
ULARGE_INTEGER libNewSize)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s)\n", iface, wine_dbgstr_longlong(libNewSize.QuadPart));
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnStreamRange_CopyTo(IStream *iface,
IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %p, %s, %p, %p)\n", iface, pstm, wine_dbgstr_longlong(cb.QuadPart),
+ pcbRead, pcbWritten);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnStreamRange_Commit(IStream *iface,
DWORD grfCommitFlags)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %#x)\n", iface, grfCommitFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnStreamRange_LockRegion(IStream *iface,
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s, %s, %d)\n", iface, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
return E_NOTIMPL;
}
static HRESULT WINAPI StreamOnStreamRange_UnlockRegion(IStream *iface,
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %s, %s, %d)\n", iface, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
return E_NOTIMPL;
}
{
StreamOnStreamRange *This = StreamOnStreamRange_from_IStream(iface);
HRESULT hr;
- TRACE("(%p)\n", This);
+ TRACE("(%p, %p, %#x)\n", This, pstatstg, grfStatFlag);
if (!pstatstg) return E_INVALIDARG;
static HRESULT WINAPI StreamOnStreamRange_Clone(IStream *iface,
IStream **ppstm)
{
- TRACE("(%p)\n", iface);
+ TRACE("(%p, %p)\n", iface, ppstm);
return E_NOTIMPL;
}
-
static const IStreamVtbl StreamOnStreamRange_Vtbl =
{
/*** IUnknown methods ***/
void *pv, ULONG cb, ULONG *pcbRead)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbRead);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Read(This->pStream, pv, cb, pcbRead);
void const *pv, ULONG cb, ULONG *pcbWritten)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %p, %u, %p)\n", This, pv, cb, pcbWritten);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Write(This->pStream, pv, cb, pcbWritten);
LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %s, %d, %p)\n", This, wine_dbgstr_longlong(dlibMove.QuadPart),
+ dwOrigin, plibNewPosition);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Seek(This->pStream, dlibMove, dwOrigin, plibNewPosition);
ULARGE_INTEGER libNewSize)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %s)\n", This, wine_dbgstr_longlong(libNewSize.QuadPart));
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_SetSize(This->pStream, libNewSize);
IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %p, %s, %p, %p)\n", This, pstm, wine_dbgstr_longlong(cb.QuadPart), pcbRead, pcbWritten);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_CopyTo(This->pStream, pstm, cb, pcbRead, pcbWritten);
DWORD grfCommitFlags)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %#x)\n", This, grfCommitFlags);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Commit(This->pStream, grfCommitFlags);
static HRESULT WINAPI IWICStreamImpl_Revert(IWICStream *iface)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p)\n", This);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Revert(This->pStream);
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %s, %s, %d)\n", This, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_LockRegion(This->pStream, libOffset, cb, dwLockType);
ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %s, %s, %d)\n", This, wine_dbgstr_longlong(libOffset.QuadPart),
+ wine_dbgstr_longlong(cb.QuadPart), dwLockType);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_UnlockRegion(This->pStream, libOffset, cb, dwLockType);
STATSTG *pstatstg, DWORD grfStatFlag)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %p, %#x)\n", This, pstatstg, grfStatFlag);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Stat(This->pStream, pstatstg, grfStatFlag);
IStream **ppstm)
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
- TRACE("(%p): relay\n", This);
+ TRACE("(%p, %p)\n", This, ppstm);
if (!This->pStream) return WINCODEC_ERR_NOTINITIALIZED;
return IStream_Clone(This->pStream, ppstm);
}
-static HRESULT WINAPI IWICStreamImpl_InitializeFromIStream(IWICStream *iface,
- IStream *pIStream)
+static HRESULT WINAPI IWICStreamImpl_InitializeFromIStream(IWICStream *iface, IStream *stream)
{
- ULARGE_INTEGER offset, size;
- TRACE("(%p): relay\n", iface);
+ IWICStreamImpl *This = impl_from_IWICStream(iface);
+ HRESULT hr = S_OK;
+
+ TRACE("(%p, %p)\n", iface, stream);
+
+ if (!stream) return E_INVALIDARG;
+ if (This->pStream) return WINCODEC_ERR_WRONGSTATE;
+
+ IStream_AddRef(stream);
- offset.QuadPart = 0;
- size.u.LowPart = 0xffffffff;
- size.u.HighPart = 0xffffffff;
- return IWICStream_InitializeFromIStreamRegion(iface, pIStream, offset, size);
+ if (InterlockedCompareExchangePointer((void **)&This->pStream, stream, NULL))
+ {
+ /* Some other thread set the stream first. */
+ IStream_Release(stream);
+ hr = WINCODEC_ERR_WRONGSTATE;
+ }
+
+ return hr;
}
static HRESULT WINAPI IWICStreamImpl_InitializeFromFilename(IWICStream *iface,
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
StreamOnMemory *pObject;
- TRACE("(%p,%p)\n", iface, pbBuffer);
+ TRACE("(%p, %p, %u)\n", iface, pbBuffer, cbBufferSize);
if (!pbBuffer) return E_INVALIDARG;
if (This->pStream) return WINCODEC_ERR_WRONGSTATE;
{
IWICStreamImpl *This = impl_from_IWICStream(iface);
StreamOnStreamRange *pObject;
- TRACE("(%p,%p)\n", iface, pIStream);
+
+ TRACE("(%p,%p,%s,%s)\n", iface, pIStream, wine_dbgstr_longlong(ulOffset.QuadPart),
+ wine_dbgstr_longlong(ulMaxSize.QuadPart));
if (!pIStream) return E_INVALIDARG;
if (This->pStream) return WINCODEC_ERR_WRONGSTATE;