// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 > or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT >, at your option.
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
use ctypes::{c_uchar, c_ulong};
use shared::guiddef::{GUID, REFGUID};
use shared::minwindef::{BOOL, BYTE, DWORD, UINT, ULONG};
use shared::wtypes::{BSTR, CLIPFORMAT};
use um::oaidl::LPSAFEARRAY;
use um::objidl::{IPersistStream, IPersistStreamVtbl};
use um::objidlbase::{IEnumUnknown, IStream};
use um::ocidl::{IPropertyBag2, PROPBAG2};
use um::propidl::PROPVARIANT;
use um::unknwnbase::{IUnknown, IUnknownVtbl};
use um::wincodec::{
IWICComponentInfo, IWICComponentInfoVtbl, IWICEnumMetadataItem, IWICImagingFactory,
IWICImagingFactoryVtbl, IWICMetadataQueryReader, IWICMetadataQueryWriter,
};
use um::winnt::{HRESULT, ULARGE_INTEGER, WCHAR};
DEFINE_GUID!{GUID_MetadataFormatUnknown,
0 xa45e592f,
0 x9078,
0 x4a7c,
0 xad,
0 xb5,
0 x4e,
0 xdc,
0 x4f,
0 xd6,
0 x1b,
0 x1f}
DEFINE_GUID!{GUID_MetadataFormatIfd,
0 x537396c6,
0 x2d8a,
0 x4bb6,
0 x9b,
0 xf8,
0 x2f,
0 x0a,
0 x8e,
0 x2a,
0 x3a,
0 xdf}
DEFINE_GUID!{GUID_MetadataFormatSubIfd,
0 x58a2e128,
0 x2db9,
0 x4e57,
0 xbb,
0 x14,
0 x51,
0 x77,
0 x89,
0 x1e,
0 xd3,
0 x31}
DEFINE_GUID!{GUID_MetadataFormatExif,
0 x1c3c4f9d,
0 xb84a,
0 x467d,
0 x94,
0 x93,
0 x36,
0 xcf,
0 xbd,
0 x59,
0 xea,
0 x57}
DEFINE_GUID!{GUID_MetadataFormatGps,
0 x7134ab8a,
0 x9351,
0 x44ad,
0 xaf,
0 x62,
0 x44,
0 x8d,
0 xb6,
0 xb5,
0 x02,
0 xec}
DEFINE_GUID!{GUID_MetadataFormatInterop,
0 xed686f8e,
0 x681f,
0 x4c8b,
0 xbd,
0 x41,
0 xa8,
0 xad,
0 xdb,
0 xf6,
0 xb3,
0 xfc}
DEFINE_GUID!{GUID_MetadataFormatApp0,
0 x79007028,
0 x268d,
0 x45d6,
0 xa3,
0 xc2,
0 x35,
0 x4e,
0 x6a,
0 x50,
0 x4b,
0 xc9}
DEFINE_GUID!{GUID_MetadataFormatApp1,
0 x8fd3dfc3,
0 xf951,
0 x492b,
0 x81,
0 x7f,
0 x69,
0 xc2,
0 xe6,
0 xd9,
0 xa5,
0 xb0}
DEFINE_GUID!{GUID_MetadataFormatApp13,
0 x326556a2,
0 xf502,
0 x4354,
0 x9c,
0 xc0,
0 x8e,
0 x3f,
0 x48,
0 xea,
0 xf6,
0 xb5}
DEFINE_GUID!{GUID_MetadataFormatIPTC,
0 x4fab0914,
0 xe129,
0 x4087,
0 xa1,
0 xd1,
0 xbc,
0 x81,
0 x2d,
0 x45,
0 xa7,
0 xb5}
DEFINE_GUID!{GUID_MetadataFormatIRB,
0 x16100d66,
0 x8570,
0 x4bb9,
0 xb9,
0 x2d,
0 xfd,
0 xa4,
0 xb2,
0 x3e,
0 xce,
0 x67}
DEFINE_GUID!{GUID_MetadataFormat8BIMIPTC,
0 x0010568c,
0 x0852,
0 x4e6a,
0 xb1,
0 x91,
0 x5c,
0 x33,
0 xac,
0 x5b,
0 x04,
0 x30}
DEFINE_GUID!{GUID_MetadataFormat8BIMResolutionInfo,
0 x739f305d,
0 x81db,
0 x43cb,
0 xac,
0 x5e,
0 x55,
0 x01,
0 x3e,
0 xf9,
0 xf0,
0 x03}
DEFINE_GUID!{GUID_MetadataFormat8BIMIPTCDigest,
0 x1ca32285,
0 x9ccd,
0 x4786,
0 x8b,
0 xd8,
0 x79,
0 x53,
0 x9d,
0 xb6,
0 xa0,
0 x06}
DEFINE_GUID!{GUID_MetadataFormatXMP,
0 xbb5acc38,
0 xf216,
0 x4cec,
0 xa6,
0 xc5,
0 x5f,
0 x6e,
0 x73,
0 x97,
0 x63,
0 xa9}
DEFINE_GUID!{GUID_MetadataFormatThumbnail,
0 x243dcee9,
0 x8703,
0 x40ee,
0 x8e,
0 xf0,
0 x22,
0 xa6,
0 x00,
0 xb8,
0 x05,
0 x8c}
DEFINE_GUID!{GUID_MetadataFormatChunktEXt,
0 x568d8936,
0 xc0a9,
0 x4923,
0 x90,
0 x5d,
0 xdf,
0 x2b,
0 x38,
0 x23,
0 x8f,
0 xbc}
DEFINE_GUID!{GUID_MetadataFormatXMPStruct,
0 x22383cf1,
0 xed17,
0 x4e2e,
0 xaf,
0 x17,
0 xd8,
0 x5b,
0 x8f,
0 x6b,
0 x30,
0 xd0}
DEFINE_GUID!{GUID_MetadataFormatXMPBag,
0 x833cca5f,
0 xdcb7,
0 x4516,
0 x80,
0 x6f,
0 x65,
0 x96,
0 xab,
0 x26,
0 xdc,
0 xe4}
DEFINE_GUID!{GUID_MetadataFormatXMPSeq,
0 x63e8df02,
0 xeb6c,
0 x456c,
0 xa2,
0 x24,
0 xb2,
0 x5e,
0 x79,
0 x4f,
0 xd6,
0 x48}
DEFINE_GUID!{GUID_MetadataFormatXMPAlt,
0 x7b08a675,
0 x91aa,
0 x481b,
0 xa7,
0 x98,
0 x4d,
0 xa9,
0 x49,
0 x08,
0 x61,
0 x3b}
DEFINE_GUID!{GUID_MetadataFormatLSD,
0 xe256031e,
0 x6299,
0 x4929,
0 xb9,
0 x8d,
0 x5a,
0 xc8,
0 x84,
0 xaf,
0 xba,
0 x92}
DEFINE_GUID!{GUID_MetadataFormatIMD,
0 xbd2bb086,
0 x4d52,
0 x48dd,
0 x96,
0 x77,
0 xdb,
0 x48,
0 x3e,
0 x85,
0 xae,
0 x8f}
DEFINE_GUID!{GUID_MetadataFormatGCE,
0 x2a25cad8,
0 xdeeb,
0 x4c69,
0 xa7,
0 x88,
0 x0e,
0 xc2,
0 x26,
0 x6d,
0 xca,
0 xfd}
DEFINE_GUID!{GUID_MetadataFormatAPE,
0 x2e043dc2,
0 xc967,
0 x4e05,
0 x87,
0 x5e,
0 x61,
0 x8b,
0 xf6,
0 x7e,
0 x85,
0 xc3}
DEFINE_GUID!{GUID_MetadataFormatJpegChrominance,
0 xf73d0dcf,
0 xcec6,
0 x4f85,
0 x9b,
0 x0e,
0 x1c,
0 x39,
0 x56,
0 xb1,
0 xbe,
0 xf7}
DEFINE_GUID!{GUID_MetadataFormatJpegLuminance,
0 x86908007,
0 xedfc,
0 x4860,
0 x8d,
0 x4b,
0 x4e,
0 xe6,
0 xe8,
0 x3e,
0 x60,
0 x58}
DEFINE_GUID!{GUID_MetadataFormatJpegComment,
0 x220e5f33,
0 xafd3,
0 x474e,
0 x9d,
0 x31,
0 x7d,
0 x4f,
0 xe7,
0 x30,
0 xf5,
0 x57}
DEFINE_GUID!{GUID_MetadataFormatGifComment,
0 xc4b6e0e0,
0 xcfb4,
0 x4ad3,
0 xab,
0 x33,
0 x9a,
0 xad,
0 x23,
0 x55,
0 xa3,
0 x4a}
DEFINE_GUID!{GUID_MetadataFormatChunkgAMA,
0 xf00935a5,
0 x1d5d,
0 x4cd1,
0 x81,
0 xb2,
0 x93,
0 x24,
0 xd7,
0 xec,
0 xa7,
0 x81}
DEFINE_GUID!{GUID_MetadataFormatChunkbKGD,
0 xe14d3571,
0 x6b47,
0 x4dea,
0 xb6,
0 x0a,
0 x87,
0 xce,
0 x0a,
0 x78,
0 xdf,
0 xb7}
DEFINE_GUID!{GUID_MetadataFormatChunkiTXt,
0 xc2bec729,
0 x0b68,
0 x4b77,
0 xaa,
0 x0e,
0 x62,
0 x95,
0 xa6,
0 xac,
0 x18,
0 x14}
DEFINE_GUID!{GUID_MetadataFormatChunkcHRM,
0 x9db3655b,
0 x2842,
0 x44b3,
0 x80,
0 x67,
0 x12,
0 xe9,
0 xb3,
0 x75,
0 x55,
0 x6a}
DEFINE_GUID!{GUID_MetadataFormatChunkhIST,
0 xc59a82da,
0 xdb74,
0 x48a4,
0 xbd,
0 x6a,
0 xb6,
0 x9c,
0 x49,
0 x31,
0 xef,
0 x95}
DEFINE_GUID!{GUID_MetadataFormatChunkiCCP,
0 xeb4349ab,
0 xb685,
0 x450f,
0 x91,
0 xb5,
0 xe8,
0 x02,
0 xe8,
0 x92,
0 x53,
0 x6c}
DEFINE_GUID!{GUID_MetadataFormatChunksRGB,
0 xc115fd36,
0 xcc6f,
0 x4e3f,
0 x83,
0 x63,
0 x52,
0 x4b,
0 x87,
0 xc6,
0 xb0,
0 xd9}
DEFINE_GUID!{GUID_MetadataFormatChunktIME,
0 x6b00ae2d,
0 xe24b,
0 x460a,
0 x98,
0 xb6,
0 x87,
0 x8b,
0 xd0,
0 x30,
0 x72,
0 xfd}
DEFINE_GUID!{GUID_MetadataFormatDds,
0 x4a064603,
0 x8c33,
0 x4e60,
0 x9c,
0 x29,
0 x13,
0 x62,
0 x31,
0 x70,
0 x2d,
0 x08}
DEFINE_GUID!{CLSID_WICUnknownMetadataReader,
0 x699745c2,
0 x5066,
0 x4b82,
0 xa8,
0 xe3,
0 xd4,
0 x04,
0 x78,
0 xdb,
0 xec,
0 x8c}
DEFINE_GUID!{CLSID_WICUnknownMetadataWriter,
0 xa09cca86,
0 x27ba,
0 x4f39,
0 x90,
0 x53,
0 x12,
0 x1f,
0 xa4,
0 xdc,
0 x08,
0 xfc}
DEFINE_GUID!{CLSID_WICApp0MetadataWriter,
0 xf3c633a2,
0 x46c8,
0 x498e,
0 x8f,
0 xbb,
0 xcc,
0 x6f,
0 x72,
0 x1b,
0 xbc,
0 xde}
DEFINE_GUID!{CLSID_WICApp0MetadataReader,
0 x43324b33,
0 xa78f,
0 x480f,
0 x91,
0 x11,
0 x96,
0 x38,
0 xaa,
0 xcc,
0 xc8,
0 x32}
DEFINE_GUID!{CLSID_WICApp1MetadataWriter,
0 xee366069,
0 x1832,
0 x420f,
0 xb3,
0 x81,
0 x04,
0 x79,
0 xad,
0 x06,
0 x6f,
0 x19}
DEFINE_GUID!{CLSID_WICApp1MetadataReader,
0 xdde33513,
0 x774e,
0 x4bcd,
0 xae,
0 x79,
0 x02,
0 xf4,
0 xad,
0 xfe,
0 x62,
0 xfc}
DEFINE_GUID!{CLSID_WICApp13MetadataWriter,
0 x7b19a919,
0 xa9d6,
0 x49e5,
0 xbd,
0 x45,
0 x02,
0 xc3,
0 x4e,
0 x4e,
0 x4c,
0 xd5}
DEFINE_GUID!{CLSID_WICApp13MetadataReader,
0 xaa7e3c50,
0 x864c,
0 x4604,
0 xbc,
0 x04,
0 x8b,
0 x0b,
0 x76,
0 xe6,
0 x37,
0 xf6}
DEFINE_GUID!{CLSID_WICIfdMetadataReader,
0 x8f914656,
0 x9d0a,
0 x4eb2,
0 x90,
0 x19,
0 x0b,
0 xf9,
0 x6d,
0 x8a,
0 x9e,
0 xe6}
DEFINE_GUID!{CLSID_WICIfdMetadataWriter,
0 xb1ebfc28,
0 xc9bd,
0 x47a2,
0 x8d,
0 x33,
0 xb9,
0 x48,
0 x76,
0 x97,
0 x77,
0 xa7}
DEFINE_GUID!{CLSID_WICSubIfdMetadataReader,
0 x50d42f09,
0 xecd1,
0 x4b41,
0 xb6,
0 x5d,
0 xda,
0 x1f,
0 xda,
0 xa7,
0 x56,
0 x63}
DEFINE_GUID!{CLSID_WICSubIfdMetadataWriter,
0 x8ade5386,
0 x8e9b,
0 x4f4c,
0 xac,
0 xf2,
0 xf0,
0 x00,
0 x87,
0 x06,
0 xb2,
0 x38}
DEFINE_GUID!{CLSID_WICExifMetadataReader,
0 xd9403860,
0 x297f,
0 x4a49,
0 xbf,
0 x9b,
0 x77,
0 x89,
0 x81,
0 x50,
0 xa4,
0 x42}
DEFINE_GUID!{CLSID_WICExifMetadataWriter,
0 xc9a14cda,
0 xc339,
0 x460b,
0 x90,
0 x78,
0 xd4,
0 xde,
0 xbc,
0 xfa,
0 xbe,
0 x91}
DEFINE_GUID!{CLSID_WICGpsMetadataReader,
0 x3697790b,
0 x223b,
0 x484e,
0 x99,
0 x25,
0 xc4,
0 x86,
0 x92,
0 x18,
0 xf1,
0 x7a}
DEFINE_GUID!{CLSID_WICGpsMetadataWriter,
0 xcb8c13e4,
0 x62b5,
0 x4c96,
0 xa4,
0 x8b,
0 x6b,
0 xa6,
0 xac,
0 xe3,
0 x9c,
0 x76}
DEFINE_GUID!{CLSID_WICInteropMetadataReader,
0 xb5c8b898,
0 x0074,
0 x459f,
0 xb7,
0 x00,
0 x86,
0 x0d,
0 x46,
0 x51,
0 xea,
0 x14}
DEFINE_GUID!{CLSID_WICInteropMetadataWriter,
0 x122ec645,
0 xcd7e,
0 x44d8,
0 xb1,
0 x86,
0 x2c,
0 x8c,
0 x20,
0 xc3,
0 xb5,
0 x0f}
DEFINE_GUID!{CLSID_WICThumbnailMetadataReader,
0 xfb012959,
0 xf4f6,
0 x44d7,
0 x9d,
0 x09,
0 xda,
0 xa0,
0 x87,
0 xa9,
0 xdb,
0 x57}
DEFINE_GUID!{CLSID_WICThumbnailMetadataWriter,
0 xd049b20c,
0 x5dd0,
0 x44fe,
0 xb0,
0 xb3,
0 x8f,
0 x92,
0 xc8,
0 xe6,
0 xd0,
0 x80}
DEFINE_GUID!{CLSID_WICIPTCMetadataReader,
0 x03012959,
0 xf4f6,
0 x44d7,
0 x9d,
0 x09,
0 xda,
0 xa0,
0 x87,
0 xa9,
0 xdb,
0 x57}
DEFINE_GUID!{CLSID_WICIPTCMetadataWriter,
0 x1249b20c,
0 x5dd0,
0 x44fe,
0 xb0,
0 xb3,
0 x8f,
0 x92,
0 xc8,
0 xe6,
0 xd0,
0 x80}
DEFINE_GUID!{CLSID_WICIRBMetadataReader,
0 xd4dcd3d7,
0 xb4c2,
0 x47d9,
0 xa6,
0 xbf,
0 xb8,
0 x9b,
0 xa3,
0 x96,
0 xa4,
0 xa3}
DEFINE_GUID!{CLSID_WICIRBMetadataWriter,
0 x5c5c1935,
0 x0235,
0 x4434,
0 x80,
0 xbc,
0 x25,
0 x1b,
0 xc1,
0 xec,
0 x39,
0 xc6}
DEFINE_GUID!{CLSID_WIC8BIMIPTCMetadataReader,
0 x0010668c,
0 x0801,
0 x4da6,
0 xa4,
0 xa4,
0 x82,
0 x65,
0 x22,
0 xb6,
0 xd2,
0 x8f}
DEFINE_GUID!{CLSID_WIC8BIMIPTCMetadataWriter,
0 x00108226,
0 xee41,
0 x44a2,
0 x9e,
0 x9c,
0 x4b,
0 xe4,
0 xd5,
0 xb1,
0 xd2,
0 xcd}
DEFINE_GUID!{CLSID_WIC8BIMResolutionInfoMetadataReader,
0 x5805137a,
0 xe348,
0 x4f7c,
0 xb3,
0 xcc,
0 x6d,
0 xb9,
0 x96,
0 x5a,
0 x05,
0 x99}
DEFINE_GUID!{CLSID_WIC8BIMResolutionInfoMetadataWriter,
0 x4ff2fe0e,
0 xe74a,
0 x4b71,
0 x98,
0 xc4,
0 xab,
0 x7d,
0 xc1,
0 x67,
0 x07,
0 xba}
DEFINE_GUID!{CLSID_WIC8BIMIPTCDigestMetadataReader,
0 x02805f1e,
0 xd5aa,
0 x415b,
0 x82,
0 xc5,
0 x61,
0 xc0,
0 x33,
0 xa9,
0 x88,
0 xa6}
DEFINE_GUID!{CLSID_WIC8BIMIPTCDigestMetadataWriter,
0 x2db5e62b,
0 x0d67,
0 x495f,
0 x8f,
0 x9d,
0 xc2,
0 xf0,
0 x18,
0 x86,
0 x47,
0 xac}
DEFINE_GUID!{CLSID_WICPngTextMetadataReader,
0 x4b59afcc,
0 xb8c3,
0 x408a,
0 xb6,
0 x70,
0 x89,
0 xe5,
0 xfa,
0 xb6,
0 xfd,
0 xa7}
DEFINE_GUID!{CLSID_WICPngTextMetadataWriter,
0 xb5ebafb9,
0 x253e,
0 x4a72,
0 xa7,
0 x44,
0 x07,
0 x62,
0 xd2,
0 x68,
0 x56,
0 x83}
DEFINE_GUID!{CLSID_WICXMPMetadataReader,
0 x72b624df,
0 xae11,
0 x4948,
0 xa6,
0 x5c,
0 x35,
0 x1e,
0 xb0,
0 x82,
0 x94,
0 x19}
DEFINE_GUID!{CLSID_WICXMPMetadataWriter,
0 x1765e14e,
0 x1bd4,
0 x462e,
0 xb6,
0 xb1,
0 x59,
0 x0b,
0 xf1,
0 x26,
0 x2a,
0 xc6}
DEFINE_GUID!{CLSID_WICXMPStructMetadataReader,
0 x01b90d9a,
0 x8209,
0 x47f7,
0 x9c,
0 x52,
0 xe1,
0 x24,
0 x4b,
0 xf5,
0 x0c,
0 xed}
DEFINE_GUID!{CLSID_WICXMPStructMetadataWriter,
0 x22c21f93,
0 x7ddb,
0 x411c,
0 x9b,
0 x17,
0 xc5,
0 xb7,
0 xbd,
0 x06,
0 x4a,
0 xbc}
DEFINE_GUID!{CLSID_WICXMPBagMetadataReader,
0 xe7e79a30,
0 x4f2c,
0 x4fab,
0 x8d,
0 x00,
0 x39,
0 x4f,
0 x2d,
0 x6b,
0 xbe,
0 xbe}
DEFINE_GUID!{CLSID_WICXMPBagMetadataWriter,
0 xed822c8c,
0 xd6be,
0 x4301,
0 xa6,
0 x31,
0 x0e,
0 x14,
0 x16,
0 xba,
0 xd2,
0 x8f}
DEFINE_GUID!{CLSID_WICXMPSeqMetadataReader,
0 x7f12e753,
0 xfc71,
0 x43d7,
0 xa5,
0 x1d,
0 x92,
0 xf3,
0 x59,
0 x77,
0 xab,
0 xb5}
DEFINE_GUID!{CLSID_WICXMPSeqMetadataWriter,
0 x6d68d1de,
0 xd432,
0 x4b0f,
0 x92,
0 x3a,
0 x09,
0 x11,
0 x83,
0 xa9,
0 xbd,
0 xa7}
DEFINE_GUID!{CLSID_WICXMPAltMetadataReader,
0 xaa94dcc2,
0 xb8b0,
0 x4898,
0 xb8,
0 x35,
0 x00,
0 x0a,
0 xab,
0 xd7,
0 x43,
0 x93}
DEFINE_GUID!{CLSID_WICXMPAltMetadataWriter,
0 x076c2a6c,
0 xf78f,
0 x4c46,
0 xa7,
0 x23,
0 x35,
0 x83,
0 xe7,
0 x08,
0 x76,
0 xea}
DEFINE_GUID!{CLSID_WICLSDMetadataReader,
0 x41070793,
0 x59e4,
0 x479a,
0 xa1,
0 xf7,
0 x95,
0 x4a,
0 xdc,
0 x2e,
0 xf5,
0 xfc}
DEFINE_GUID!{CLSID_WICLSDMetadataWriter,
0 x73c037e7,
0 xe5d9,
0 x4954,
0 x87,
0 x6a,
0 x6d,
0 xa8,
0 x1d,
0 x6e,
0 x57,
0 x68}
DEFINE_GUID!{CLSID_WICGCEMetadataReader,
0 xb92e345d,
0 xf52d,
0 x41f3,
0 xb5,
0 x62,
0 x08,
0 x1b,
0 xc7,
0 x72,
0 xe3,
0 xb9}
DEFINE_GUID!{CLSID_WICGCEMetadataWriter,
0 xaf95dc76,
0 x16b2,
0 x47f4,
0 xb3,
0 xea,
0 x3c,
0 x31,
0 x79,
0 x66,
0 x93,
0 xe7}
DEFINE_GUID!{CLSID_WICIMDMetadataReader,
0 x7447a267,
0 x0015,
0 x42c8,
0 xa8,
0 xf1,
0 xfb,
0 x3b,
0 x94,
0 xc6,
0 x83,
0 x61}
DEFINE_GUID!{CLSID_WICIMDMetadataWriter,
0 x8c89071f,
0 x452e,
0 x4e95,
0 x96,
0 x82,
0 x9d,
0 x10,
0 x24,
0 x62,
0 x71,
0 x72}
DEFINE_GUID!{CLSID_WICAPEMetadataReader,
0 x1767b93a,
0 xb021,
0 x44ea,
0 x92,
0 x0f,
0 x86,
0 x3c,
0 x11,
0 xf4,
0 xf7,
0 x68}
DEFINE_GUID!{CLSID_WICAPEMetadataWriter,
0 xbd6edfca,
0 x2890,
0 x482f,
0 xb2,
0 x33,
0 x8d,
0 x73,
0 x39,
0 xa1,
0 xcf,
0 x8d}
DEFINE_GUID!{CLSID_WICJpegChrominanceMetadataReader,
0 x50b1904b,
0 xf28f,
0 x4574,
0 x93,
0 xf4,
0 x0b,
0 xad,
0 xe8,
0 x2c,
0 x69,
0 xe9}
DEFINE_GUID!{CLSID_WICJpegChrominanceMetadataWriter,
0 x3ff566f0,
0 x6e6b,
0 x49d4,
0 x96,
0 xe6,
0 xb7,
0 x88,
0 x86,
0 x69,
0 x2c,
0 x62}
DEFINE_GUID!{CLSID_WICJpegLuminanceMetadataReader,
0 x356f2f88,
0 x05a6,
0 x4728,
0 xb9,
0 xa4,
0 x1b,
0 xfb,
0 xce,
0 x04,
0 xd8,
0 x38}
DEFINE_GUID!{CLSID_WICJpegLuminanceMetadataWriter,
0 x1d583abc,
0 x8a0e,
0 x4657,
0 x99,
0 x82,
0 xa3,
0 x80,
0 xca,
0 x58,
0 xfb,
0 x4b}
DEFINE_GUID!{CLSID_WICJpegCommentMetadataReader,
0 x9f66347c,
0 x60c4,
0 x4c4d,
0 xab,
0 x58,
0 xd2,
0 x35,
0 x86,
0 x85,
0 xf6,
0 x07}
DEFINE_GUID!{CLSID_WICJpegCommentMetadataWriter,
0 xe573236f,
0 x55b1,
0 x4eda,
0 x81,
0 xea,
0 x9f,
0 x65,
0 xdb,
0 x02,
0 x90,
0 xd3}
DEFINE_GUID!{CLSID_WICGifCommentMetadataReader,
0 x32557d3b,
0 x69dc,
0 x4f95,
0 x83,
0 x6e,
0 xf5,
0 x97,
0 x2b,
0 x2f,
0 x61,
0 x59}
DEFINE_GUID!{CLSID_WICGifCommentMetadataWriter,
0 xa02797fc,
0 xc4ae,
0 x418c,
0 xaf,
0 x95,
0 xe6,
0 x37,
0 xc7,
0 xea,
0 xd2,
0 xa1}
DEFINE_GUID!{CLSID_WICPngGamaMetadataReader,
0 x3692ca39,
0 xe082,
0 x4350,
0 x9e,
0 x1f,
0 x37,
0 x04,
0 xcb,
0 x08,
0 x3c,
0 xd5}
DEFINE_GUID!{CLSID_WICPngGamaMetadataWriter,
0 xff036d13,
0 x5d4b,
0 x46dd,
0 xb1,
0 x0f,
0 x10,
0 x66,
0 x93,
0 xd9,
0 xfe,
0 x4f}
DEFINE_GUID!{CLSID_WICPngBkgdMetadataReader,
0 x0ce7a4a6,
0 x03e8,
0 x4a60,
0 x9d,
0 x15,
0 x28,
0 x2e,
0 xf3,
0 x2e,
0 xe7,
0 xda}
DEFINE_GUID!{CLSID_WICPngBkgdMetadataWriter,
0 x68e3f2fd,
0 x31ae,
0 x4441,
0 xbb,
0 x6a,
0 xfd,
0 x70,
0 x47,
0 x52,
0 x5f,
0 x90}
DEFINE_GUID!{CLSID_WICPngItxtMetadataReader,
0 xaabfb2fa,
0 x3e1e,
0 x4a8f,
0 x89,
0 x77,
0 x55,
0 x56,
0 xfb,
0 x94,
0 xea,
0 x23}
DEFINE_GUID!{CLSID_WICPngItxtMetadataWriter,
0 x31879719,
0 xe751,
0 x4df8,
0 x98,
0 x1d,
0 x68,
0 xdf,
0 xf6,
0 x77,
0 x04,
0 xed}
DEFINE_GUID!{CLSID_WICPngChrmMetadataReader,
0 xf90b5f36,
0 x367b,
0 x402a,
0 x9d,
0 xd1,
0 xbc,
0 x0f,
0 xd5,
0 x9d,
0 x8f,
0 x62}
DEFINE_GUID!{CLSID_WICPngChrmMetadataWriter,
0 xe23ce3eb,
0 x5608,
0 x4e83,
0 xbc,
0 xef,
0 x27,
0 xb1,
0 x98,
0 x7e,
0 x51,
0 xd7}
DEFINE_GUID!{CLSID_WICPngHistMetadataReader,
0 x877a0bb7,
0 xa313,
0 x4491,
0 x87,
0 xb5,
0 x2e,
0 x6d,
0 x05,
0 x94,
0 xf5,
0 x20}
DEFINE_GUID!{CLSID_WICPngHistMetadataWriter,
0 x8a03e749,
0 x672e,
0 x446e,
0 xbf,
0 x1f,
0 x2c,
0 x11,
0 xd2,
0 x33,
0 xb6,
0 xff}
DEFINE_GUID!{CLSID_WICPngIccpMetadataReader,
0 xf5d3e63b,
0 xcb0f,
0 x4628,
0 xa4,
0 x78,
0 x6d,
0 x82,
0 x44,
0 xbe,
0 x36,
0 xb1}
DEFINE_GUID!{CLSID_WICPngIccpMetadataWriter,
0 x16671e5f,
0 x0ce6,
0 x4cc4,
0 x97,
0 x68,
0 xe8,
0 x9f,
0 xe5,
0 x01,
0 x8a,
0 xde}
DEFINE_GUID!{CLSID_WICPngSrgbMetadataReader,
0 xfb40360c,
0 x547e,
0 x4956,
0 xa3,
0 xb9,
0 xd4,
0 x41,
0 x88,
0 x59,
0 xba,
0 x66}
DEFINE_GUID!{CLSID_WICPngSrgbMetadataWriter,
0 xa6ee35c6,
0 x87ec,
0 x47df,
0 x9f,
0 x22,
0 x1d,
0 x5a,
0 xad,
0 x84,
0 x0c,
0 x82}
DEFINE_GUID!{CLSID_WICPngTimeMetadataReader,
0 xd94edf02,
0 xefe5,
0 x4f0d,
0 x85,
0 xc8,
0 xf5,
0 xa6,
0 x8b,
0 x30,
0 x00,
0 xb1}
DEFINE_GUID!{CLSID_WICPngTimeMetadataWriter,
0 x1ab78400,
0 xb5a3,
0 x4d91,
0 x8a,
0 xce,
0 x33,
0 xfc,
0 xd1,
0 x49,
0 x9b,
0 xe6}
DEFINE_GUID!{CLSID_WICDdsMetadataReader,
0 x276c88ca,
0 x7533,
0 x4a86,
0 xb6,
0 x76,
0 x66,
0 xb3,
0 x60,
0 x80,
0 xd4,
0 x84}
DEFINE_GUID!{CLSID_WICDdsMetadataWriter,
0 xfd688bbd,
0 x31ed,
0 x4db7,
0 xa7,
0 x23,
0 x93,
0 x49,
0 x27,
0 xd3,
0 x83,
0 x67}
ENUM !{
enum WICMetadataCreationOptions {
WICMetadataCreationDefault =
0 ,
WICMetadataCreationAllowUnknown = WICMetadataCreationDefault,
WICMetadataCreationFailUnknown =
0 x10000,
WICMetadataCreationMask =
0 xffff0000,
}}
ENUM !{
enum WICPersistOptions {
WICPersistOptionDefault =
0 ,
WICPersistOptionLittleEndian =
0 ,
WICPersistOptionBigEndian =
0 x1,
WICPersistOptionStrictFormat =
0 x2,
WICPersistOptionNoCacheStream =
0 x4,
WICPersistOptionPreferUTF8 =
0 x8,
WICPersistOptionMask =
0 xffff,
}}
RIDL!{
#[ uuid(
0 xfeaa2a8d,
0 xb3f3,
0 x43e4,
0 xb2,
0 x5c,
0 xd1,
0 xde,
0 x99,
0 x0a,
0 x1a,
0 xe1)]
interface IWICMetadataBlockReader(IWICMetadataBlockReaderVtbl): IUnknown(IUnknownV
tbl) {
fn GetContainerFormat(
pguidContainerFormat: *mut GUID,
) -> HRESULT,
fn GetCount(
pcCount: *mut UINT,
) -> HRESULT,
fn GetReaderByIndex(
ppIMetadataReader: *mut *mut IWICMetadataReader,
) -> HRESULT,
fn GetEnumerator(
ppIEnumMetadata: *mut IEnumUnknown,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x08fb9676, 0 xb444, 0 x41e8, 0 x8d, 0 xbe, 0 x6a, 0 x53, 0 xa5, 0 x42, 0 xbf, 0 xf1)]
interface IWICMetadataBlockWriter(IWICMetadataBlockWriterVtbl):
IWICMetadataBlockReader(IWICMetadataBlockReaderVtbl) {
fn InitializeFromBlockReader(
pIMDBlockReader: *mut IWICMetadataBlockReader,
) -> HRESULT,
fn GetWriterByIndex(
ppIMetadataWriter: *mut *mut IWICMetadataWriter,
) -> HRESULT,
fn AddWriter(
pIMetadataWriter: *mut IWICMetadataWriter,
) -> HRESULT,
fn SetWriterByIndex(
pIMetadataWriter: *mut IWICMetadataWriter,
) -> HRESULT,
fn RemoveWriterByIndex(
nIndex: UINT,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x9204fe99, 0 xd8fc, 0 x4fd5, 0 xa0, 0 x01, 0 x95, 0 x36, 0 xb0, 0 x67, 0 xa8, 0 x99)]
interface IWICMetadataReader(IWICMetadataReaderVtbl): IUnknown(IUnknownVtbl) {
fn GetMetadataFormat(
pguidMetadataFormat: *mut GUID,
) -> HRESULT,
fn GetMetadataHandlerInfo(
ppIHandler: *mut *mut IWICMetadataHandlerInfo,
) -> HRESULT,
fn GetCount(
pcCount: *mut UINT,
) -> HRESULT,
fn GetValueByIndex(
nIndex: UINT,
pvarSchema: *mut PROPVARIANT,
pvarId: *mut PROPVARIANT,
pvarValue: *mut PROPVARIANT,
) -> HRESULT,
fn GetValue(
pvarSchema: *const PROPVARIANT,
pvarId: *const PROPVARIANT,
pvarValue: *mut PROPVARIANT,
) -> HRESULT,
fn GetEnumerator(
ppIEnumMetadata: *mut *mut IWICEnumMetadataItem,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xf7836e16, 0 x3be0, 0 x470b, 0 x86, 0 xbb, 0 x16, 0 x0d, 0 x0a, 0 xec, 0 xd7, 0 xde)]
interface IWICMetadataWriter(IWICMetadataWriterVtbl): IWICMetadataReader(IWICMetadataReaderVtbl) {
fn SetValue(
pvarSchema: *const PROPVARIANT,
pvarId: *const PROPVARIANT,
pvarValue: *const PROPVARIANT,
) -> HRESULT,
fn SetValueByIndex(
nIndex: UINT,
pvarSchema: *const PROPVARIANT,
pvarId: *const PROPVARIANT,
pvarValue: *const PROPVARIANT,
) -> HRESULT,
fn RemoveValue(
pvarSchema: *const PROPVARIANT,
pvarId: *const PROPVARIANT,
) -> HRESULT,
fn RemoveValueByIndex(
nIndex: UINT,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x449494bc, 0 xb468, 0 x4927, 0 x96, 0 xd7, 0 xba, 0 x90, 0 xd3, 0 x1a, 0 xb5, 0 x05)]
interface IWICStreamProvider(IWICStreamProviderVtbl): IUnknown(IUnknownVtbl) {
fn GetStream(
ppIStream: *mut *mut IStream,
) -> HRESULT,
fn GetPersistOptions(
pdwPersistOptions: *mut DWORD,
) -> HRESULT,
fn GetPreferredVendorGUID(
pguidPreferredVendor: *mut GUID,
) -> HRESULT,
fn RefreshStream() -> HRESULT,
}}
RIDL!{#[ uuid(0 x00675040, 0 x6908, 0 x45f8, 0 x86, 0 xa3, 0 x49, 0 xc7, 0 xdf, 0 xd6, 0 xd9, 0 xad)]
interface IWICPersistStream(IWICPersistStreamVtbl): IPersistStream(IPersistStreamVtbl) {
fn LoadEx(
pIStream: *mut IStream,
pguidPreferredVendor: *const GUID,
dwPersistOptions: DWORD,
) -> HRESULT,
fn SaveEx(
pIStream: *mut IStream,
dwPersistOptions: DWORD,
fClearDirty: BOOL,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 xaba958bf, 0 xc672, 0 x44d1, 0 x8d, 0 x61, 0 xce, 0 x6d, 0 xf2, 0 xe6, 0 x82, 0 xc2)]
interface IWICMetadataHandlerInfo(IWICMetadataHandlerInfoVtbl):
IWICComponentInfo(IWICComponentInfoVtbl) {
fn GetMetadataFormat(
pguidMetadataFormat: *mut GUID,
) -> HRESULT,
fn GetContainerFormats(
cContainerFormats: UINT,
pguidContainerFormats: *mut GUID,
pcchActual: *mut UINT,
) -> HRESULT,
fn GetDeviceManufacturer(
cchDeviceManufacturer: UINT,
wzDeviceManufacturer: *mut WCHAR,
pcchActual: *mut UINT,
) -> HRESULT,
fn GetDeviceModels(
cchDeviceModels: UINT,
wzDeviceModels: *mut WCHAR,
pcchActual: *mut UINT,
) -> HRESULT,
fn DoesRequireFullStream(
pfRequiresFullStream: *mut BOOL,
) -> HRESULT,
fn DoesSupportPadding(
pfSupportsPadding: *mut BOOL,
) -> HRESULT,
fn DoesRequireFixedSize(
pfFixedSize: *mut BOOL,
) -> HRESULT,
}}
STRUCT !{struct WICMetadataPattern {
Position: ULARGE_INTEGER,
Length: ULONG,
Pattern: *mut BYTE,
Mask: *mut BYTE,
DataOffset: ULARGE_INTEGER,
}}
RIDL!{#[ uuid(0 xeebf1f5b, 0 x07c1, 0 x4447, 0 xa3, 0 xab, 0 x22, 0 xac, 0 xaf, 0 x78, 0 xa8, 0 x04)]
interface IWICMetadataReaderInfo(IWICMetadataReaderInfoVtbl):
IWICMetadataHandlerInfo(IWICMetadataHandlerInfoVtbl) {
fn GetPatterns(
guidContainerFormat: REFGUID,
cbSize: UINT,
pPattern: *mut WICMetadataPattern,
pcCount: *mut UINT,
pcbActual: *mut UINT,
) -> HRESULT,
fn MatchesPattern(
guidContainerFormat: REFGUID,
pIStream: *mut IStream,
pfMatches: *mut BOOL,
) -> HRESULT,
fn CreateInstance(
ppIReader: *mut *mut IWICMetadataReader,
) -> HRESULT,
}}
STRUCT !{struct WICMetadataHeader {
Position: ULARGE_INTEGER,
Length: ULONG,
Header: *mut BYTE,
DataOffset: ULARGE_INTEGER,
}}
RIDL!{#[ uuid(0 xb22e3fba, 0 x3925, 0 x4323, 0 xb5, 0 xc1, 0 x9e, 0 xbf, 0 xc4, 0 x30, 0 xf2, 0 x36)]
interface IWICMetadataWriterInfo(IWICMetadataWriterInfoVtbl):
IWICMetadataHandlerInfo(IWICMetadataHandlerInfoVtbl) {
fn GetHeader(
guidContainerFormat: REFGUID,
cbSize: UINT,
pHeader: *mut WICMetadataHeader,
pcbActual: *mut UINT,
) -> HRESULT,
fn CreateInstance(
ppIWriter: *mut *mut IWICMetadataWriter,
) -> HRESULT,
}}
RIDL!{#[ uuid(0 x412d0c3a, 0 x9650, 0 x44fa, 0 xaf, 0 x5b, 0 xdd, 0 x2a, 0 x06, 0 xc8, 0 xe8, 0 xfb)]
interface IWICComponentFactory(IWICComponentFactoryVtbl):
IWICImagingFactory(IWICImagingFactoryVtbl) {
fn CreateMetadataReader(
guidMetadataFormat: REFGUID,
pguidVendor: *const GUID,
dwOptions: DWORD,
pIStream: *mut IStream,
ppIReader: *mut *mut IWICMetadataReader,
) -> HRESULT,
fn CreateMetadataReaderFromContainer(
guidContainerFormat: REFGUID,
pguidVendor: *const GUID,
dwOptions: DWORD,
pIStream: *mut IStream,
ppIReader: *mut *mut IWICMetadataReader,
) -> HRESULT,
fn CreateMetadataWriter(
guidMetadataFormat: REFGUID,
pguidVendor: *const GUID,
dwMetadataOptions: DWORD,
ppIWriter: *mut *mut IWICMetadataWriter,
) -> HRESULT,
fn CreateMetadataWriterFromReader(
pIReader: *mut IWICMetadataReader,
pguidVendor: *const GUID,
ppIWriter: *mut *mut IWICMetadataWriter,
) -> HRESULT,
fn CreateQueryReaderFromBlockReader(
pIBlockReader: *mut IWICMetadataBlockReader,
ppIQueryReader: *mut *mut IWICMetadataQueryReader,
) -> HRESULT,
fn CreateQueryWriterFromBlockWriter(
pIBlockWriter: *mut IWICMetadataBlockWriter,
ppIQueryWriter: *mut *mut IWICMetadataQueryWriter,
) -> HRESULT,
fn CreateEncoderPropertyBag(
ppropOptions: *mut PROPBAG2,
cCount: UINT,
ppIPropertyBag: *mut *mut IPropertyBag2,
) -> HRESULT,
}}
extern "system" {
pub fn WICMatchMetadataContent(
guidContainerFormat: REFGUID,
pguidVendor: *const GUID,
pIStream: *mut IStream,
pguidMetadataFormat: *mut GUID,
) -> HRESULT;
pub fn WICSerializeMetadataContent(
guidContainerFormat: REFGUID,
pIWriter: *mut IWICMetadataWriter,
dwPersistOptions: DWORD,
pIStream: *mut IStream,
) -> HRESULT;
pub fn WICGetMetadataContentSize(
guidContainerFormat: REFGUID,
pIWriter: *mut IWICMetadataWriter,
pcbSize: *mut ULARGE_INTEGER,
) -> HRESULT;
pub fn BSTR_UserSize(
pFlags: *mut c_ulong,
Offset: c_ulong,
pBstr: *mut BSTR,
) -> c_ulong;
pub fn BSTR_UserMarshal(
pFlags: *mut c_ulong,
pBuffer: *mut c_uchar,
pBstr: *mut BSTR,
) -> *mut c_uchar;
pub fn BSTR_UserUnmarshal(
pFlags: *mut c_ulong,
pBuffer: *mut c_uchar,
pBstr: *mut BSTR,
) -> *mut c_uchar;
pub fn BSTR_UserFree(
pFlags: *mut c_ulong,
pBstr: *mut BSTR,
);
pub fn CLIPFORMAT_UserSize(
pFlags: *mut c_ulong,
Offset: c_ulong,
pCF: *mut CLIPFORMAT,
) -> c_ulong;
pub fn CLIPFORMAT_UserMarshal(
pFlags: *mut c_ulong,
pBuffer: *mut c_uchar,
pCF: *mut CLIPFORMAT,
) -> *mut c_uchar;
pub fn CLIPFORMAT_UserUnmarshal(
pFlags: *mut c_ulong,
pBuffer: *mut c_uchar,
pCF: *mut CLIPFORMAT,
) -> *mut c_uchar;
pub fn CLIPFORMAT_UserFree(
pFlags: *mut c_ulong,
pCF: *mut CLIPFORMAT,
);
pub fn LPSAFEARRAY_UserSize(
pFlags: *mut c_ulong,
Offset: c_ulong,
phBmp: *mut LPSAFEARRAY,
) -> c_ulong;
pub fn LPSAFEARRAY_UserMarshal(
pFlags: *mut c_ulong,
pBuffer: *mut c_uchar,
pBstr: *mut LPSAFEARRAY,
) -> *mut c_uchar;
pub fn LPSAFEARRAY_UserUnmarshal(
pFlags: *mut c_ulong,
pBuffer: *mut c_uchar,
pBstr: *mut LPSAFEARRAY,
) -> *mut c_uchar;
pub fn LPSAFEARRAY_UserFree(
pFlags: *mut c_ulong,
pBstr: *mut LPSAFEARRAY,
);
}
Messung V0.5 in Prozent C=97 H=100 G=98
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland