I am not sure if it is unique or not. What is more useful is to be able to assign a unique ID and use the field defined for future reference. What I have found is a utility that seems to work pretty well which I have been using to update a number of my photos is ExifWorks : "ExifWorks is a class written in 100% pure managed VB.NET, which allows comfort reading and writing of embedded EXIF metadata."
http://www.codeproject.com/KB/vb/exif_reader.aspx
A definition is here:
http://www.awaresystems....gs/privateifd/exif.html
The last item in the list is "ImageUniqueID" which is code 42016. I inserted this into the ExifWorks program and added a new function and tested it. It reads the unique ID field and also writes it. It appears to simply be an ascii field 32 characters long. If you took something like this you could use it to put the GUID into it so that there is a direct unambiguous link between the database and the picture file. What seems to be the case, but I am not sure, is that this is an official field for storing a uniqueID for a picture.
I also changed the GetHashKeyUnique function to the following line:
hashKey = System.Guid.NewGuid().ToString().Replace("-", "").ToUpper();
This creates a 32 character ASCII string from a GUID that can be directly using in the IMAGEID field in the picture.
I believe having the ability to capture some basic comments about pictures and embed in the file would be really useful for longer term archiving of photos.
If I learn anything else I will update.
Thanks.