From 87e3ec2d1fc29a5b5dbfc5a8f1f002822f0c921b Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 28 Oct 2009 11:37:30 -0500 Subject: [PATCH 03/20] ole32: Move the low-level functionality of ReadProperty to a new function. --- dlls/ole32/storage32.c | 38 +++++++++++++++++++++++++++----------- dlls/ole32/storage32.h | 5 +++++ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 64039cc..4ff9f89 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -3046,6 +3046,32 @@ static void StorageImpl_SaveFileHeader( } /****************************************************************************** + * StorageImpl_ReadRawDirEntry + * + * This method will read the raw data from a directory entry in the file. + * + * buffer must be PROPSET_BLOCK_SIZE bytes long. + */ +HRESULT StorageImpl_ReadRawDirEntry(StorageImpl *This, ULONG index, BYTE *buffer) +{ + ULARGE_INTEGER offset; + HRESULT hr; + ULONG bytesRead; + + offset.u.HighPart = 0; + offset.u.LowPart = index * PROPSET_BLOCK_SIZE; + + hr = BlockChainStream_ReadAt( + This->rootBlockChain, + offset, + PROPSET_BLOCK_SIZE, + buffer, + &bytesRead); + + return hr; +} + +/****************************************************************************** * Storage32Impl_ReadProperty * * This method will read the specified property from the property chain. @@ -3056,19 +3082,9 @@ BOOL StorageImpl_ReadProperty( StgProperty* buffer) { BYTE currentProperty[PROPSET_BLOCK_SIZE]; - ULARGE_INTEGER offsetInPropSet; HRESULT readRes; - ULONG bytesRead; - offsetInPropSet.u.HighPart = 0; - offsetInPropSet.u.LowPart = index * PROPSET_BLOCK_SIZE; - - readRes = BlockChainStream_ReadAt( - This->rootBlockChain, - offsetInPropSet, - PROPSET_BLOCK_SIZE, - currentProperty, - &bytesRead); + readRes = StorageImpl_ReadRawDirEntry(This, index, currentProperty); if (SUCCEEDED(readRes)) { diff --git a/dlls/ole32/storage32.h b/dlls/ole32/storage32.h index 8dd44fa..281948e 100644 --- a/dlls/ole32/storage32.h +++ b/dlls/ole32/storage32.h @@ -290,6 +290,11 @@ struct StorageImpl BigBlockFile* bigBlockFile; }; +HRESULT StorageImpl_ReadRawDirEntry( + StorageImpl *This, + ULONG index, + BYTE *buffer); + BOOL StorageImpl_ReadProperty( StorageImpl* This, ULONG index, -- 1.6.3.3