Variant Streaming Code

.

Overview

This code provides two global functions, WriteVariantToStream and ReadVariantFromStream, that enable you to read and write a variant to a stream. In addition, there are two other global functions, ReadVariantFromBlob and WriteVariantToBlob, for reading and writing a variant to a BLOB.

Highlights

Here are some of the main advantages of these functions:
  • Uses any given IStream to stream the Variant into and out of.
  • Data is streamed in efficient binary form.
  • Stream is versioned for backwards compatibility.
  • Supports arbitrary size and arbitrary dimension safe-arrays.
  • Object streaming is supported if the object in variant supports IPersistStream[Init].
  • All code is in one header file (VariantStream.h) and only two routines are exposed: WriteVariantToStream and ReadVariantFromStream.
  • Comes with supporting test code that tests the header file -- in case code is modified
  • Does not use C++ exception handling.  Test project has EH flag turned..
  • Doesn't use the CRT.
  • Does not use any Direct-To-COM (VC++'s comdef.h, such as _variant_t, _bstr_t, _com_ptr, _com_error)
  • Works in both Unicode and ANSI

Downloads

Download source - 37 Kb


Comments

  • There may be a way to do this using VARIANT_UserMarshal, VARIANT_UserUnmarshal

    Posted by kasajian on 01/14/2010 05:14pm

    It may be possible to do this using these functions: VARIANT_UserMarshal VARIANT_UserUnmarshal

    Reply
  • The hope page for this code

    Posted by kasajian on 08/23/2007 12:31pm

    http://kasajian.com/VariantStream.html

    Reply
  • Excellent!

    Posted by Legacy on 01/09/2003 12:00am

    Originally posted by: Greg Holt

    Very well thought out code. Very clean and easy to understand. I don't understand why Microsoft doesn't provide this functionality.

    Only enhancement that I would like to see (and will probably end up writing it myself) is the ability to use BLOB data instead of an IStream. I know that you can use StreamToTaskMemory and BlobToStream but I don't want the overhead of having to always create a Stream everytime I want to write/read a variant.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: March 19, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT The 2015 Enterprise Mobile Application Survey asked 250 mobility professionals what their biggest mobile challenges are, how many employees they are equipping with mobile apps, and their methods for driving value with mobility. Join Dan Woods, Editor and CTO of CITO Research, and Alan Murray, SVP of Products at Apperian, as they break down the results of this survey and discuss how enterprises are using mobile application management and private …

  • Finance leaders have been talking about expanding the value-added role of their teams for a long time. The debate is no longer whether the finance and accounting function needs to become a more strategic partner to the rest of the business but rather how to get there. Technology innovation has caught up to this ambition, and what was once aspiration can be a reality – and the choice is now yours. Read this research report to learn how to make the most of information tools to enable innovation and growth.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date