_di_IXMLNode pChild = pNode->AddChild( "ExifID" );
char sExifID[6];
ms->Read( sExifID, 6 );
pChild->Text = sExifID;
pChild = pNode->AddChild( "TIFFHeader" );
BYTE * pHeader = static_cast<BYTE *>( ms->Memory ) + ( int )ms->Position;
GetTIFFHeader( pChild, pHeader );
return ms->Size;
}
其中FXMLDoc是一个TXMLDocument控件,用于生成XML。LoadFromStream方法读入的内容为JPEG APP1这个Marker Segment的内容(注意,不是JPEG文件)。GetTIFFHeader方法用于读出TIFFHeader的内容,包括Image File Header和IFD链表。GetIFD则是用于解读IFD的具体内容,其中包括对EXIF的三个扩充IFD的递归解读,并且其中包含了将各种数据类型转换为字符串的部分,特别是对不定长的UNDEFINED类型的处理(其结果见下面转换后的XML)。