Home COM GDI+ WebBrowser Data Access

Structured Storage Structures

 

Structures

 

PROPSPEC

PROPVARIANT

RemSNB

SNB

STATPROPSETSTG
 

 

STATPROPSTG

STATSTG

STGOPTIONS

StorageLayout

 

PROPSPEC

 

The PROPSPEC structure is used by many of the methods of IPropertyStorage to specify a property either by its property identifier (ID) or the associated string name.

 

 

UNION PROPSPECDATA
   propid AS LONG
   lpwstr AS DWORD
END UNION

TYPE PROPSPEC
   ulKind AS DWORD
   pd AS PROPSPECDATA
END TYPE

 

 

PROPVARIANT

 

The PROPVARIANT structure is used in the ReadMultiple and WriteMultiple methods of IPropertyStorage to define the type tag and the value of a property in a property set. There are five members. The first member, the value-type tag, and the last member, the value of the property, are significant. The middle three members are reserved for future use.

Note  The bool member in previous definitions of this structure has been renamed to boolVal, because some compilers now recognize bool as a keyword.

Note  The PROPVARIANT structure, defined below, includes types that can be serialized in the version 1 property set serialization format. The version 1 format supports all types allowed in the version 0 format plus some additional types.

 

 

TYPE BLOB
   cbSize AS DWORD
   pBlobData AS BYTE PTR
END TYPE
 

TYPE CAC
   cElems AS DWORD
   pElems AS BYTE PTR
END TYPE

 

TYPE CAUB
   cElems AS DWORD
   pElems AS BYTE PTR
END TYPE
 

TYPE CAI
   cElems AS DWORD
   pElems AS INTEGER PTR
END TYPE
 

TYPE CAUI
   cElems AS DWORD
   pElems AS WORD PTR
END TYPE
 

TYPE CAL
   cElems AS DWORD
   pElems AS LONG PTR
END TYPE

TYPE CAUL
   cElems AS DWORD
   pElems AS DWORD PTR
END TYPE
 

TYPE CAFLT
   cElems AS DWORD
   pElems AS SINGLE PTR
END TYPE
 

TYPE CADBL
   cElems AS DWORD
   pElems AS DOUBLE PTR
END TYPE
 

TYPE CACY
   cElems AS DWORD
   pElems AS CUR PTR
END TYPE
 

TYPE CADATE
   cElems AS DWORD
   pElems AS DOUBLE PTR
END TYPE
 

TYPE CABSTR
   cElems AS DWORD
   pElems AS STRING PTR
END TYPE
 

TYPE CABSTRBLOB
   cElems AS DWORD
   pElems AS DWORD PTR
END TYPE
 

TYPE CABOOL
   cElems AS DWORD
   pElems AS INTEGER PTR
END TYPE
 

TYPE CASCODE
   cElems AS DWORD
   pElems AS LONG PTR
END TYPE
 

TYPE CAPROPVARIANT
   cElems AS DWORD
   pElems AS DWORD PTR
END TYPE
 

TYPE CAH
   cElems AS DWORD
   pElems AS QUAD PTR
END TYPE
 

TYPE CAUH
   cElems AS DWORD
   pElems AS QUAD PTR
END TYPE
 

TYPE CALPSTR
   cElems AS DWORD
   pElems AS DWORD PTR
END TYPE
 

TYPE CALPWSTR
   cElems AS DWORD
   pElems AS DWORD PTR
END TYPE
 

TYPE CAFILETIME
   cElems AS DWORD
   pElems AS FILETIME PTR
END TYPE
 

TYPE CLIPDATA
   cbSize AS DWORD
   ulClipFmt AS LONG
   pClipData AS BYTE PTR
END TYPE
 

TYPE CACLIPDATA
   cElems AS DWORD
   pElems AS CLIPDATA PTR
END TYPE
 

TYPE CACLSID
   cElems AS DWORD
   pElems AS GUID PTR
END TYPE
 

