#include <assert.h>
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "objbase.h"
#include "ole2.h"
#include "winerror.h"
#include "wine/debug.h"
Go to the source code of this file.
|
| WINE_DEFAULT_DEBUG_CHANNEL (ole) |
|
static HGLOBALLockBytesImpl * | impl_from_ILockBytes (ILockBytes *iface) |
|
HRESULT WINAPI | CreateILockBytesOnHGlobal (HGLOBAL global, BOOL delete_on_release, ILockBytes **ret) |
|
HRESULT WINAPI | GetHGlobalFromILockBytes (ILockBytes *iface, HGLOBAL *phglobal) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_QueryInterface (ILockBytes *iface, REFIID riid, void **ppvObject) |
|
static ULONG WINAPI | HGLOBALLockBytesImpl_AddRef (ILockBytes *iface) |
|
static ULONG WINAPI | HGLOBALLockBytesImpl_Release (ILockBytes *iface) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_ReadAt (ILockBytes *iface, ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_WriteAt (ILockBytes *iface, ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_Flush (ILockBytes *iface) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_SetSize (ILockBytes *iface, ULARGE_INTEGER libNewSize) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_LockRegion (ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_UnlockRegion (ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType) |
|
static HRESULT WINAPI | HGLOBALLockBytesImpl_Stat (ILockBytes *iface, STATSTG *pstatstg, DWORD grfStatFlag) |
|
◆ COBJMACROS
◆ NONAMELESSUNION
◆ HGLOBALLockBytesImpl
◆ CreateILockBytesOnHGlobal()
Definition at line 98 of file memlockbytes.c.
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
SIZE_T NTAPI GlobalSize(HGLOBAL hMem)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl
ULARGE_INTEGER byteArraySize
struct _ULARGE_INTEGER::@3912 u
ILockBytes ILockBytes_iface
Referenced by create_storage(), DataObjectImpl_CreateComplex(), get_data_from_storage(), get_stgmed_for_storage(), render_embed_source_hack(), stream_to_storage(), test_data_cache_save(), test_data_cache_save_data(), test_hglobal_storage_creation(), test_hglobal_storage_stat(), and test_OleCreateStaticFromData().
◆ GetHGlobalFromILockBytes()
Definition at line 145 of file memlockbytes.c.
155 *phglobal =
This->supportHandle;
161 hres = ILockBytes_Stat(iface,&stbuf,STATFLAG_NONAME);
163 ERR(
"Cannot ILockBytes_Stat, %x\n",
hres);
171 hres = ILockBytes_ReadAt(iface,
start,
GlobalLock(*phglobal), stbuf.cbSize.u.LowPart, &xread);
174 FIXME(
"%p->ReadAt failed with %x\n",iface,
hres);
177 if (stbuf.cbSize.u.LowPart != xread) {
178 FIXME(
"Read size is not requested size %d vs %d?\n",stbuf.cbSize.u.LowPart, xread);
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Referenced by create_storage().
◆ HGLOBALLockBytesImpl_AddRef()
Definition at line 222 of file memlockbytes.c.
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
#define InterlockedIncrement
◆ HGLOBALLockBytesImpl_Flush()
◆ HGLOBALLockBytesImpl_LockRegion()
◆ HGLOBALLockBytesImpl_QueryInterface()
Definition at line 193 of file memlockbytes.c.
213 ILockBytes_AddRef(iface);
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
REFIID LPVOID * ppvObject
#define IsEqualIID(riid1, riid2)
◆ HGLOBALLockBytesImpl_ReadAt()
Definition at line 259 of file memlockbytes.c.
269 ULONG bytesReadBuffer = 0;
270 ULONG bytesToReadFromBuffer;
277 pcbRead = &bytesReadBuffer;
282 if (ulOffset.
u.LowPart >
This->byteArraySize.u.LowPart)
289 bytesToReadFromBuffer =
min(
This->byteArraySize.u.LowPart -
290 ulOffset.
u.LowPart,
cb);
298 (
char *) supportBuffer + ulOffset.
u.LowPart,
299 bytesToReadFromBuffer);
304 *pcbRead = bytesToReadFromBuffer;
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
#define memcpy(s1, s2, n)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
struct _ULARGE_INTEGER::@3912 u
static HMODULE MODULEINFO DWORD cb
◆ HGLOBALLockBytesImpl_Release()
Definition at line 232 of file memlockbytes.c.
240 if (
This->deleteOnRelease)
243 This->supportHandle = 0;
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
#define InterlockedDecrement
#define HeapFree(x, y, z)
◆ HGLOBALLockBytesImpl_SetSize()
Definition at line 408 of file memlockbytes.c.
418 if (libNewSize.
u.HighPart != 0)
421 if (
This->byteArraySize.u.LowPart == libNewSize.
u.LowPart)
429 if (supportHandle == 0)
432 This->supportHandle = supportHandle;
433 This->byteArraySize.u.LowPart = libNewSize.
u.LowPart;
HGLOBAL NTAPI GlobalReAlloc(HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags)
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
#define STG_E_INVALIDFUNCTION
struct _ULARGE_INTEGER::@3912 u
◆ HGLOBALLockBytesImpl_Stat()
Definition at line 478 of file memlockbytes.c.
485 memset(pstatstg, 0,
sizeof(STATSTG));
487 pstatstg->pwcsName =
NULL;
488 pstatstg->type = STGTY_LOCKBYTES;
489 pstatstg->cbSize =
This->byteArraySize;
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
◆ HGLOBALLockBytesImpl_UnlockRegion()
◆ HGLOBALLockBytesImpl_WriteAt()
Definition at line 331 of file memlockbytes.c.
357 newSize.
u.HighPart = 0;
358 newSize.
u.LowPart = ulOffset.
u.LowPart +
cb;
364 if (newSize.
u.LowPart >
This->byteArraySize.u.LowPart)
376 memcpy((
char *) supportBuffer + ulOffset.
u.LowPart, pv,
cb);
static HGLOBALLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
#define memcpy(s1, s2, n)
GLenum GLsizei GLuint GLint * bytesWritten
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
struct _ULARGE_INTEGER::@3912 u
static HMODULE MODULEINFO DWORD cb
◆ impl_from_ILockBytes()
Definition at line 70 of file memlockbytes.c.
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)
Referenced by GetHGlobalFromILockBytes(), HGLOBALLockBytesImpl_AddRef(), HGLOBALLockBytesImpl_QueryInterface(), HGLOBALLockBytesImpl_ReadAt(), HGLOBALLockBytesImpl_Release(), HGLOBALLockBytesImpl_SetSize(), HGLOBALLockBytesImpl_Stat(), and HGLOBALLockBytesImpl_WriteAt().
◆ WINE_DEFAULT_DEBUG_CHANNEL()
WINE_DEFAULT_DEBUG_CHANNEL |
( |
ole |
| ) |
|
◆ HGLOBALLockBytesImpl_Vtbl
static const ILockBytesVtbl HGLOBALLockBytesImpl_Vtbl |
|
static |
Initial value:=
{
}
static HRESULT WINAPI HGLOBALLockBytesImpl_WriteAt(ILockBytes *iface, ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten)
static HRESULT WINAPI HGLOBALLockBytesImpl_SetSize(ILockBytes *iface, ULARGE_INTEGER libNewSize)
static ULONG WINAPI HGLOBALLockBytesImpl_Release(ILockBytes *iface)
static HRESULT WINAPI HGLOBALLockBytesImpl_QueryInterface(ILockBytes *iface, REFIID riid, void **ppvObject)
static HRESULT WINAPI HGLOBALLockBytesImpl_Stat(ILockBytes *iface, STATSTG *pstatstg, DWORD grfStatFlag)
static HRESULT WINAPI HGLOBALLockBytesImpl_ReadAt(ILockBytes *iface, ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead)
static HRESULT WINAPI HGLOBALLockBytesImpl_Flush(ILockBytes *iface)
static ULONG WINAPI HGLOBALLockBytesImpl_AddRef(ILockBytes *iface)
static HRESULT WINAPI HGLOBALLockBytesImpl_UnlockRegion(ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static HRESULT WINAPI HGLOBALLockBytesImpl_LockRegion(ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
Definition at line 75 of file memlockbytes.c.
Referenced by CreateILockBytesOnHGlobal(), and GetHGlobalFromILockBytes().