ole32: Move the low-level functionality of ReadProperty to a new function.

This commit is contained in:
Vincent Povirk 2009-10-28 11:37:30 -05:00 committed by Alexandre Julliard
parent 5d550cdc45
commit 56622de951
2 changed files with 32 additions and 11 deletions

View File

@ -3045,6 +3045,32 @@ static void StorageImpl_SaveFileHeader(
StorageImpl_WriteBigBlock(This, -1, headerBigBlock);
}
/******************************************************************************
* 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
*
@ -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))
{

View File

@ -290,6 +290,11 @@ struct StorageImpl
BigBlockFile* bigBlockFile;
};
HRESULT StorageImpl_ReadRawDirEntry(
StorageImpl *This,
ULONG index,
BYTE *buffer);
BOOL StorageImpl_ReadProperty(
StorageImpl* This,
ULONG index,