Scroll to navigation

SHWriteDataBlockList(3w) Wine API SHWriteDataBlockList(3w)


SHWriteDataBlockList (SHLWAPI.17)


HRESULT SHWriteDataBlockList
IStream* lpStream,


Write a DataBlock list to an IStream object.


lpStream [In] IStream object to write the list to.
lpList [In] List of items to write.


Success: S_OK. The object is written to the stream.
Failure: An HRESULT error code.


Ordinals 17,18,19,20,21 and 22 are related and together provide a compact list structure (a "DataBlock List"), which may be stored and retrieved from an IStream object.
The exposed Api consists of:
- SHWriteDataBlockList(3w) - Write a DataBlock list to a stream,
- SHReadDataBlockList(3w) - Read and create a list from a stream,
- SHFreeDataBlockList(3w) - Free a list,
- SHAddDataBlock(3w) - Insert a new item into a list,
- SHRemoveDataBlock(3w) - Remove an item from a list,
- SHFindDataBlock(3w) - Find an item in a list.
The DataBlock list is stored packed into a memory array. Each element has a size and an associated ID. Elements must be less than 64k if the list is to be subsequently read from a stream.
Elements are aligned on DWORD boundaries. If an elements data size is not a DWORD size multiple, the element is wrapped by inserting a surrounding element with an Id of 0xFFFFFFFF, and size sufficient to pad to a DWORD boundary.
These functions are slow for large objects and long lists.


Exported by ordinal only. Use GetProcAddress(3w) to obtain a pointer to the function.
Implemented in "dlls/shlwapi/clist.c".
Debug channel "shell".
Oct 2012 Wine API