Below is an example of a call to fpGetOLESummaryInfo():

  KVSummaryInfoEx    si;
  memset( &si, 0, sizeof(si) );
  if ( KVERR_Success != (*pInterface->fpGetOLESummaryInfo)( pKVFilter, pInput, &si ) )
      fprintf( fpOut, "Error obtaining summary information\n" );
  if ( si.nElem == 0 )
      fprintf( fpOut, "No summary information\n" );
      goto end;
  PrintSummaryInfo(&si, fpOut);
  (*pInterface->fpFreeOLESummaryInfo)( pKVFilter, &si );


pKVFilter A pointer returned from fpInit().
pInput A pointer to the developer-assigned instance of KVInputStream. The structure KVInputStream defines the input stream that contains the source.
si Points to the structure KVSummaryInfoEx. In the structure, nElem provides a count of the number of metadata elements, and pElem points to the first element of the array of individual elements, as defined by the structure KVSumInfoElemEx.

To interpret the metadata after fpGetOLESummaryInfo() is called and returns a non-zero status:

si.pElem[n].isValid Specifies whether the data value is present in the document. 1 specifies that the value is valid. For example, if the "Title" element was not populated in the document, si.pElem[1].isValid == 0 would evaluate to true.
si.pElem[n].type Specifies the data type of the metadata element. The types are defined in the structure KVSumInfoType in kvtypes.h.

A pointer to the content of the element.

If type is KV_Int4 or KV_Bool, then data contains the actual value. Otherwise, data is a pointer to the actual value.

KV_DateTime and KV_IEEE8 point to an 8-byte value.

KV_String and KV_Unicode point to the beginning of the string that contains the text. KV_Unicode is replaced with KV_String when the UNICODE value has been character mapped to the desired output character set, as specified in the call to fpInit().

si.pElem[n].pcType The name of the metadata field.