31 #define NONAMELESSUNION 32 #define NONAMELESSSTRUCT 124 *pLockBytes = &
This->ILockBytes_iface;
192 TRACE(
"(%p)-> %i %p %i %p\n",
This, ulOffset.
u.LowPart, pv,
cb, pcbRead);
211 if (!
ret || cbRead == 0)
217 bytes_left -= cbRead;
242 const BYTE *writePtr = pv;
247 TRACE(
"(%p)-> %i %p %i %p\n",
This, ulOffset.
u.LowPart, pv,
cb, pcbWritten);
273 *pcbWritten += cbWritten;
275 bytes_left -= cbWritten;
276 writePtr += cbWritten;
300 TRACE(
"new size %u\n", newSize.
u.LowPart);
331 TRACE(
"ofs %u count %u flags %x\n", libOffset.
u.LowPart,
cb.u.LowPart, dwLockType);
333 if (dwLockType & LOCK_WRITE)
336 if (dwLockType & (LOCK_EXCLUSIVE|LOCK_ONLYONCE))
340 ol.u.s.
Offset = libOffset.
u.LowPart;
354 TRACE(
"ofs %u count %u flags %x\n", libOffset.
u.LowPart,
cb.u.LowPart, dwLockType);
356 if (dwLockType & LOCK_WRITE)
360 ol.u.s.
Offset = libOffset.
u.LowPart;
369 STATSTG *pstatstg,
DWORD grfStatFlag)
373 if (!(STATFLAG_NONAME & grfStatFlag) &&
This->pwcsName)
381 pstatstg->pwcsName =
NULL;
383 pstatstg->type = STGTY_LOCKBYTES;
385 pstatstg->cbSize.u.LowPart =
GetFileSize(
This->hfile, &pstatstg->cbSize.u.HighPart);
388 pstatstg->grfLocksSupported = LOCK_EXCLUSIVE|LOCK_ONLYONCE|
WINE_LOCK_READ;
static FileLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
BOOL WINAPI SetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
struct _ULARGE_INTEGER::@3916 u
static DWORD GetProtectMode(DWORD openFlags)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
WINE_DEFAULT_DEBUG_CHANNEL(storage)
#define ERROR_ACCESS_DENIED
#define STG_E_ACCESSDENIED
struct FileLockBytesImpl FileLockBytesImpl
static HRESULT WINAPI FileLockBytesImpl_Stat(ILockBytes *iface, STATSTG *pstatstg, DWORD grfStatFlag)
static HRESULT WINAPI FileLockBytesImpl_WriteAt(ILockBytes *iface, ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten)
static HRESULT WINAPI FileLockBytesImpl_Flush(ILockBytes *iface)
#define LOCKFILE_FAIL_IMMEDIATELY
#define STG_E_INVALIDFUNCTION
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)
static HRESULT WINAPI FileLockBytesImpl_ReadAt(ILockBytes *iface, ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static HRESULT WINAPI FileLockBytesImpl_SetSize(ILockBytes *iface, ULARGE_INTEGER newSize)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
static ULONG WINAPI FileLockBytesImpl_AddRef(ILockBytes *iface)
static ULONG WINAPI FileLockBytesImpl_Release(ILockBytes *iface)
#define InterlockedDecrement
BOOL WINAPI UnlockFileEx(IN HANDLE hFile, IN DWORD dwReserved, IN DWORD nNumberOfBytesToUnLockLow, IN DWORD nNumberOfBytesToUnLockHigh, IN LPOVERLAPPED lpOverlapped)
REFIID LPVOID * ppvObject
#define STGM_ACCESS_MODE(stgm)
static HRESULT WINAPI FileLockBytesImpl_LockRegion(ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
ILockBytes ILockBytes_iface
BOOL WINAPI LockFileEx(IN HANDLE hFile, IN DWORD dwFlags, IN DWORD dwReserved, IN DWORD nNumberOfBytesToLockLow, IN DWORD nNumberOfBytesToLockHigh, IN LPOVERLAPPED lpOverlapped)
#define STG_E_LOCKVIOLATION
#define InterlockedIncrement
static HRESULT get_lock_error(void)
static const ILockBytesVtbl FileLockBytesImpl_Vtbl
HRESULT FileLockBytesImpl_Construct(HANDLE hFile, DWORD openFlags, LPCWSTR pwcsName, ILockBytes **pLockBytes)
static HRESULT WINAPI FileLockBytesImpl_QueryInterface(ILockBytes *iface, REFIID riid, void **ppvObject)
#define LOCKFILE_EXCLUSIVE_LOCK
#define ReadFile(a, b, c, d, e)
static HMODULE MODULEINFO DWORD cb
#define ERROR_NOT_SUPPORTED
#define ERROR_LOCK_VIOLATION
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define HeapFree(x, y, z)
#define IsEqualIID(riid1, riid2)
static HRESULT WINAPI FileLockBytesImpl_UnlockRegion(ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)