UNION PROPVARIANTDATA
   cVal AS BYTE ' CHAR [VT_I1]
   bVal AS BYTE ' UCHAR [VT_UI1]
   iVal AS INTEGER ' SHORT [VT_I2]
   uiVal AS WORD ' USHORT [VT_UI2]
   lVal AS LONG ' LONG [VT_I4]
   ulVal AS DWORD ' ULONG [VT_UI4]
   intVal AS LONG ' INT [VT_INT]
   uintVal AS DWORD ' UINT [VT_UINT]
   hVal AS QUAD ' LARGE_INTEGER <record>
   uhVal AS QUAD ' ULARGE_INTEGER <record>
   fltVal AS SINGLE ' FLOAT [VT_R4]
   dblVal AS DOUBLE ' DOUBLE [VT_R8]
   boolVal AS INTEGER ' VARIANT_BOOL [VT_BOOL]
   scode AS LONG ' SCODE [VT_ERROR]
   cyVal AS CUR ' CY [VT_CY]
   date AS DOUBLE ' DATE [VT_DATE]
   tFileTime AS FILETIME ' FILETIME <record>
   puuid AS GUID PTR ' CLSID __RPC_FAR *puuid [*GUID <record>]
   pclipdata AS CLIPDATA PTR ' CLIPDATA __RPC_FAR *pclipdata [*CLIPDATA <record>]
   bstrVal AS DWORD ' BSTR [VT_BSTR <DYNAMIC UNICODE STRING>]
   bstrblobVal AS BSTRBLOB ' BSTRBLOB <record> [VT_BSTR_BLOB]
   tBlob AS BLOB ' BLOB <record> [VT_BLOB, VT_BLOBOBJECT]
   pszVal AS ASCIIZ PTR ' LPSTR [VT_LPSTR <ANSI STRING>]
   pwszVal AS DWORD ' LPWSTR [VT_LPWSTR <NULL TERMINATED UNICODE STRING>]
   punkVal AS DWORD ' IUnknown* [VT_UNKNOWN]
   pdispVal AS DWORD ' IDispatch* [VT_DISPATCH]
   pStream AS DWORD PTR ' IStream __RPC_FAR *pStream [*IStream <interface>] [VT_STREAM, VT_STREAMED_OBJECT]
   pStorage AS DWORD PTR ' IStorage __RPC_FAR *pStorage [*IStorage <interface>] [VT_STORAGE, VT_STORED_OBJECT]
   pVersionedStream AS VersionedStream PTR ' *VersionedStream <record> [VT_VERSIONED_STREAM]
   parray AS DWORD ' LPSAFEARRAY [VT_ARRAY | VT_*, Version 1]
   tcac AS CAC ' CAC <record> [VT_VECTOR | VT_I1, Version 1]
   tcaub AS CAUB ' CAUB <record> [VT_VECTOR | VT_UI1]
   tcai AS CAI ' CAI <record> [VT_VECTOR | VT_I2]
   tcaui AS CAUI ' CAUI <record> [VT_VECTOR | VT_UI2]
   tcal AS CAL ' CAL <record> [VT_VECTOR | VT_I4]
   tcaul AS CAUL ' CAUL <record> [VT_VECTOR | VT_UI4]
   tcah AS CAH ' CAH <record> [VT_VECTOR | VT_I8]
   tcauh AS CAUH ' CAUH <record> [VT_VECTOR | VT_UI8]
   tcaflt AS CAFLT ' CAFLT <record> [VT_VECTOR | VT_R4]
   tcadbl AS CADBL ' CADBL <record> [VT_VECTOR | VT_R8]
   tcabool AS CABOOL ' CABOOL <record> [VT_VECTOR | VT_BOOL]
   tcascode AS CASCODE ' CASCODE <record> [VT_VECTOR | VT_ERROR]
   tcacy AS CACY ' CACY <record> [VT_VECTOR | VT_CY]
   tcadate AS CADATE ' CADATE <record> [VT_VECTOR | VT_DATE]
   tcafiletime AS CAFILETIME ' CAFILETIME <record> [VT_VECTOR | VT_FILETIME]
   tcauuid AS CACLSID ' CACLSID <record> [VT_VECTOR | VT_CLSID]
   tcaclipdata AS CACLIPDATA ' CACLIPDATA <record> [VT_VECTOR | VT_CF]
   tcabstr AS CABSTR ' CABSTR <record> [VT_VECTOR | VT_BSTR]
   tcabstrblob AS CABSTRBLOB ' CABSTRBLOB <record> [VT_VECTOR | VT_BSTR_BLOB]
   tcalpstr AS CALPSTR ' CALPSTR <record> [VT_VECTOR | VT_LPSTR]
   tcalpwstr AS CALPWSTR ' CALPWSTR <record> [VT_VECTOR | VT_LPWSTR]
   tcappropvar AS CAPROPVARIANT ' CAPROPVARIANT <record> [VT_VECTOR | VT_VARIANT]
   pcVal AS BYTE PTR ' CHAR* [VT_BYREF | VT_I1, Version 1]
   pbVal AS BYTE PTR ' UCHAR* [VT_BYREF | VT_UI1, Version 1]
   piVal AS INTEGER PTR ' SHORT* [VT_BYREF | VT_I2, Version 1]
   puiVal AS WORD PTR ' USHORT* [VT_BYREF | VT_UI2, Version 1]
   plVal AS LONG PTR ' LONG* [VT_BYREF | VT_I4, Version 1]
   pulVal AS DWORD PTR ' ULONG* [VT_BYREF | VT_UI4, Version 1]
   pintVal AS LONG PTR ' INT* [VT_BYREF | VT_INT, Version 1]
   puintVal AS DWORD PTR ' UINT* [VT_BYREF | VT_UINT, Version 1]
   pfltVal AS SINGLE PTR ' FLOAT* [VT_BYREF | VT_R4, Version 1]
   pdblVal AS DOUBLE PTR ' DOUBLE* [VT_BYREF | VT_R8, Version 1]
   pboolVal AS INTEGER PTR ' VARIANT_BOOL* [VT_BYREF | VT_BOOL, Version 1]
   pdecVal AS DECIMAL PTR ' DECIMAL* [VT_BYREF | VT_DECIMAL, Version 1]
   pscode AS LONG PTR ' SCODE* [VT_BYREF | VT_ERROR, Version 1]
   pcyVal AS CUR PTR ' CY* [VT_BYREF | VT_CY, Version 1]
   pdate AS DOUBLE PTR ' DATE* [VT_BYREF | VT_DATE, Version 1]
   pbstrVal AS STRING PTR ' BSTR* [VT_BYREF | VT_BSTR, Version 1]
   ppunkVal AS DWORD PTR ' IUnknown** [VT_BYREF | VT_UNKNOWN, Version 1]
   ppdispVal AS DWORD PTR ' IDispatch** [VT_BYREF | VT_DISPATCH, Version 1]
   pparray AS DWORD ' LPSAFEARRAY* [VT_BYREF | VT_ARRAY, Version 1]
   pvarVal AS DWORD ' PROPVARIANT* [VT_BYREF | VT_VARIANT, Version 1]
