d6e98794b4
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352224 13f79535-47bb-0310-9956-ffa450edef68
2579 lines
76 KiB
HTML
2579 lines
76 KiB
HTML
<html>
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<meta content="text/html; charset=ISO-8859-1">
|
|
<title>HPSF Internals: The Horrible Property Set Format</title>
|
|
<style type="text/css">
|
|
body { background-color: white; font-size: normal; color: black ; }
|
|
a { color: #525d76; }
|
|
a.black { color: #000000;}
|
|
table {border-width: 0; width: 100%}
|
|
table.centered {text-align: center}
|
|
table.title {text-align: center; width: 80%}
|
|
img{border-width: 0;}
|
|
span.s1 {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
|
|
span.s1_white { font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #ffffff; }
|
|
span.title {font-family: Helvetica, Arial, sans-serif; font-weight: bold; color: #000000; }
|
|
span.c1 {color: #000000; font-family: Helvetica, Arial, sans-serif}
|
|
tr.left {text-align: left}
|
|
hr { width: 100%; size: 2}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
<tr>
|
|
<td valign="top" align="left"><a href="http://jakarta.apache.org/index.html"><img hspace="0" vspace="0" border="0" src="images/jakarta-logo.gif"></a></td><td width="100%" valign="top" align="left" bgcolor="#ffffff"><img hspace="0" vspace="0" border="0" align="right" src="images/header.gif"></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" bgcolor="#525d76"><span class="c1"><a class="black" href="http://www.apache.org/">www.apache.org ></a><a class="black" href="http://jakarta.apache.org/">jakarta.apache.org ></a><a href="http://jakarta.apache.org/poi/" class="black">jakarta.apache.org/poi</a></span></td>
|
|
</tr>
|
|
<tr>
|
|
<td height="8"></td>
|
|
</tr>
|
|
</table>
|
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
|
<tr>
|
|
<td width="1%">
|
|
<br>
|
|
</td><td nowrap="1" valign="top" width="14%">
|
|
<hr>
|
|
<span class="s1">Navigation</span>
|
|
<br>
|
|
<a class="s1" href="../index.html">Main</a>
|
|
<br>
|
|
<hr>
|
|
<span class="s1">HPSF</span>
|
|
<br>
|
|
<a class="s1" href="index.html">Overview</a>
|
|
<br>
|
|
<a class="s1" href="how-to.html">How To</a>
|
|
<br>
|
|
<a class="s1" href="internals.html">Internals</a>
|
|
<br>
|
|
<a class="s1" href="todo.html">To Do</a>
|
|
<br>
|
|
</td><td width="1%">
|
|
<br>
|
|
</td><td align="left" valign="top" width="*">
|
|
<title>HPSF Internals: The Horrible Property Set Format</title>
|
|
<table width="100%" align="center" class="centered">
|
|
<tbody>
|
|
<tr>
|
|
<td align="center">
|
|
<table border="0" cellpadding="1" cellspacing="0" class="title">
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#525d76">
|
|
<table width="100%" border="0" cellpadding="2" cellspacing="0" class="centered">
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#f3dd61"><span class="title">HPSF Internals: The Horrible Property Set Format</span></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<font size="-2" color="#000000">
|
|
<p>
|
|
<a href="mailto:"></a>
|
|
</p>
|
|
</font>
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="100%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+1"><font face="Arial,sans-serif"><b>HPSF Internals</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Introduction</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">A Microsoft Office document is internally organized like a filesystem
|
|
with directory and files. Microsoft calls these files
|
|
<em>streams</em>. A document can have properties attached to it,
|
|
like author, title, number of words etc. These metadata are not stored in
|
|
the main stream of, say, a Word document, but instead in a dedicated
|
|
stream with a special format. Usually this stream's name is
|
|
<code>\005SummaryInformation</code>, where <code>\005</code> represents
|
|
the character with a decimal value of 5.</p>
|
|
|
|
|
|
<p align="justify">A single piece of information in the stream is called a
|
|
<em>property</em>, for example the document title. Each property
|
|
has an integral <em>ID</em> (e.g. 2 for title), a
|
|
<em>type</em> (telling that the title is a string of bytes) and a
|
|
<em>value</em> (what this is should be obvious). A stream
|
|
containing properties is called a
|
|
<em>property set stream</em>.</p>
|
|
|
|
|
|
<p align="justify">This document describes the internal structure of a property set stream,
|
|
i.e. the <em>Horrible Property Set Format (HDF)</em>. It does not
|
|
describe how a Microsoft Office document is organized internally and how
|
|
to retrieve a stream from it. See the <a href="../poifs/index.html">POIFS documentation</a> for that kind of
|
|
stuff.</p>
|
|
|
|
|
|
<p align="justify">The Horrible Property Set Format is not only used in the Summary
|
|
Information stream in the top-level document of a Microsoft Office
|
|
document. Often there is also a property set stream named
|
|
<code>\005DocumentSummaryInformation</code> with additional properties.
|
|
Embedded documents may have their own property set streams. You cannot
|
|
tell by a stream's name whether it is a property set stream or not.
|
|
Instead you have to open the stream and look at its bytes.</p>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Data Types</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">Before delving into the details of the property set stream format we
|
|
have to have a short look at data types. Integral values are stored in the
|
|
so-called <em>little endian</em> format. In this format the bytes
|
|
that make out an integral value are stored in the "wrong" order. For
|
|
example, the decimal value 4660 is 0x1234 in the hexadecimal notation. If
|
|
you think this should be represented by a byte 0x12 followed by another
|
|
byte 0x34, you are right. This is called the <em>big endian</em>
|
|
format. In the little endian format, however, this order is reversed and
|
|
the low-value byte comes first: 0x3412.
|
|
</p>
|
|
|
|
|
|
<p align="justify">The following table gives an overview about some important data
|
|
types:</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Name</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Length</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Example (Little Endian)</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Example (Big Endian)</p>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<em>Bytes</em>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">1 byte</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x12</code>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x12</code>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<em>Word</em>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">2 bytes</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x1234</code>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x3412</code>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<em>DWord</em>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">4 bytes</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x12345678</code>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x78563412</code>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">
|
|
<em>ClassID</em>
|
|
</p>
|
|
|
|
<p align="justify">A sequence of one DWord, two Words and eight Bytes</p>
|
|
|
|
</font></td>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">16 bytes</p>
|
|
|
|
</font></td>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">
|
|
<code>0xE0859FF2F94F6810AB9108002B27B3D9</code> resp.
|
|
<code>E0859FF2-F94F-6810-AB-91-08-00-2B-27-B3-D9</code>
|
|
</p>
|
|
|
|
</font></td>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">
|
|
<code>0xF29F85E04FF91068AB9108002B27B3D9</code> resp.
|
|
<code>F29F85E0-4FF9-1068-AB-91-08-00-2B-27-B3-D9</code>
|
|
</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">The ClassID examples are given here in two different notations. The
|
|
second notation without the "0x" at the beginning and with dashes
|
|
inside shows the internal grouping into one DWord, two Words and eight
|
|
Bytes.</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">
|
|
<em>Watch out:</em> Microsoft documentation and tools show class IDs
|
|
a little bit differently like
|
|
<code>F29F85E0-4FF9-1068-AB91-08002B27B3D9</code>.
|
|
However, that representation is (intentionally?) misleading with
|
|
respect to endianess.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>HPSF Overview</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">A property set stream consists of three main parts:</p>
|
|
|
|
|
|
<ol>
|
|
|
|
<li>
|
|
|
|
<p align="justify">The <em>header</em> and</p>
|
|
|
|
</li>
|
|
|
|
<li>
|
|
|
|
<p align="justify">the <em>section(s)</em> containing the properties.</p>
|
|
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>The Header</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">The first bytes in a property set stream is the <em>header</em>.
|
|
It has a fixed length and looks like this:</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Offset</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Type</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Contents</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Remarks</p>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">0</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Word</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0xFFFE</code>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">If the first four bytes of a stream do not contain these values, the
|
|
stream is not a property set stream.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">2</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Word</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x0000</code>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">4</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Denotes the operating system and the OS version under which this
|
|
stream was created. The operating system ID is in the DWord's higher
|
|
word (after little endian decoding): <code>0x0000</code> for Win16,
|
|
<code>0x0001</code> for Macintosh and <code>0x0002</code> for Win32 - that's
|
|
all. The reader is most likely aware of the fact that there are some
|
|
more operating systems. However, Microsoft does not seem to know.</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">8</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">ClassID</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<code>0x00000000000000000000000000000000</code>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Most property set streams have this value but this is not
|
|
required.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">24</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">
|
|
<code>0x01000000</code> or greater</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Section count. This field's value should be equal to 1 or greater.
|
|
Microsoft claims that this is a "reserved" field, but it seems to tell
|
|
how many sections (see below) are following in the stream. This would
|
|
really make sense because otherwise you could not know where and how
|
|
far you should read section data.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Section List</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">Following the header is the section list. This is an array of pairs each
|
|
consisting of a section format ID and an offset. This array has as many
|
|
pairs of ClassID and and DWord fields as the section count field in the
|
|
header says. The Summary Information stream contains a single section, the
|
|
Document Summary Information stream contains two.</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Type</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Contents</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Remarks</p>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">ClassID</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Section format ID</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">
|
|
<code>0xF29F85E04FF91068AB9108002B27B3D9</code> for the single section
|
|
in the Summary Information stream.</p>
|
|
|
|
|
|
<p align="justify">
|
|
<code>0xD5CDD5022E9C101B939708002B2CF9AE</code> for the first
|
|
section in the Document Summary Information stream.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Offset</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">The number of bytes between the beginning of the stream and the
|
|
beginning of the section within the stream.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">ClassID</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Section format ID</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Offset</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Section</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">A section is divided into three parts: the section header (with the
|
|
section length and the number of properties in the section), the
|
|
properties list (with type and offset of each property), and the
|
|
properties themselves. Here are the details:</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify"> </p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Type</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Contents</p>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<p align="justify">Remarks</p>
|
|
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Section header</p>
|
|
|
|
</font></td>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Length</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">The length of the section in bytes.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Property count</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">The number of properties in the section.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Properties list</p>
|
|
|
|
</font></td>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Property ID</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">The property ID tells what the property means. For example, an ID of
|
|
<code>0x0002</code> in the Summary Information stands for the document's
|
|
title. See the <a href="#property_ids">Property IDs</a>
|
|
chapter below for more details.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Offset</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">The number of bytes between the beginning of the section and the
|
|
property.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Properties</p>
|
|
|
|
</font></td>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">DWord</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Property type ("variant")</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">This is the property's data type, e.g. an integer value, a byte
|
|
string or a Unicode string. See the
|
|
<a href="#property_types"><em>Property Types</em></a> chapter for
|
|
details!</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<em>Field length depends on the property type
|
|
("variant")</em>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">Property value</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">This field's length depends on the property's type. These are the
|
|
bytes that make out the DWord, the byte string or some other data of
|
|
fixed or variable length.</p>
|
|
|
|
|
|
<p align="justify">The property value's length is always stored in an area which is a
|
|
multiple of 4 in length. If the property is shorter, e.g. a byte
|
|
string of 13 bytes, the remaining bytes are padded with <code>0x00</code>
|
|
bytes.</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000"></font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
|
|
<p align="justify">...</p>
|
|
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Property IDs</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<anchor id="property_ids"></anchor>
|
|
|
|
|
|
<p align="justify">As seen above, a section holds a property list: an array with property
|
|
IDs and offsets. The property ID gives each property a meaning. For
|
|
example, in the Summary Information stream the property ID 2 says that
|
|
this property is the document's title.</p>
|
|
|
|
|
|
<p align="justify">If you want to know a property ID's meaning, it is not sufficient to
|
|
know the ID itself. You must also know the
|
|
<em>section format ID</em>. For example, in the Document Summary
|
|
Information stream the property ID 2 means not the document's title but
|
|
its category. Due to Microsoft's infinite wisdom the section format ID is
|
|
not part of the section. Thus if you have only a section without the
|
|
stream it is in, you cannot make any sense of the properties because you
|
|
do not know what they mean.</p>
|
|
|
|
|
|
<p align="justify">So each section format ID has its own name space of property IDs.
|
|
Microsoft defined some "well-known" property IDs for the Summary
|
|
Information and the Document Summary Information streams. You can extend
|
|
them by your own additional IDs. This will be described below.</p>
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="98%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="-1"><font face="Arial,sans-serif"><b>Property IDs in The Summary Information Stream</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">The Summary Information stream has a single section with a section
|
|
format ID of <code>0xF29F85E04FF91068AB9108002B27B3D9</code>. The following
|
|
table defines the meaning of its property IDs. Each row associates a
|
|
property ID with a <em>name</em> and an <em>ID string</em>. (The property
|
|
<em>type</em> is just for informational purposes given here. As we have
|
|
seen above, the type is always given along with the value.)</p>
|
|
|
|
|
|
<p align="justify">The property <em>name</em> is a readable string which could be
|
|
displayed to the user. However, this string is useful only for users who
|
|
understand English. The property name does not help with other
|
|
languages.</p>
|
|
|
|
|
|
<p align="justify">The property <em>ID string</em> is about the same but looks more
|
|
technically and is nothing a user should bother with. You could the ID
|
|
string and map it to an appropriate display string in a particular
|
|
language. Of course you could do that with the property ID as well and
|
|
with less overhead, but people (including software developers) tend to be
|
|
better in remembering symbolic constants than remembering numbers.</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property ID</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property Name</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property ID String</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property Type</p>
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">2</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Title</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_TITLE</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">3</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Subject</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_SUBJECT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">4</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Author</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_AUTHOR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">5</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Keywords</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_KEYWORDS</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">6</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Comments</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_COMMENTS</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">7</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Template</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_TEMPLATE</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">8</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Last Saved By</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_LASTAUTHOR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">9</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Revision Number</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_REVNUMBER</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">10</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Total Editing Time</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_EDITTIME</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_FILETIME</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">11</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Last Printed</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_LASTPRINTED</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_FILETIME</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">12</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Create Time/Date</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_CREATE_DTM</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_FILETIME</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">13</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Last Saved Time/Date</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_LASTSAVE_DTM</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_FILETIME</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">14</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Number of Pages</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_PAGECOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">15</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Number of Words</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_WORDCOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">16</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Number of Characters</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_CHARCOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">17</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Thumbnail</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_THUMBNAIL</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_CF</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">18</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Name of Creating Application</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_APPNAME</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">19</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Security</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_SECURITY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="98%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="-1"><font face="Arial,sans-serif"><b>Property IDs in The Document Summary Information Stream</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">The Document Summary Information stream has two sections with a section
|
|
format ID of <code>0xD5CDD5022E9C101B939708002B2CF9AE</code> for the first
|
|
one. The following table defines the meaning of the property IDs in the
|
|
first section. See the preceeding section for interpreting the table.</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property ID</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property name</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Property ID string</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">VT type</p>
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">2</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Category</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_CATEGORY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">3</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PresentationTarget</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_PRESFORMAT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">4</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Bytes</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_BYTECOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">5</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Lines</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_LINECOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">6</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Paragraphs</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_PARCOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">7</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Slides</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_SLIDECOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">8</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Notes</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_NOTECOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">9</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">HiddenSlides</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_HIDDENCOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">10</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">MMClips</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_MMCLIPCOUNT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">11</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">ScaleCrop</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_SCALE</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BOOL</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">12</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">HeadingPairs</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_HEADINGPAIR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_VARIANT | VT_VECTOR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">13</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">TitlesofParts</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_DOCPARTS</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR | VT_VECTOR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">14</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Manager</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_MANAGER</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">15</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Company</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_COMPANY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">16</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">LinksUpTo Date</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">PID_LINKSDIRTY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BOOL</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>Property Types</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
<anchor id="property_types"></anchor>
|
|
|
|
|
|
<p align="justify">A property consists of a DWord <em>type field</em> followed by the
|
|
property value. The property type is an integer value and tells how the
|
|
data byte following it are to be interpreted. In the Microsoft world it is
|
|
also known as the <em>variant</em>.</p>
|
|
|
|
|
|
<p align="justify">The <em>Usage</em> column says where a variant type may occur. Not all
|
|
of them are allowed in a property set but just those marked with a [P].
|
|
<em>[V]</em> - may appear in a VARIANT, <em>[T]</em> - may
|
|
appear in a TYPEDESC, <em>[P]</em> - may appear in an OLE property
|
|
set, <em>[S]</em> - may appear in a Safe Array.</p>
|
|
|
|
|
|
<table width="100%" cellspacing="2" cellpadding="2" border="0">
|
|
<tr>
|
|
|
|
<tr>
|
|
<p align="justify">Variant ID</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Variant Type</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Usage</p>
|
|
</tr>
|
|
|
|
<tr>
|
|
<p align="justify">Description</p>
|
|
</tr>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_EMPTY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">nothing</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">1</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_NULL</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">SQL style Null</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">2</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I2</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">2 byte signed int</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">3</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I4</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">4 byte signed int</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">4</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_R4</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">4 byte real</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">5</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_R8</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">8 byte real</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">6</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_CY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">currency</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">7</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_DATE</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">date</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">8</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BSTR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">OLE Automation string</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">9</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_DISPATCH</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">IDispatch *</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">10</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_ERROR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">SCODE</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">11</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BOOL</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">True=-1, False=0</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">12</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_VARIANT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VARIANT *</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">13</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_UNKNOWN</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">IUnknown *</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">14</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_DECIMAL</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">16 byte fixed point</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">16</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I1</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">signed char</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">17</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_UI1</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V] [T] [P] [S]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">unsigned char</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">18</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_UI2</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">unsigned short</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">19</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_UI4</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">unsigned short</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">20</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_I8</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">signed 64-bit int</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">21</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_UI8</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">unsigned 64-bit int</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">22</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_INT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">signed machine int</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">23</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_UINT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">unsigned machine int</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">24</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_VOID</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">C style void</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">25</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_HRESULT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Standard return type</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">26</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_PTR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">pointer type</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">27</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_SAFEARRAY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">(use VT_ARRAY in VARIANT)</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">28</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_CARRAY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">C style array</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">29</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_USERDEFINED</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">user defined type</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">30</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPSTR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">null terminated string</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">31</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_LPWSTR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[T] [P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">wide null terminated string</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">64</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_FILETIME</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">FILETIME</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">65</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BLOB</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Length prefixed bytes</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">66</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_STREAM</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Name of the stream follows</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">67</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_STORAGE</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Name of the storage follows</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">68</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_STREAMED_OBJECT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Stream contains an object</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">69</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_STORED_OBJECT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Storage contains an object</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">70</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BLOB_OBJECT</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Blob contains an object</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">71</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_CF</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">Clipboard format</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">72</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_CLSID</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">A Class ID</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0x1000</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_VECTOR</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[P]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">simple counted array</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0x2000</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_ARRAY</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">SAFEARRAY*</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0x4000</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_BYREF</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">[V]</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">void* for local use</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0x8000</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_RESERVED</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0xFFFF</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_ILLEGAL</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0xFFF</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_ILLEGALMASKED</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
<tr>
|
|
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">0xFFF</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">VT_TYPEMASK</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
<td valign="top" bgcolor="#a0ddf0" align="left"><font size="-1" color="#000000">
|
|
<p align="justify">
|
|
<p align="justify"></p>
|
|
</p>
|
|
</font></td>
|
|
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
|
|
|
|
|
|
<div align="right">
|
|
<table cellspacing="0" cellpadding="2" border="0" width="99%">
|
|
<tr>
|
|
<td bgcolor="#525D76"><font color="#ffffff" size="+0"><font face="Arial,sans-serif"><b>References</b></font></font></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<br>
|
|
|
|
|
|
<p align="justify">In order to assemble the HPSF description I used information publically
|
|
available on the Internet only. The references given below have been very
|
|
helpful. If you have any amendments or corrections, please let us know!
|
|
Thank you!</p>
|
|
|
|
|
|
<ol>
|
|
|
|
|
|
<li>
|
|
|
|
<p align="justify">In
|
|
<a href="http://www.kyler.com/pubs/ddj9894.html"><em>Understanding OLE
|
|
documents</em></a>, Ken Kyler gives an introduction to OLE2
|
|
documents
|
|
and especially to property sets. He names the property names, types, and
|
|
IDs of the Summary Information and Document Summary Information
|
|
stream.</p>
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
<p align="justify">The
|
|
<a href="http://www.dwam.net/docs/oleref/"><em>ActiveX Programmer's
|
|
Reference</em></a> at
|
|
<a href="http://www.dwam.net/docs/oleref/">http://www.dwam.net/docs/oleref/</a>
|
|
seems a little outdated, but that's what I have found.</p>
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
<p align="justify">An overview of the <code>VT_</code> types is in
|
|
<a href="http://www.marin.clara.net/COM/variant_type_definitions.htm"><em>Variant
|
|
Type Definitions</em></a>.</p>
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
<p align="justify">What is a <code>FILETIME</code>? The answer can be found for example under
|
|
<a href="http://www.vbapi.com/ref/f/filetime.html">http://www.vbapi.com/ref/f/filetime.html</a>
|
|
or
|
|
<a href="http://www.cs.rpi.edu/courses/fall01/os/FILETIME.html">http://www.cs.rpi.edu/courses/fall01/os/FILETIME.html</a>. In
|
|
short:
|
|
<em>The FILETIME structure holds a date and time associated with a file.
|
|
The structure identifies a 64-bit integer specifying the number of
|
|
100-nanosecond intervals which have passed since January 1, 1601. This
|
|
64-bit value is split into the two dwords stored in the
|
|
structure.</em>
|
|
</p>
|
|
|
|
</li>
|
|
|
|
|
|
<li>
|
|
|
|
<p align="justify">This documentation origins from the <a href="http://www.rainer-klute.de/~klute/Software/poibrowser/doc/HPSF-Description.html">HPSF description</a> available at <a href="http://www.rainer-klute.de/~klute/Software/poibrowser/doc/HPSF-Description.html">http://www.rainer-klute.de/~klute/Software/poibrowser/doc/HPSF-Description.html</a>.</p>
|
|
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<hr noshade="" size="1">
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center"><i>Copyright © 2002 Apache Software Foundation</i></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right" width="100%">
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="right" width="100%"><a href="http://krysalis.org/"><img alt="Krysalis Logo" src="images/krysalis-compatible.png"></a><a href="http://xml.apache.org/cocoon/"><img alt="Cocoon Logo" src="images/built-with-cocoon.png"></a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</body>
|
|
</html>
|