121 *pLockBytes = &
This->ILockBytes_iface;
139 IUnknown_AddRef((
IUnknown*)*ppvObject);
189 TRACE(
"%p, %ld, %p, %lu, %p.\n", iface, ulOffset.
LowPart, pv,
cb, pcbRead);
208 if (!
ret || cbRead == 0)
214 bytes_left -= cbRead;
239 const BYTE *writePtr = pv;
244 TRACE(
"%p, %ld, %p, %lu, %p.\n", iface, ulOffset.
LowPart, pv,
cb, pcbWritten);
270 *pcbWritten += cbWritten;
272 bytes_left -= cbWritten;
273 writePtr += cbWritten;
328 TRACE(
"ofs %lu count %lu flags %lx\n", libOffset.
LowPart,
cb.LowPart, dwLockType);
330 if (dwLockType & LOCK_WRITE)
333 if (dwLockType & (LOCK_EXCLUSIVE|LOCK_ONLYONCE))
351 TRACE(
"ofs %lu count %lu flags %lx\n", libOffset.
LowPart,
cb.LowPart, dwLockType);
353 if (dwLockType & LOCK_WRITE)
366 STATSTG *pstatstg,
DWORD grfStatFlag)
370 if (!(STATFLAG_NONAME & grfStatFlag) &&
This->pwcsName)
378 pstatstg->pwcsName =
NULL;
380 pstatstg->type = STGTY_LOCKBYTES;
382 pstatstg->cbSize.LowPart =
GetFileSize(
This->hfile, &pstatstg->cbSize.HighPart);
385 pstatstg->grfLocksSupported = LOCK_EXCLUSIVE|LOCK_ONLYONCE|
WINE_LOCK_READ;
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define ERROR_NOT_SUPPORTED
#define HeapFree(x, y, z)
#define ERROR_ACCESS_DENIED
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
BOOL WINAPI SetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod)
BOOL WINAPI UnlockFileEx(IN HANDLE hFile, IN DWORD dwReserved, IN DWORD nNumberOfBytesToUnLockLow, IN DWORD nNumberOfBytesToUnLockHigh, IN LPOVERLAPPED lpOverlapped)
BOOL WINAPI LockFileEx(IN HANDLE hFile, IN DWORD dwFlags, IN DWORD dwReserved, IN DWORD nNumberOfBytesToLockLow, IN DWORD nNumberOfBytesToLockHigh, IN LPOVERLAPPED lpOverlapped)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
static ULONG WINAPI FileLockBytesImpl_Release(ILockBytes *iface)
static HRESULT WINAPI FileLockBytesImpl_UnlockRegion(ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static HRESULT get_lock_error(void)
static ULONG WINAPI FileLockBytesImpl_AddRef(ILockBytes *iface)
static HRESULT WINAPI FileLockBytesImpl_WriteAt(ILockBytes *iface, ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten)
static HRESULT WINAPI FileLockBytesImpl_Flush(ILockBytes *iface)
static const ILockBytesVtbl FileLockBytesImpl_Vtbl
static HRESULT WINAPI FileLockBytesImpl_Stat(ILockBytes *iface, STATSTG *pstatstg, DWORD grfStatFlag)
static HRESULT WINAPI FileLockBytesImpl_ReadAt(ILockBytes *iface, ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead)
static HRESULT WINAPI FileLockBytesImpl_SetSize(ILockBytes *iface, ULARGE_INTEGER newSize)
static DWORD GetProtectMode(DWORD openFlags)
HRESULT FileLockBytesImpl_Construct(HANDLE hFile, DWORD openFlags, LPCWSTR pwcsName, ILockBytes **pLockBytes)
static FileLockBytesImpl * impl_from_ILockBytes(ILockBytes *iface)
static HRESULT WINAPI FileLockBytesImpl_LockRegion(ILockBytes *iface, ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType)
static HRESULT WINAPI FileLockBytesImpl_QueryInterface(ILockBytes *iface, REFIID riid, void **ppvObject)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
#define LOCKFILE_FAIL_IMMEDIATELY
#define LOCKFILE_EXCLUSIVE_LOCK
#define IsEqualIID(riid1, riid2)
#define STGM_ACCESS_MODE(stgm)
ILockBytes ILockBytes_iface
#define CONTAINING_RECORD(address, type, field)
DWORD WINAPI GetLastError(void)
#define STG_E_LOCKVIOLATION
#define ERROR_LOCK_VIOLATION
#define STG_E_ACCESSDENIED
#define STG_E_INVALIDFUNCTION