END UNION

TYPE PROPVARIANT
   vt AS WORD             ' VARTYPE
   wReserved1 AS WORD
   wReserved2 AS WORD
   wReserved3 AS WORD
   vd AS PROPVARIANTDATA
END TYPE

 

 

RemSNB

 

The RemSNB structure is used for marshaling the SNB data type.

 

 

TYPE RemSNB
   ulCntStr AS DWORD
   ulCntChar AS DWORD
   rgString AS DWORD
END TYPE

 

 

STATPROSETSTG

 

The STATPROPSETSTG structure contains information about a property set. To get this information, call IPropertyStorage::Stat, which fills in a buffer containing the information describing the current property set. To enumerate the STATPROPSETSTG structures for the property sets in the current property-set storage, call IPropertySetStorage::Enum to get a pointer to an enumerator. You can then call the enumeration methods of the IEnumSTATPROPSETSTG interface on the enumerator.

 

 

TYPE STATPROPSETSTG
   fmtid AS GUID
   rclsid AS GUID
   grfFlags AS DWORD
   mtime AS FILETIME
   ctime AS FILETIME
   atime AS FILETIME
   dwOSVersion AS DWORD
END TYPE

 

 

STATPROPSTG

 

The STATPROPSTG structure contains data about a single property in a property set. This data is the property ID and type tag, and the optional string name that may be associated with the property.

 

IPropertyStorage::Enum supplies a pointer to the IEnumSTATPROPSTG interface on an enumerator object that can be used to enumerate the STATPROPSTG structures for the properties in the current property set.

 

 

TYPE STATPROPSTG
   lpwstrName AS DWORD
   propid AS LONG
   vt AS WORD
   wFill AS WORD      ' For DWORD alignment
END TYPE

 

 

STATSTG

 

The STATSTG structure contains statistical data about an open storage, stream, or byte-array object. This structure is used in the IEnumSTATSTG, ILockBytes, IStorage, and IStream interfaces.

 

 

TYPE STATSTG
   pwcsName AS DWORD
   ntype AS DWORD
   cbSize AS QUAD
   mtime AS FILETIME
   ctime AS FILETIME
   atime AS FILETIME
   grfMode AS DWORD
   grfLocksSupported AS DWORD
   nclsid AS GUID
   grfStateBits AS DWORD
   reserved AS DWORD
END TYPE

 

 

STGOPTIONS

 

The STGOPTIONS structure specifies features of the storage object, such as sector size, in the StgCreateStorageEx and StgOpenStorageEx functions.

 

 

TYPE STGOPTIONS
   usVersion AS WORD
   reserved AS WORD
   ulSectorSize AS DWORD
   pwcsTemplateFile AS DWORD
END TYPE

 

 

StorageLayout

 

The StorageLayout structure describes a single block of data, including its name, location, and length. To optimize a compound file, an application or layout tool passes an array of StorageLayout structures in a call to ILayoutStorage::LayoutScript.

 

 

TYPE StorageLayout
   LayoutType AS DWORD
   pwcsElementName AS DWORD
   cOffset AS QUAD
   cBytes AS QUAD
END TYPE

 

 

Page last updated on Monday, 27 March 2006 09:15:16 +0100