
//#  (c) 2011 Microsoft Corporation
//#
//#  Title:       Microsoft-Windows-WPD-API
//#
//#  Details:     WPD API layer logs the serialized data sent/received from WPD driver.
//#               This parser helps to decode the serialized data.
//#
//#  References:    WpdCoreInstrumentation.man
//#
//#  Comments:
//#
//#  Revision Class and Date:Major, 8/23/2011
//#
//####


const GUIDSizeInBytes = 16;

// PropVariant Variable Types
const VT_I2       = 2 ;
const VT_I4       = 3 ;
const VT_R4       = 4 ;
const VT_R8       = 5 ;
const VT_DATE     = 7 ;
const VT_BSTR     = 8 ;
const VT_DISPATCH = 9 ;
const VT_ERROR    = 10 ;
const VT_BOOL     = 11 ;
const VT_UNKNOWN  = 13 ;
const VT_I1       = 16 ;
const VT_UI1      = 17 ;
const VT_UI2      = 18 ;
const VT_UI4      = 19 ;
const VT_I8       = 20 ;
const VT_UI8      = 21 ;
const VT_INT      = 22 ;
const VT_UINT     = 23 ;
const VT_LPWSTR   = 31 ;
const VT_FILETIME = 64 ;
const VT_CLSID    = 72 ;
const VT_VECTOR   = 0x1000 ;
const VT_BYREF    = 0x4000 ;

//IPortableDevice Interface GUIDs
const CLSID_PortableDeviceValues                = 0xcc2187973f7b169047ced0170c15d503; //{0C15D503-D017-47CE-9016-7B3F978721CC}
const CLSID_PortableDevicePropVariantCollection = 0xb94cbebcf2ba5aaf4b806d6d08a99e2f; //{08A99E2F-6D6D-4B80-AF5A-BAF2BCBE4CB9}
const CLSID_PortableDeviceKeyCollection         = 0x4f8ff92cfad1f09743be2480de2d022d; //{DE2D022D-2480-43BE-97F0-D1FA2CF98F4F}
const CLSID_PortableDeviceValuesCollection      = 0x603fd8865f43b49c422014cf3882134d; //{3882134D-14CF-4220-9CB4-435F86D83F60}


/// Declares constants for WPD and MTP extension GUIDs.

const WPD_CATEGORY_NULL = 0x00000000000000000000000000000000; // {00000000-0000-0000-0000-000000000000}
const WPD_OBJECT_PROPERTIES_V1 = 0x3C4AEE608BDAFCAF437A5CD8EF6B490D; // {EF6B490D-5CD8-437A-AFFC-DA8B60EE4A3C}
const WPD_OBJECT_PROPERTIES_V2 = 0x75E774DAE873D8B440D74A460373CD3D; // {0373CD3D-4A46-40D7-B4D8-73E8DA74E775}
const WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1 = 0x98E5DBF41DB0ACA54FC5ABCA8F052D93; // {8F052D93-ABCA-4FC5-A5AC-B01DF4DBE598}
const WPD_FOLDER_OBJECT_PROPERTIES_V1 = 0x7D17AB12BB132FAA4B34E5687E9A7ABF; // {7E9A7ABF-E568-4B34-AA2F-13BB12AB177D}
const WPD_IMAGE_OBJECT_PROPERTIES_V1 = 0xDB4764215299BA85479F9FA163D64908; // {63D64908-9FA1-479F-85BA-9952216447DB}
const WPD_MEDIA_PROPERTIES_V1 = 0xC86A39AC95BCD0B042DC0AD32ED8BA05; // {2ED8BA05-0AD3-42DC-B0D0-BC95AC396AC8}
const WPD_CONTACT_OBJECT_PROPERTIES_V1 = 0x2B31A9856172F9B34777987DFBD4FDAB; // {FBD4FDAB-987D-4777-B3F9-726185A9312B}
const WPD_MUSIC_OBJECT_PROPERTIES_V1 = 0xC6884841EAD2DFB646E5DC5DB324F56A; // {B324F56A-DC5D-46E5-B6DF-D2EA414888C6}
const WPD_VIDEO_OBJECT_PROPERTIES_V1 = 0x9ADE004C9BD1018B4146F998346F2163; // {346F2163-F998-4146-8B01-D19B4C00DE9A}
const WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1 = 0x8F9D097ECC7201BE4E8E05A4B28AE94B; // {B28AE94B-05A4-4E8E-BE01-72CC7E099D8F}
const WPD_EMAIL_OBJECT_PROPERTIES_V1 = 0xC5377CDD40473DB14782548441F8F65A; // {41F8F65A-5484-4782-B13D-4740DD7C37C5}
const WPD_APPOINTMENT_OBJECT_PROPERTIES_V1 = 0xD3889C0D224EC9A140D8431DF99EFD03; // {F99EFD03-431D-40D8-A1C9-4E220D9C88D3}
const WPD_TASK_OBJECT_PROPERTIES_V1 = 0xC7DB3868B20C3AA04637D8A0E354E95E; // {E354E95E-D8A0-4637-A03A-0CB26838DBC7}
const WPD_STORAGE_OBJECT_PROPERTIES_V1 = 0x0AE52C214CDCA7BE4E8074D601A3057A; // {01A3057A-74D6-4E80-BEA7-DC4C212CE50A}
const WPD_NETWORK_ASSOCIATION_PROPERTIES_V1 = 0x74021BD1075A00A143F1B203E4C93C1F; // {E4C93C1F-B203-43F1-A100-5A07D11B0274}
const WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 = 0x60A2731529BBC58A42A71BCB58C571EC; // {58C571EC-1BCB-42A7-8AC5-BB291573A260}
const WPD_SMS_OBJECT_PROPERTIES_V1 = 0x0D3A096FBE5342A74DD150FF7E1074CC; // {7E1074CC-50FF-4DD1-A742-53BE6F093A0D}
const WPD_SECTION_OBJECT_PROPERTIES_V1 = 0x667D8FC8E1BEDC9844F0C64E516AFD2B; // {516AFD2B-C64E-44F0-98DC-BEE1C88F7D66}
const WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1 = 0xB4709887397690854A31EE23C53D039F; // {C53D039F-EE23-4A31-8590-7639879870B4}
const WPD_CLIENT_INFORMATION_PROPERTIES_V1 = 0x59F8704E6640429F40802292204D9F0C; // {204D9F0C-2292-4080-9F42-40664E70F859}
const WPD_PROPERTY_ATTRIBUTES_V1 = 0x376FE9F15E8D0DA0445F6332AB7943D8; // {AB7943D8-6332-445F-A00D-8D5EF1E96F37}
const WPD_PROPERTY_ATTRIBUTES_V2 = 0x8E79805A55FEA98543CC74AE5D9DA160; // {5D9DA160-74AE-43CC-85A9-FE555A80798E}
const WPD_CLASS_EXTENSION_OPTIONS_V1 = 0x960AE476757934844CA7A87C6309FFEF; // {6309FFEF-A87C-4CA7-8434-797576E40A96}
const WPD_CLASS_EXTENSION_OPTIONS_V2 = 0x3FE93A6C40D4B4A049FE4D713E3595DA; // {3E3595DA-4D71-49FE-A0B4-D4406C3AE93F}
const WPD_CLASS_EXTENSION_OPTIONS_V3 = 0x300D9F8310839D934CE2136765C160F8; // {65C160F8-1367-4CE2-939D-8310839F0D30}
const WPD_RESOURCE_ATTRIBUTES_V1 = 0xB65666C0B85BCC93429F92781EB6F604; // {1EB6F604-9278-429F-93CC-5BB8C06656B6}
const WPD_DEVICE_PROPERTIES_V1 = 0xDC2FC9C06D732B9E4626E64326D4979A; // {26D4979A-E643-4626-9E2B-736DC0C92FDC}
const WPD_DEVICE_PROPERTIES_V2 = 0x9997CA9C4C7F1C9142917FC4463DD662; // {463DD662-7FC4-4291-911C-7F4C9CCA9799}
const WPD_DEVICE_PROPERTIES_V3 = 0xEDE5235EA7D725B4490DC2EC6C2B878C; // {6C2B878C-C2EC-490D-B425-D7A75E23E5ED}
const WPD_SERVICE_PROPERTIES_V1 = 0x061C3FC9750DDBB8481CCB547510698A; // {7510698A-CB54-481C-B8DB-0D75C93F1C06}
const WPD_EVENT_PROPERTIES_V1 = 0xE0F638E8765621A94FEFF81715AB1953; // {15AB1953-F817-4FEF-A921-5676E838F6E0}
const WPD_EVENT_PROPERTIES_V2 = 0x46B8B254F6749A9B4323491452807B8A; // {52807B8A-4914-4323-9B9A-74F654B2B846}
const WPD_EVENT_OPTIONS_V1 = 0x3B7110CE025B488A4B83A361B3D8DAD7; // {B3D8DAD7-A361-4B83-8A48-5B02CE10713B}
const WPD_EVENT_ATTRIBUTES_V1 = 0x6D8F13A68CE0DEAD41112E8110C96578; // {10C96578-2E81-4111-ADDE-E08CA6138F6D}
const WPD_API_OPTIONS_V1 = 0xC42BBE1476DE3CA14777052D10E54A3E; // {10E54A3E-052D-4777-A13C-DE7614BE2BC4}
const WPD_FORMAT_ATTRIBUTES_V1 = 0x8FF51C233F23F5B34BE8BCAFA0A02000; // {A0A02000-BCAF-4BE8-B3F5-233F231CF58F}
const WPD_METHOD_ATTRIBUTES_V1 = 0x2A432EF32C43FE8E44AFF039F17A5071; // {F17A5071-F039-44AF-8EFE-432CF32E432A}
const WPD_PARAMETER_ATTRIBUTES_V1 = 0x58CAB673CF97D5A145EAF325E6864DD7; // {E6864DD7-F325-45EA-A1D5-97CF73B6CA58}
const WPD_CATEGORY_COMMON = 0x8A653588F25DBDB544405DC8F0422A9C; // {F0422A9C-5DC8-4440-B5BD-5DF28835658A}
const WPD_CATEGORY_OBJECT_ENUMERATION = 0xECEE584B1AAD00B44AD9E7F8B7474E91; // {B7474E91-E7F8-4AD9-B400-AD1A4B58EEEC}
const WPD_CATEGORY_OBJECT_PROPERTIES = 0x0438588D99B21A9844E608149E5582E4; // {9E5582E4-0814-44E6-981A-B2998D583804}
const WPD_CATEGORY_OBJECT_PROPERTIES_BULK = 0x4ED894B7EFF67B8C4E4E04CD11C824DD; // {11C824DD-04CD-4E4E-8C7B-F6EFB794D84E}
const WPD_CATEGORY_OBJECT_RESOURCES = 0x4A3D5F963CFC0ABE4108A595B3A2B22D; // {B3A2B22D-A595-4108-BE0A-FC3C965F3D4A}
const WPD_CATEGORY_OBJECT_MANAGEMENT = 0x89A0AE926118CC8B4341A9EDEF1E43DD; // {EF1E43DD-A9ED-4341-8BCC-186192AEA089}
const WPD_CATEGORY_CAPABILITIES = 0x56E3FCD13926169241C66B740CABEC78; // {0CABEC78-6B74-41C6-9216-2639D1FCE356}
const WPD_CATEGORY_STORAGE = 0x94EC47FA07D0FB9745FA34CCD8F907A6; // {D8F907A6-34CC-45FA-97FB-D007FA47EC94}
const WPD_CATEGORY_SMS = 0xD120E9930C9797904114FE0DAFC25D66; // {AFC25D66-FE0D-4114-9097-970C93E920D1}
const WPD_CATEGORY_STILL_IMAGE_CAPTURE = 0x327BF28BD3628BA44B0522A24FCD6982; // {4FCD6982-22A2-4B05-A48B-62D38BF27B32}
const WPD_CATEGORY_MEDIA_CAPTURE = 0xE8150F9BCB6B8C804D8DFE4459B433BA; // {59B433BA-FE44-4D8D-808C-6BCB9B0F15E8}
const WPD_CATEGORY_DEVICE_HINTS = 0x847CF1D3C30B43834C4FCB460D5FB92B; // {0D5FB92B-CB46-4C4F-8343-0BC3D3F17C84}
const WPD_CLASS_EXTENSION_V1 = 0x51B099AAFE3DC7B44FAC64A333FB0D11; // {33FB0D11-64A3-4FAC-B4C7-3DFEAA99B051}
const WPD_CLASS_EXTENSION_V2 = 0x58670BA33BF7B29C4766FA2B7F0779B5; // {7F0779B5-FA2B-4766-9CB2-F73BA30B6758}
const WPD_CATEGORY_NETWORK_CONFIGURATION = 0xC472D03DD26B6090473C79B878F9C6FC; // {78F9C6FC-79B8-473C-9060-6BD23DD072C4}
const WPD_CATEGORY_SERVICE_COMMON = 0xEEBA34D7526FB5B4477F36EF322F071D; // {322F071D-36EF-477F-B4B5-6F52D734BAEE}
const WPD_CATEGORY_SERVICE_CAPABILITIES = 0x890B17CB1B1D578C44F92E9F24457E74; // {24457E74-2E9F-44F9-8C57-1D1BCB170B89}
const WPD_CATEGORY_SERVICE_METHODS = 0xBC69153219CF42A34268C1B02D521CA8; // {2D521CA8-C1B0-4268-A342-CF19321569BC}
const WPD_EVENT_NOTIFICATION = 0xB2AE992B322643BB42956B4C2BA2E40A; // {2BA2E40A-6B4C-4295-BB43-26322B99AEB2}
const WPD_EVENT_OBJECT_ADDED = 0xFCBF6CE8F2BE448D4B02E207A726DA95; // {A726DA95-E207-4B02-8D44-BEF2E86CBFFC}
const WPD_EVENT_OBJECT_REMOVED = 0x38FC712627D0E5964823A52CBE82AB88; // {BE82AB88-A52C-4823-96E5-D0272671FC38}
const WPD_EVENT_OBJECT_UPDATED = 0xAB97E6DA07FF279F485D2E011445A759; // {1445A759-2E01-485D-9F27-FF07DAE697AB}
const WPD_EVENT_DEVICE_RESET = 0x276B372C1E45A2B544F3C1ED7755CF53; // {7755CF53-C1ED-44F3-B5A2-451E2C376B27}
const WPD_EVENT_DEVICE_CAPABILITIES_UPDATED = 0x99593FE0B3AFD0B34DAACD5436885AA1; // {36885AA1-CD54-4DAA-B3D0-AFB3E03F5999}
const WPD_EVENT_STORAGE_FORMAT = 0x5788D3F8703051A2447422BC3782616B; // {3782616B-22BC-4474-A251-3070F8D38857}
const WPD_EVENT_OBJECT_TRANSFER_REQUESTED = 0xF2DB1A72535E198F41DAF2C68D16A0A1; // {8D16A0A1-F2C6-41DA-8F19-5E53721ADBF2}
const WPD_EVENT_DEVICE_REMOVED = 0xF90A857CBE02EE8548B96918E4CBCA1B; // {E4CBCA1B-6918-48B9-85EE-02BE7C850AF9}
const WPD_EVENT_SERVICE_METHOD_COMPLETE = 0xCA863B352D11C49C4D9B0ACC8A33F5F8; // {8A33F5F8-0ACC-4D9B-9CC4-112D353B86CA}
const WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT = 0x2119946F7A1D989D4C4417FF99ED0160; // {99ED0160-17FF-4C44-9D98-1D7A6F941921}
const WPD_CONTENT_TYPE_FOLDER = 0x855FA00577E10CAB48E0A11127E2E392; // {27E2E392-A111-48E0-AB0C-E17705A05F85}
const WPD_CONTENT_TYPE_IMAGE = 0x03766D17D4626BA24243A52AEF2107D5; // {EF2107D5-A52A-4243-A26B-62D4176D7603}
const WPD_CONTENT_TYPE_DOCUMENT = 0x55816493E365419B4041950A680ADF52; // {680ADF52-950A-4041-9B41-65E393648155}
const WPD_CONTENT_TYPE_CONTACT = 0x35948E80C6870E9F47074525EABA8313; // {EABA8313-4525-4707-9F0E-87C6808E9435}
const WPD_CONTENT_TYPE_CONTACT_GROUP = 0xE99D1F292818159440D84C36346B8932; // {346B8932-4C36-40D8-9415-1828291F9DE9}
const WPD_CONTENT_TYPE_AUDIO = 0xF06C3C9E224F648845E55E2D4AD2C85E; // {4AD2C85E-5E2D-45E5-8864-4F229E3C6CF0}
const WPD_CONTENT_TYPE_VIDEO = 0xB90BF5E1C502E38545193D789261B03C; // {9261B03C-3D78-4519-85E3-02C5E1F50BB9}
const WPD_CONTENT_TYPE_TELEVISION = 0x6E1C1CF1779675934E21F2AE60A169CF; // {60A169CF-F2AE-4E21-9375-9677F11C1C6E}
const WPD_CONTENT_TYPE_PLAYLIST = 0xA304FE9D36774E9948F5AF131A33F7E4; // {1A33F7E4-AF13-48F5-994E-77369DFE04A3}
const WPD_CONTENT_TYPE_MIXED_CONTENT_ALBUM = 0x63255ACAAB24199249ACA59300F0C3AC; // {00F0C3AC-A593-49AC-9219-24ABCA5A2563}
const WPD_CONTENT_TYPE_AUDIO_ALBUM = 0xE6B48343F28521AE48FA5009AA18737E; // {AA18737E-5009-48FA-AE21-85F24383B4E6}
const WPD_CONTENT_TYPE_IMAGE_ALBUM = 0x26E2378AED5413A84A3015F575793148; // {75793148-15F5-4A30-A813-54ED8A37E226}
const WPD_CONTENT_TYPE_VIDEO_ALBUM = 0x4F617977B89481B045D6D4C1012B0DB7; // {012B0DB7-D4C1-45D6-B081-94B87779614F}
const WPD_CONTENT_TYPE_MEMO = 0x5157E4FF73E441A6414F3B509CD20ECF; // {9CD20ECF-3B50-414F-A641-E473FFE45751}
const WPD_CONTENT_TYPE_EMAIL = 0x3345D123061D3D884F8F7E518038044A; // {8038044A-7E51-4F8F-883D-1D0623D14533}
const WPD_CONTENT_TYPE_APPOINTMENT = 0x31C69A38AC48C9904B1E87930FED060E; // {0FED060E-8793-4B1E-90C9-48AC389AC631}
const WPD_CONTENT_TYPE_TASK = 0x6CEFDC5598D2ACB14CB6887F63252F2C; // {63252F2C-887F-4CB6-B1AC-D29855DCEF6C}
const WPD_CONTENT_TYPE_PROGRAM = 0xE62092C4F397FB984BFF247CD269F96A; // {D269F96A-247C-4BFF-98FB-97F3C49220E6}
const WPD_CONTENT_TYPE_GENERIC_FILE = 0x483DC7597E445CBC45D78D340085E0A6; // {0085E0A6-8D34-45D7-BC5C-447E59C73D48}
const WPD_CONTENT_TYPE_CALENDAR = 0xB051E70B06F8F19D49A06023A1FD5967; // {A1FD5967-6023-49A0-9DF1-F8060BE751B0}
const WPD_CONTENT_TYPE_GENERIC_MESSAGE = 0x5F6E4A4BEF1B7EB64133B2DBE80EAAF8; // {E80EAAF8-B2DB-4133-B67E-1BEF4B4A6E5F}
const WPD_CONTENT_TYPE_NETWORK_ASSOCIATION = 0xF3D06112A1897E84420518C8031DA7EE; // {031DA7EE-18C8-4205-847E-89A11261D0F3}
const WPD_CONTENT_TYPE_CERTIFICATE = 0x873D8A7ED7CB50904060A948DC3876E8; // {DC3876E8-A948-4060-9050-CBD77E8A3D87}
const WPD_CONTENT_TYPE_WIRELESS_PROFILE = 0x6CFD684DE43DF6A84DA49F5F0BAC070A; // {0BAC070A-9F5F-4DA4-A8F6-3DE44D68FD6C}
const WPD_CONTENT_TYPE_MEDIA_CAST = 0xB03A25959422FFBF4E623E655E88B3CC; // {5E88B3CC-3E65-4E62-BFFF-229495253AB0}
const WPD_CONTENT_TYPE_SECTION = 0xCE185BB3B1BB3CBE4DC91D91821089F5; // {821089F5-1D91-4DC9-BE3C-BBB1B35B18CE}
const WPD_CONTENT_TYPE_UNSPECIFIED = 0x34E668318834BCAA454E249C28D8D31E; // {28D8D31E-249C-454E-AABC-34883168E634}
const WPD_CONTENT_TYPE_ALL = 0x89868A4FCC8252B94A3E105580E170D2; // {80E170D2-1055-4A3E-B952-82CC4F8A8689}
const WPD_FUNCTIONAL_CATEGORY_DEVICE = 0x8C435C2B4DA4F3A14336E3A408EA466B; // {08EA466B-E3A4-4336-A1F3-A44D2B5C438C}
const WPD_FUNCTIONAL_CATEGORY_STORAGE = 0xEF12E45CAFA95BA54C2A15DE23F05BBC; // {23F05BBC-15DE-4C2A-A55B-A9AF5CE412EF}
const WPD_FUNCTIONAL_CATEGORY_STILL_IMAGE_CAPTURE = 0x794B87B55B89FAB44900AB93613CA327; // {613CA327-AB93-4900-B4FA-895BB5874B79}
const WPD_FUNCTIONAL_CATEGORY_AUDIO_CAPTURE = 0xBBEB6DF07CF55D854A00C7C23F2A1919; // {3F2A1919-C7C2-4A00-855D-F57CF06DEBBB}
const WPD_FUNCTIONAL_CATEGORY_VIDEO_CAPTURE = 0x18A968D9B30EF18D43AA7243E23E5F6B; // {E23E5F6B-7243-43AA-8DF1-0EB3D968A918}
const WPD_FUNCTIONAL_CATEGORY_SMS = 0xCFC917612CA658B34AFDC1E90044A0B1; // {0044A0B1-C1E9-4AFD-B358-A62C6117C9CF}
const WPD_FUNCTIONAL_CATEGORY_RENDERING_INFORMATION = 0xD356A3D065000EAB4A01A7BA08600BA4; // {08600BA4-A7BA-4A01-AB0E-0065D0A356D3}
const WPD_FUNCTIONAL_CATEGORY_NETWORK_CONFIGURATION = 0x6AF2DB3C0E471A9E4AB07C6A48F4DB72; // {48F4DB72-7C6A-4AB0-9E1A-470E3CDBF26A}
const WPD_FUNCTIONAL_CATEGORY_ALL = 0x9993C407ACF48ABA448EA74C2D8A6512; // {2D8A6512-A74C-448E-BA8A-F4AC07C49399}
const GUID_DEVINTERFACE_WPD = 0x334F1D498FF985BA4155A6FA6AC27878; // {6AC27878-A6FA-4155-BA85-F98F491D4F33}
const GUID_DEVINTERFACE_WPD_PRIVATE = 0x11126628BEFAD3BD49B74DEDBA0C718F; // {BA0C718F-4DED-49B7-BDD3-FABE28661211}
const GUID_DEVINTERFACE_WPD_SERVICE = 0xE853C8981AEBF7924AA09CBBA61D62EB; // {A61D62EB-9CBB-4AA0-92F7-EB1A98C853E8}
const WPD_OBJECT_FORMAT_PROPERTIES_ONLY = 0xE75F96467BC5BA984804AE6C30010000; // {30010000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_Association = 0xE75F96467BC5BA984804AE6C30010000; // {30010000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_UNSPECIFIED = 0xE75F96467BC5BA984804AE6C30000000; // {30000000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_Undefined = 0xE75F96467BC5BA984804AE6C30000000; // {30000000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_SCRIPT = 0xE75F96467BC5BA984804AE6C30020000; // {30020000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_DeviceScript = 0xE75F96467BC5BA984804AE6C30020000; // {30020000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_EXECUTABLE = 0xE75F96467BC5BA984804AE6C30030000; // {30030000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_DeviceExecutable = 0xE75F96467BC5BA984804AE6C30030000; // {30030000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_TEXT = 0xE75F96467BC5BA984804AE6C30040000; // {30040000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_TextDocument = 0xE75F96467BC5BA984804AE6C30040000; // {30040000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_HTML = 0xE75F96467BC5BA984804AE6C30050000; // {30050000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_HTMLDocument = 0xE75F96467BC5BA984804AE6C30050000; // {30050000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_DPOF = 0xE75F96467BC5BA984804AE6C30060000; // {30060000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_DPOFDocument = 0xE75F96467BC5BA984804AE6C30060000; // {30060000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_AIFF = 0xE75F96467BC5BA984804AE6C30070000; // {30070000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AIFFFile = 0xE75F96467BC5BA984804AE6C30070000; // {30070000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_WAVE = 0xE75F96467BC5BA984804AE6C30080000; // {30080000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_WAVFile = 0xE75F96467BC5BA984804AE6C30080000; // {30080000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MP3 = 0xE75F96467BC5BA984804AE6C30090000; // {30090000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_MP3File = 0xE75F96467BC5BA984804AE6C30090000; // {30090000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_AVI = 0xE75F96467BC5BA984804AE6C300A0000; // {300A0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AVIFile = 0xE75F96467BC5BA984804AE6C300A0000; // {300A0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MPEG = 0xE75F96467BC5BA984804AE6C300B0000; // {300B0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_MPEGFile = 0xE75F96467BC5BA984804AE6C300B0000; // {300B0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ASF = 0xE75F96467BC5BA984804AE6C300C0000; // {300C0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_ASFFile = 0xE75F96467BC5BA984804AE6C300C0000; // {300C0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_EXIF = 0xE75F96467BC5BA984804AE6C38010000; // {38010000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_EXIFImage = 0xE75F96467BC5BA984804AE6C38010000; // {38010000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_TIFFEP = 0xE75F96467BC5BA984804AE6C38020000; // {38020000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_TIFFEPImage = 0xE75F96467BC5BA984804AE6C38020000; // {38020000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_FLASHPIX = 0xE75F96467BC5BA984804AE6C38030000; // {38030000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_FlashPixImage = 0xE75F96467BC5BA984804AE6C38030000; // {38030000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_BMP = 0xE75F96467BC5BA984804AE6C38040000; // {38040000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_BMPImage = 0xE75F96467BC5BA984804AE6C38040000; // {38040000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_CIFF = 0xE75F96467BC5BA984804AE6C38050000; // {38050000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_CIFFImage = 0xE75F96467BC5BA984804AE6C38050000; // {38050000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_GIF = 0xE75F96467BC5BA984804AE6C38070000; // {38070000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_GIFImage = 0xE75F96467BC5BA984804AE6C38070000; // {38070000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_JFIF = 0xE75F96467BC5BA984804AE6C38080000; // {38080000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_JFIFImage = 0xE75F96467BC5BA984804AE6C38080000; // {38080000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_PCD = 0xE75F96467BC5BA984804AE6C38090000; // {38090000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_PCDImage = 0xE75F96467BC5BA984804AE6C38090000; // {38090000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_PICT = 0xE75F96467BC5BA984804AE6C380A0000; // {380A0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_PICTImage = 0xE75F96467BC5BA984804AE6C380A0000; // {380A0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_PNG = 0xE75F96467BC5BA984804AE6C380B0000; // {380B0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_PNGImage = 0xE75F96467BC5BA984804AE6C380B0000; // {380B0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_TIFF = 0xE75F96467BC5BA984804AE6C380D0000; // {380D0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_TIFFImage = 0xE75F96467BC5BA984804AE6C380D0000; // {380D0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_TIFFIT = 0xE75F96467BC5BA984804AE6C380E0000; // {380E0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_TIFFITImage = 0xE75F96467BC5BA984804AE6C380E0000; // {380E0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_JP2 = 0xE75F96467BC5BA984804AE6C380F0000; // {380F0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_JP2Image = 0xE75F96467BC5BA984804AE6C380F0000; // {380F0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_JPX = 0xE75F96467BC5BA984804AE6C38100000; // {38100000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_JPXImage = 0xE75F96467BC5BA984804AE6C38100000; // {38100000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_WBMP = 0xE75F96467BC5BA984804AE6CB8030000; // {B8030000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_WBMPImage = 0xE75F96467BC5BA984804AE6CB8030000; // {B8030000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_JPEGXR = 0xE75F96467BC5BA984804AE6CB8040000; // {B8040000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_JPEGXRImage = 0xE75F96467BC5BA984804AE6CB8040000; // {B8040000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_WINDOWSIMAGEFORMAT = 0xE75F96467BC5BA984804AE6CB8810000; // {B8810000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_HDPhotoImage = 0xE75F96467BC5BA984804AE6CB8810000; // {B8810000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_WMA = 0xE75F96467BC5BA984804AE6CB9010000; // {B9010000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_WMAFile = 0xE75F96467BC5BA984804AE6CB9010000; // {B9010000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_WMV = 0xE75F96467BC5BA984804AE6CB9810000; // {B9810000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_WMVFile = 0xE75F96467BC5BA984804AE6CB9810000; // {B9810000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_WPLPLAYLIST = 0xE75F96467BC5BA984804AE6CBA100000; // {BA100000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_WPLPlaylist = 0xE75F96467BC5BA984804AE6CBA100000; // {BA100000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_M3UPLAYLIST = 0xE75F96467BC5BA984804AE6CBA110000; // {BA110000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_M3UPlaylist = 0xE75F96467BC5BA984804AE6CBA110000; // {BA110000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MPLPLAYLIST = 0xE75F96467BC5BA984804AE6CBA120000; // {BA120000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_MPLPlaylist = 0xE75F96467BC5BA984804AE6CBA120000; // {BA120000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ASXPLAYLIST = 0xE75F96467BC5BA984804AE6CBA130000; // {BA130000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_ASXPlaylist = 0xE75F96467BC5BA984804AE6CBA130000; // {BA130000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_PLSPLAYLIST = 0xE75F96467BC5BA984804AE6CBA140000; // {BA140000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_PSLPlaylist = 0xE75F96467BC5BA984804AE6CBA140000; // {BA140000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ABSTRACT_CONTACT_GROUP = 0xE75F96467BC5BA984804AE6CBA060000; // {BA060000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ABSTRACT_MEDIA_CAST = 0xE75F96467BC5BA984804AE6CBA0B0000; // {BA0B0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractMediacast = 0xE75F96467BC5BA984804AE6CBA0B0000; // {BA0B0000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_VCALENDAR1 = 0xE75F96467BC5BA984804AE6CBE020000; // {BE020000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ICALENDAR = 0xE75F96467BC5BA984804AE6CBE030000; // {BE030000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ABSTRACT_CONTACT = 0xE75F96467BC5BA984804AE6CBB810000; // {BB810000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_VCARD2 = 0xE75F96467BC5BA984804AE6CBB820000; // {BB820000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_VCARD3 = 0xE75F96467BC5BA984804AE6CBB830000; // {BB830000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ICON = 0x22C8BF42F183229C4638102C077232ED; // {077232ED-102C-4638-9C22-83F142BFC822}
const WPD_OBJECT_FORMAT_XML = 0xE75F96467BC5BA984804AE6CBA820000; // {BA820000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_XMLDocument = 0xE75F96467BC5BA984804AE6CBA820000; // {BA820000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_AAC = 0xE75F96467BC5BA984804AE6CB9030000; // {B9030000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AACFile = 0xE75F96467BC5BA984804AE6CB9030000; // {B9030000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_AUDIBLE = 0xE75F96467BC5BA984804AE6CB9040000; // {B9040000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AudibleFile = 0xE75F96467BC5BA984804AE6CB9040000; // {B9040000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_FLAC = 0xE75F96467BC5BA984804AE6CB9060000; // {B9060000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_FLACFile = 0xE75F96467BC5BA984804AE6CB9060000; // {B9060000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_QCELP = 0xE75F96467BC5BA984804AE6CB9070000; // {B9070000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_QCELPFile = 0xE75F96467BC5BA984804AE6CB9070000; // {B9070000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_AMR = 0xE75F96467BC5BA984804AE6CB9080000; // {B9080000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AMRFile = 0xE75F96467BC5BA984804AE6CB9080000; // {B9080000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_OGG = 0xE75F96467BC5BA984804AE6CB9020000; // {B9020000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_OGGFile = 0xE75F96467BC5BA984804AE6CB9020000; // {B9020000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MP4 = 0xE75F96467BC5BA984804AE6CB9820000; // {B9820000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_MPEG4File = 0xE75F96467BC5BA984804AE6CB9820000; // {B9820000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_M4A = 0xC8F1F3529B3E59A34C236FFD30ABA7AC; // {30ABA7AC-6FFD-4C23-A359-3E9B52F3F1C8}
const WPD_OBJECT_FORMAT_MP2 = 0xE75F96467BC5BA984804AE6CB9830000; // {B9830000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_MPEG2File = 0xE75F96467BC5BA984804AE6CB9830000; // {B9830000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MICROSOFT_WORD = 0xE75F96467BC5BA984804AE6CBA830000; // {BA830000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_WordDocument = 0xE75F96467BC5BA984804AE6CBA830000; // {BA830000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MHT_COMPILED_HTML = 0xE75F96467BC5BA984804AE6CBA840000; // {BA840000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_MHTDocument = 0xE75F96467BC5BA984804AE6CBA840000; // {BA840000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MICROSOFT_EXCEL = 0xE75F96467BC5BA984804AE6CBA850000; // {BA850000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_ExcelDocument = 0xE75F96467BC5BA984804AE6CBA850000; // {BA850000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MICROSOFT_POWERPOINT = 0xE75F96467BC5BA984804AE6CBA860000; // {BA860000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_PowerPointDocument = 0xE75F96467BC5BA984804AE6CBA860000; // {BA860000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_NETWORK_ASSOCIATION = 0xE75F96467BC5BA984804AE6CB1020000; // {B1020000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_X509V3CERTIFICATE = 0xE75F96467BC5BA984804AE6CB1030000; // {B1030000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MICROSOFT_WFC = 0xE75F96467BC5BA984804AE6CB1040000; // {B1040000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_3GP = 0xE75F96467BC5BA984804AE6CB9840000; // {B9840000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_3GPPFile = 0xE75F96467BC5BA984804AE6CB9840000; // {B9840000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_3GPA = 0x7A9D01A071220BA141EFF971E5172730; // {E5172730-F971-41EF-A10B-2271A0019D7A}
const WPD_OBJECT_FORMAT_3G2 = 0xE75F96467BC5BA984804AE6CB9850000; // {B9850000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_3GPP2File = 0xE75F96467BC5BA984804AE6CB9850000; // {B9850000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_3G2A = 0xE4EE871021B15EBA4E3487591A11202D; // {1A11202D-8759-4E34-BA5E-B1211087EEE4}
const WPD_OBJECT_FORMAT_AVCHD = 0xE75F96467BC5BA984804AE6CB9860000; // {B9860000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AVCHDFile = 0xE75F96467BC5BA984804AE6CB9860000; // {B9860000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ATSCTS = 0xE75F96467BC5BA984804AE6CB9870000; // {B9870000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_ATSCTSFile = 0xE75F96467BC5BA984804AE6CB9870000; // {B9870000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_DVBTS = 0xE75F96467BC5BA984804AE6CB9880000; // {B9880000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_DVBTSFile = 0xE75F96467BC5BA984804AE6CB9880000; // {B9880000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_MKV = 0xE75F96467BC5BA984804AE6CB9900000; // {B9900000-AE6C-4804-98BA-C57B46965FE7}
const WPD_OBJECT_FORMAT_ALL = 0x227BA5F3B505FA9C479C4BB3C1F62EB2; // {C1F62EB2-4BB3-479C-9CFA-05B5F3A57B22}
const FORMAT_UnknownImage = 0xE75F96467BC5BA984804AE6C38000000; // {38000000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_FirmwareFile = 0xE75F96467BC5BA984804AE6CB8020000; // {B8020000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_UndefinedAudio = 0xE75F96467BC5BA984804AE6CB9000000; // {B9000000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_UndefinedVideo = 0xE75F96467BC5BA984804AE6CB9890000; // {B9890000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_UndefinedCollection = 0xE75F96467BC5BA984804AE6CBA000000; // {BA000000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractMultimediaAlbum = 0xE75F96467BC5BA984804AE6CBA010000; // {BA010000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractImageAlbum = 0xE75F96467BC5BA984804AE6CBA020000; // {BA020000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractAudioAlbum = 0xE75F96467BC5BA984804AE6CBA030000; // {BA030000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractVideoAlbum = 0xE75F96467BC5BA984804AE6CBA040000; // {BA040000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractAudioVideoAlbum = 0xE75F96467BC5BA984804AE6CBA050000; // {BA050000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractChapteredProduction = 0xE75F96467BC5BA984804AE6CBA080000; // {BA080000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractAudioPlaylist = 0xE75F96467BC5BA984804AE6CBA090000; // {BA090000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractVideoPlaylist = 0xE75F96467BC5BA984804AE6CBA0A0000; // {BA0A0000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_UndefinedDocument = 0xE75F96467BC5BA984804AE6CBA800000; // {BA800000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractDocument = 0xE75F96467BC5BA984804AE6CBA810000; // {BA810000-AE6C-4804-98BA-C57B46965FE7}

const SERVICE_AnchorSync = 0x9ada5ca2631d6f9444fcad7a056d8b9e; // {056d8b9e-ad7a-44fc-946f-1d63a25cda9a}
const NAMESPACE_AnchorSyncSvc = 0xfa40dbc214baa3b942788fc7e65b8fb7; // {e65b8fb7-8fc7-4278-b9a3-ba14c2db40fa}
const NAMESPACE_AnchorResults = 0x1f8b6d10e5255c80430f8d45516b5dce; // {516b5dce-8d45-430f-805c-25e5106d8b1f}
const FORMAT_AnchorSyncKnowledge = 0xcd3e3f3ab34cbcbb4727f23137c550bc; // {37c550bc-f231-4727-bbbc-4cb33a3f3ecd}
const FORMAT_AnchorSyncSvc_AnchorResults = 0x1e3269358393299d487ace4af35527c1; // {f35527c1-ce4a-487a-9d29-93833569321e}
const METHOD_AnchorSyncSvc_GetChangesSinceAnchor = 0xcd3e3f3ab34cbcbb4727f23137c550bc; // {37c550bc-f231-4727-bbbc-4cb33a3f3ecd}

const SERVICE_Calendar = 0xE30AEBEAA05CA19F45E97F04E4DFDBD3; // {E4DFDBD3-7F04-45E9-9FA1-5CA0EAEB0AE3}
const NAMESPACE_CalendarSvc = 0x29861B48DFCEA3B1430661E563816297; // {63816297-61E5-4306-B1A3-CEDF481B8629}
const NAMESPACE_CalendarObj = 0xD3889C0D224EC9A140D8431DF99EFD03; // {F99EFD03-431D-40D8-A1C9-4E220D9C88D3}
const FORMAT_AbstractActivity = 0x09c39314ead9e7be44493901bf70e114; // {bf70e114-3901-4449-bee7-d9ea1493c309}
const FORMAT_AbstractActivityOccurrence = 0x32AF6658234C888442C532D1E87A7008; // {E87A7008-32D1-42C5-8488-4C235866AF32}
const FORMAT_VCalendar1Activity = 0x21915CD4E276FFA14585F7D323F7A5A5; // {23F7A5A5-F7D3-4585-A1FF-76E2D45C9121}
const FORMAT_ICalendarActivity = 0x612ADD0BE6B6F1A341B77890CC4538CB; // {CC4538CB-7890-41B7-A3F1-B6E60BDD2A61}

const SERVICE_Contacts = 0x89739B33A6ECCF9D4F769D6EDD04D5FC; // {DD04D5FC-9D6E-4F76-9DCF-ECA6339B7389}
const NAMESPACE_ContactObj = 0x2B31A9856172F9B34777987DFBD4FDAB; // {FBD4FDAB-987D-4777-B3F9-726185A9312B}
const FORMAT_AbstractContact = 0xE75F96467BC5BA984804AE6CBB810000; // {BB810000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_VCard2Contact = 0xE75F96467BC5BA984804AE6CBB820000; // {BB820000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_VCard3Contact = 0xE75F96467BC5BA984804AE6CBB830000; // {BB830000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractContactGroup = 0xE75F96467BC5BA984804AE6CBA060000; // {BA060000-AE6C-4804-98BA-C57B46965FE7}

const NAMESPACE_Services = 0x4f8c0a485b43879442140b6c14fa7268; // {14fa7268-0b6c-4214-9487-435b480a8c4f}

const SERVICE_FullEnumSync = 0x0959308df365818844bec07528d3aac9; // {28d3aac9-c075-44be-8881-65f38d305909}
const NAMESPACE_FullEnumSyncSvc = 0xa59feced9498cb95456d4f3a63b10e6c; // {63b10e6c-4f3a-456d-95cb-9894edec9fa5}
const FORMAT_FullEnumSyncKnowledge = 0x4aa4939ade808bb44f45221b221bce32; // {221bce32-221b-4f45-b48b-80de9a93a44a}

const SERVICE_Message = 0xddebdf0a77852eb749af6b1629b43bd0; // {29b43bd0-6b16-49af-b72e-85770adfebdd}
const NAMESPACE_MessageObj = 0x8F9D097ECC7201BE4E8E05A4B28AE94B; // {B28AE94B-05A4-4E8E-BE01-72CC7E099D8F}
const FORMAT_AbstractMessage = 0xE75F96467BC5BA984804AE6CBB010000; // {BB010000-AE6C-4804-98BA-C57B46965FE7}
const FORMAT_AbstractMessageFolder = 0xE75F96467BC5BA984804AE6CBA070000; // {BA070000-AE6C-4804-98BA-C57B46965FE7}

const SERVICE_DeviceMetadata = 0x54df7b62e2d3afa041e1af65332ffe6a; // {332ffe6a-af65-41e1-a0af-d3e2627bdf54}
const NAMESPACE_DeviceMetadataObj = 0x1eae7ca5923be68d45bd9eef68bb7eeb; // {68bb7eeb-9eef-45bd-8de6-3b92a57cae1e}
const FORMAT_DeviceMetadataCAB = 0x5145252cc69944924e3b4303e1809599; // {e1809599-4303-4e3b-9244-99c62c254551}

const SERVICE_Notes = 0x21d36f8303a3c08c4719e7065c017aea; // {5c017aea-e706-4719-8cc0-a303836fd321}
const NAMESPACE_NotesObj = 0x8D2B594E3FDAB9AF41AD74835FFBFC7B; // {5FFBFC7B-7483-41AD-AFB9-DA3F4E592B8D}
const FORMAT_AbstractNote = 0x3fbb2a7d9bc639b3470339f6b3d1b688; // {b3d1b688-39f6-4703-b339-c69b7d2abb3f}

const SERVICE_Ringtones = 0x8e9f6a0e564f388d4106707dd0eace0e; // {d0eace0e-707d-4106-8d38-4f560e6a9f8e}
const NAMESPACE_RingtonesSvc = 0x74cbb34b76540592479032e67d05d925; // {7d05d925-32e6-4790-9205-54764bb3cb74}
const NAMESPACE_RingtonesObj = 0x5a8bb53cd8425a944c742c7d8d943c78; // {8d943c78-2c7d-4c74-945a-42d83cb58b5a}

const SERVICE_Status = 0xeb0d3aed4ffed74eDC9AB94B0B9F1048; // {0B9F1048-B94B-DC9A-4ed7-fe4fed3a0deb}
const NAMESPACE_StatusSvc = 0x13221aaab418e8a44b17562649cd1f76; // {49cd1f76-5626-4b17-a4e8-18b4aa1a2213}

const NAMESPACE_SyncSvc = 0x163a2f74ea9c58914607532c703d392c; // {703d392c-532c-4607-9158-9cea742f3a16}
const NAMESPACE_SyncObj = 0x19e3ee8ae27aa59949812f7437364f58; // {37364f58-2f74-4981-99a5-7ae28aeee319}
const METHOD_SyncSvc_BeginSync = 0x92351db37934198145d3c71363803e07; // {63803e07-c713-45d3-8119-3479b31d3592}
const METHOD_SyncSvc_EndSync = 0x49885c388dfddd98422ea53940f3f0f7; // {40f3f0f7-a539-422e-98dd-fd8d385c8849}

const SERVICE_Tasks = 0x031963E7D0282788491DB5C6BB340C54; // {BB340C54-B5C6-491D-8827-28D0E7631903}
const NAMESPACE_TaskObj = 0xC7DB3868B20C3AA04637D8A0E354E95E; // {E354E95E-D8A0-4637-A03A-0CB26838DBC7}
const FORMAT_AbstractTask = 0xdf676a59bc55549744ab74cf522979c0; // {522979c0-74cf-44ab-9754-55bc596a67df}

const WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS = 0x56FC19081E7757A341061A2E4D545058; // {4D545058-1A2E-4106-A357-771E0819FC56}
const WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS = 0x490FBCA99886C89545784FCE4D545058; // {4D545058-4FCE-4578-95C8-8698A9BC0F49}
const WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS = 0x70831E6E24DC1D8F40b389004D545058; // {4D545058-8900-40b3-8F1D-DC246E1E8370}
const WPD_CATEGORY_MTP_EXT_EVENT_PARAMS = 0x968A727F324FC3954e4dEF884D545058; // {4D545058-EF88-4e4d-95C3-4F327F728A96}

Table WPDFormatUINT128AsGUID
{
    switch(value)
    {
        default: FormatString("{%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
            value[3], value[2], value[1],value[0], value[5], value[4], value[7], value[6],
            value[8], value[9], value[10], value[11], value[12], value[13], value[14], value[15]);
    }
}


/// Interface GUID table
Table WPDInterfaceGUIDsTable
{
    switch(value)
    {
        case CLSID_PortableDeviceValues               : "IPortableDeviceValues";
        case CLSID_PortableDevicePropVariantCollection: "IPortableDevicePropVariantCollection";
        case CLSID_PortableDeviceKeyCollection        : "IPortableDeviceKeyCollection";
        case CLSID_PortableDeviceValuesCollection     : "IPortableDeviceValuesCollection";
        default: WPDFormatUINT128AsGUID(value);
    }
}

/// From Wtypes.h enum VARENUM
Table WPDPropVariantTypesTable
{
    switch(value)
    {
        case VT_I2       : "VT_I2";
        case VT_I4       : "VT_I4";
        case VT_R4       : "VT_R4";
        case VT_R8       : "VT_R8";
        case VT_DATE     : "VT_DATE";
        case VT_BSTR     : "VT_BSTR";
        case VT_DISPATCH : "VT_DISPATCH";
        case VT_ERROR    : "VT_ERROR";
        case VT_BOOL     : "VT_BOOL";
        case VT_UNKNOWN  : "VT_UNKNOWN";
        case VT_I1       : "VT_I1";
        case VT_UI1      : "VT_UI1";
        case VT_UI2      : "VT_UI2";
        case VT_UI4      : "VT_UI4";
        case VT_I8       : "VT_I8";
        case VT_UI8      : "VT_UI8";
        case VT_INT      : "VT_INT";
        case VT_UINT     : "VT_UINT";
        case VT_LPWSTR   : "VT_LPWSTR";
        case VT_FILETIME : "VT_FILETIME";
        case VT_CLSID    : "VT_CLSID";
        case VT_VECTOR|VT_UI1          : "VT_VECTOR|VT_UI1";
        case VT_BYREF|VT_VECTOR|VT_UI1 : "VT_BYREF|VT_VECTOR|VT_UI1";
        default                        : FormatString("Unsupported VT:%d", value);
    }
}

/// Displays WPD Property Keys.
Table WPDPropertyKeyTable(fmtid, pid)
{
    switch(fmtid)
    {
        case WPD_CATEGORY_NULL: WPD_CATEGORY_NULL_Table(fmtid, pid);
        case WPD_OBJECT_PROPERTIES_V1: WPD_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_OBJECT_PROPERTIES_V2: WPD_OBJECT_PROPERTIES_V2_Table(fmtid, pid);
        case WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1: WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_FOLDER_OBJECT_PROPERTIES_V1: WPD_FOLDER_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_IMAGE_OBJECT_PROPERTIES_V1: WPD_IMAGE_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_MEDIA_PROPERTIES_V1: WPD_MEDIA_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_CONTACT_OBJECT_PROPERTIES_V1: WPD_CONTACT_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_MUSIC_OBJECT_PROPERTIES_V1: WPD_MUSIC_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_VIDEO_OBJECT_PROPERTIES_V1: WPD_VIDEO_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1: WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_EMAIL_OBJECT_PROPERTIES_V1: WPD_EMAIL_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_APPOINTMENT_OBJECT_PROPERTIES_V1: WPD_APPOINTMENT_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_TASK_OBJECT_PROPERTIES_V1: WPD_TASK_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_STORAGE_OBJECT_PROPERTIES_V1: WPD_STORAGE_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_NETWORK_ASSOCIATION_PROPERTIES_V1: WPD_NETWORK_ASSOCIATION_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1: WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_SMS_OBJECT_PROPERTIES_V1: WPD_SMS_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_SECTION_OBJECT_PROPERTIES_V1: WPD_SECTION_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1: WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_CLIENT_INFORMATION_PROPERTIES_V1: WPD_CLIENT_INFORMATION_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_PROPERTY_ATTRIBUTES_V1: WPD_PROPERTY_ATTRIBUTES_V1_Table(fmtid, pid);
        case WPD_PROPERTY_ATTRIBUTES_V2: WPD_PROPERTY_ATTRIBUTES_V2_Table(fmtid, pid);
        case WPD_CLASS_EXTENSION_OPTIONS_V1: WPD_CLASS_EXTENSION_OPTIONS_V1_Table(fmtid, pid);
        case WPD_CLASS_EXTENSION_OPTIONS_V2: WPD_CLASS_EXTENSION_OPTIONS_V2_Table(fmtid, pid);
        case WPD_CLASS_EXTENSION_OPTIONS_V3: WPD_CLASS_EXTENSION_OPTIONS_V3_Table(fmtid, pid);
        case WPD_RESOURCE_ATTRIBUTES_V1: WPD_RESOURCE_ATTRIBUTES_V1_Table(fmtid, pid);
        case WPD_DEVICE_PROPERTIES_V1: WPD_DEVICE_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_DEVICE_PROPERTIES_V2: WPD_DEVICE_PROPERTIES_V2_Table(fmtid, pid);
        case WPD_DEVICE_PROPERTIES_V3: WPD_DEVICE_PROPERTIES_V3_Table(fmtid, pid);
        case WPD_SERVICE_PROPERTIES_V1: WPD_SERVICE_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_EVENT_PROPERTIES_V1: WPD_EVENT_PROPERTIES_V1_Table(fmtid, pid);
        case WPD_EVENT_PROPERTIES_V2: WPD_EVENT_PROPERTIES_V2_Table(fmtid, pid);
        case WPD_EVENT_OPTIONS_V1: WPD_EVENT_OPTIONS_V1_Table(fmtid, pid);
        case WPD_EVENT_ATTRIBUTES_V1: WPD_EVENT_ATTRIBUTES_V1_Table(fmtid, pid);
        case WPD_API_OPTIONS_V1: WPD_API_OPTIONS_V1_Table(fmtid, pid);
        case WPD_FORMAT_ATTRIBUTES_V1: WPD_FORMAT_ATTRIBUTES_V1_Table(fmtid, pid);
        case WPD_METHOD_ATTRIBUTES_V1: WPD_METHOD_ATTRIBUTES_V1_Table(fmtid, pid);
        case WPD_PARAMETER_ATTRIBUTES_V1: WPD_PARAMETER_ATTRIBUTES_V1_Table(fmtid, pid);
        case WPD_CATEGORY_COMMON: WPD_CATEGORY_COMMON_Table(fmtid, pid);
        case WPD_CATEGORY_OBJECT_ENUMERATION: WPD_CATEGORY_OBJECT_ENUMERATION_Table(fmtid, pid);
        case WPD_CATEGORY_OBJECT_PROPERTIES: WPD_CATEGORY_OBJECT_PROPERTIES_Table(fmtid, pid);
        case WPD_CATEGORY_OBJECT_PROPERTIES_BULK: WPD_CATEGORY_OBJECT_PROPERTIES_BULK_Table(fmtid, pid);
        case WPD_CATEGORY_OBJECT_RESOURCES: WPD_CATEGORY_OBJECT_RESOURCES_Table(fmtid, pid);
        case WPD_CATEGORY_OBJECT_MANAGEMENT: WPD_CATEGORY_OBJECT_MANAGEMENT_Table(fmtid, pid);
        case WPD_CATEGORY_CAPABILITIES: WPD_CATEGORY_CAPABILITIES_Table(fmtid, pid);
        case WPD_CATEGORY_STORAGE: WPD_CATEGORY_STORAGE_Table(fmtid, pid);
        case WPD_CATEGORY_SMS: WPD_CATEGORY_SMS_Table(fmtid, pid);
        case WPD_CATEGORY_STILL_IMAGE_CAPTURE: WPD_CATEGORY_STILL_IMAGE_CAPTURE_Table(fmtid, pid);
        case WPD_CATEGORY_MEDIA_CAPTURE: WPD_CATEGORY_MEDIA_CAPTURE_Table(fmtid, pid);
        case WPD_CATEGORY_DEVICE_HINTS: WPD_CATEGORY_DEVICE_HINTS_Table(fmtid, pid);
        case WPD_CLASS_EXTENSION_V1: WPD_CLASS_EXTENSION_V1_Table(fmtid, pid);
        case WPD_CLASS_EXTENSION_V2: WPD_CLASS_EXTENSION_V2_Table(fmtid, pid);
        case WPD_CATEGORY_NETWORK_CONFIGURATION: WPD_CATEGORY_NETWORK_CONFIGURATION_Table(fmtid, pid);
        case WPD_CATEGORY_SERVICE_COMMON: WPD_CATEGORY_SERVICE_COMMON_Table(fmtid, pid);
        case WPD_CATEGORY_SERVICE_CAPABILITIES: WPD_CATEGORY_SERVICE_CAPABILITIES_Table(fmtid, pid);
        case WPD_CATEGORY_SERVICE_METHODS: WPD_CATEGORY_SERVICE_METHODS_Table(fmtid, pid);
        case WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS: WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS_Table(fmtid, pid);
        case WPD_CATEGORY_MTP_EXT_EVENT_PARAMS: WPD_CATEGORY_MTP_EXT_EVENT_PARAMS_Table(fmtid, pid);
        case WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS_Table(fmtid, pid);
        case WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS: WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS_Table(fmtid, pid);
        default: DeviceServicesPropertyKeyTable(fmtid, pid);
    }
}

Table WPDResourceTable(fmtid, pid)
{
    switch(fmtid)
    {
        // {E81E79BE-34F0-41BF-B53F-F1A06AE87842}.0
        case 0x4278E86AA0F13FB541BF34F0E81E79BE: "WPD_RESOURCE_DEFAULT";
        // {2C4D6803-80EA-4580-AF9A-5BE1A23EDDCB}.0
        case 0xCBDD3EA2E15B9AAF458080EA2C4D6803: "WPD_RESOURCE_CONTACT_PHOTO";
        // {C7C407BA-98FA-46B5-9960-23FEC124CFDE}.0
        case 0xDECF24C1FE23609946B598FAC7C407BA: "WPD_RESOURCE_THUMBNAIL";
        // {F195FED8-AA28-4EE3-B153-E182DD5EDC39}.0
        case 0x39DC5EDD82E153B14EE3AA28F195FED8: "WPD_RESOURCE_ICON";
        // {3BC13982-85B1-48E0-95A6-8D3AD06BE117}.0
        case 0x17E16BD03A8DA69548E085B13BC13982: "WPD_RESOURCE_AUDIO_CLIP";
        // {F02AA354-2300-4E2D-A1B9-3B6730F7FA21}.0
        case 0x21FAF730673BB9A14E2D2300F02AA354: "WPD_RESOURCE_ALBUM_ART";
        // {B9B9F515-BA70-4647-94DC-FA4925E95A07}.0
        case 0x075AE92549FADC944647BA70B9B9F515: "WPD_RESOURCE_GENERIC";
        // {B566EE42-6368-4290-8662-70182FB79F20}.0
        case 0x209FB72F1870628642906368B566EE42: "WPD_RESOURCE_VIDEO_CLIP";
        // {B633B1AE-6CAF-4A87-9589-22DED6DD5899}.0
        case 0x9958DDD6DE2289954A876CAFB633B1AE: "WPD_RESOURCE_BRANDING_ART";    }
}

Table WPD_CATEGORY_NULL_Table(fmtid, pid)
{
    switch(pid)
    {
        case 0: "WPD_PROPERTY_NULL";
        default: FormatString("WPD_CATEGORY_NULL.%d", pid);
    }
}

Table WPD_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_OBJECT_ID";
        case 3: "WPD_OBJECT_PARENT_ID";
        case 4: "WPD_OBJECT_NAME";
        case 5: "WPD_OBJECT_PERSISTENT_UNIQUE_ID";
        case 6: "WPD_OBJECT_FORMAT";
        case 7: "WPD_OBJECT_CONTENT_TYPE";
        case 9: "WPD_OBJECT_ISHIDDEN";
        case 10: "WPD_OBJECT_ISSYSTEM";
        case 11: "WPD_OBJECT_SIZE";
        case 12: "WPD_OBJECT_ORIGINAL_FILE_NAME";
        case 13: "WPD_OBJECT_NON_CONSUMABLE";
        case 14: "WPD_OBJECT_REFERENCES";
        case 15: "WPD_OBJECT_KEYWORDS";
        case 16: "WPD_OBJECT_SYNC_ID";
        case 17: "WPD_OBJECT_IS_DRM_PROTECTED";
        case 18: "WPD_OBJECT_DATE_CREATED";
        case 19: "WPD_OBJECT_DATE_MODIFIED";
        case 20: "WPD_OBJECT_DATE_AUTHORED";
        case 21: "WPD_OBJECT_BACK_REFERENCES";
        case 23: "WPD_OBJECT_CONTAINER_FUNCTIONAL_OBJECT_ID";
        case 24: "WPD_OBJECT_GENERATE_THUMBNAIL_FROM_RESOURCE";
        case 25: "WPD_OBJECT_HINT_LOCATION_DISPLAY_NAME";
        case 26: "WPD_OBJECT_CAN_DELETE";
        case 27: "WPD_OBJECT_LANGUAGE_LOCALE";
        case 32: "PKEY_GenericObj_AssociationType";
        case 33: "PKEY_GenericObj_AssociationDesc";
        case 39: "PKEY_GenericObj_DateCreated";
        case 40: "PKEY_GenericObj_DateModified";
        case 34: "PKEY_GenericObj_AllowedFolderContents";
        case 28: "PKEY_GenericObj_Hidden";
        case 29: "PKEY_GenericObj_SystemObject";
        case 35: "PKEY_GenericObj_PropertyBag";
        case 41: "PKEY_GenericObj_DateAuthored";
        case 45: "PKEY_GenericObj_Description";
        case 38: "PKEY_GenericObj_Copyright";
        case 36: "PKEY_GenericObj_DateAdded";
        case 30: "PKEY_GenericObj_NonConsumable";
        case 37: "PKEY_GenericObj_Corrupt";
        case 42: "PKEY_GenericObj_DateAccessed";
        case 31: "PKEY_GenericObj_DRMStatus";
        case 46: "PKEY_GenericObj_SubDescription";
        case 43: "PKEY_GenericObj_DateRevised";
        case 44: "PKEY_GenericObj_TimeToLive";
        case 47: "PKEY_GenericObj_ReferenceParentID";
        default: FormatString("WPD_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_OBJECT_PROPERTIES_V2_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_OBJECT_SUPPORTED_UNITS";
        default: FormatString("WPD_OBJECT_PROPERTIES_V2.%d", pid);
    }
}

Table WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_FUNCTIONAL_OBJECT_CATEGORY";
        default: FormatString("WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_FOLDER_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_FOLDER_CONTENT_TYPES_ALLOWED";
        default: FormatString("WPD_FOLDER_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_IMAGE_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "WPD_IMAGE_BITDEPTH";
        case 4: "WPD_IMAGE_CROPPED_STATUS";
        case 5: "WPD_IMAGE_COLOR_CORRECTED_STATUS";
        case 6: "WPD_IMAGE_FNUMBER";
        case 7: "WPD_IMAGE_EXPOSURE_TIME";
        case 8: "WPD_IMAGE_EXPOSURE_INDEX";
        case 9: "WPD_IMAGE_HORIZONTAL_RESOLUTION";
        case 10: "WPD_IMAGE_VERTICAL_RESOLUTION";
        default: FormatString("WPD_IMAGE_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_MEDIA_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_MEDIA_TOTAL_BITRATE";
        case 3: "WPD_MEDIA_BITRATE_TYPE";
        case 4: "WPD_MEDIA_COPYRIGHT";
        case 5: "WPD_MEDIA_SUBSCRIPTION_CONTENT_ID";
        case 6: "WPD_MEDIA_USE_COUNT";
        case 7: "WPD_MEDIA_SKIP_COUNT";
        case 8: "WPD_MEDIA_LAST_ACCESSED_TIME";
        case 9: "WPD_MEDIA_PARENTAL_RATING";
        case 10: "WPD_MEDIA_META_GENRE";
        case 11: "WPD_MEDIA_COMPOSER";
        case 12: "WPD_MEDIA_EFFECTIVE_RATING";
        case 13: "WPD_MEDIA_SUB_TITLE";
        case 14: "WPD_MEDIA_RELEASE_DATE";
        case 15: "WPD_MEDIA_SAMPLE_RATE";
        case 16: "WPD_MEDIA_STAR_RATING";
        case 17: "WPD_MEDIA_USER_EFFECTIVE_RATING";
        case 18: "WPD_MEDIA_TITLE";
        case 19: "WPD_MEDIA_DURATION";
        case 20: "WPD_MEDIA_BUY_NOW";
        case 21: "WPD_MEDIA_ENCODING_PROFILE";
        case 22: "WPD_MEDIA_WIDTH";
        case 23: "WPD_MEDIA_HEIGHT";
        case 24: "WPD_MEDIA_ARTIST";
        case 25: "WPD_MEDIA_ALBUM_ARTIST";
        case 26: "WPD_MEDIA_OWNER";
        case 27: "WPD_MEDIA_MANAGING_EDITOR";
        case 28: "WPD_MEDIA_WEBMASTER";
        case 29: "WPD_MEDIA_SOURCE_URL";
        case 30: "WPD_MEDIA_DESTINATION_URL";
        case 31: "WPD_MEDIA_DESCRIPTION";
        case 32: "WPD_MEDIA_GENRE";
        case 33: "WPD_MEDIA_TIME_BOOKMARK";
        case 34: "WPD_MEDIA_OBJECT_BOOKMARK";
        case 35: "WPD_MEDIA_LAST_BUILD_DATE";
        case 36: "WPD_MEDIA_BYTE_BOOKMARK";
        case 37: "WPD_MEDIA_TIME_TO_LIVE";
        case 38: "WPD_MEDIA_GUID";
        case 39: "WPD_MEDIA_SUB_DESCRIPTION";
        case 49: "WPD_MEDIA_AUDIO_ENCODING_PROFILE";
        case 40: "PKEY_MediaObj_GeographicOrigin";
        case 43: "PKEY_MediaObj_Track";
        case 47: "PKEY_MediaObj_Credits";
        case 45: "PKEY_MediaObj_Producer";
        case 41: "PKEY_MediaObj_DateOriginalRelease";
        case 42: "PKEY_MediaObj_AlbumName";
        case 44: "PKEY_MediaObj_Mood";
        case 46: "PKEY_MediaObj_BufferSize";
        case 48: "PKEY_MediaObj_EncodingQuality";
        default: FormatString("WPD_MEDIA_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_CONTACT_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_CONTACT_DISPLAY_NAME";
        case 3: "WPD_CONTACT_FIRST_NAME";
        case 4: "WPD_CONTACT_MIDDLE_NAMES";
        case 5: "WPD_CONTACT_LAST_NAME";
        case 6: "WPD_CONTACT_PREFIX";
        case 7: "WPD_CONTACT_SUFFIX";
        case 8: "WPD_CONTACT_PHONETIC_FIRST_NAME";
        case 9: "WPD_CONTACT_PHONETIC_LAST_NAME";
        case 10: "WPD_CONTACT_PERSONAL_FULL_POSTAL_ADDRESS";
        case 11: "WPD_CONTACT_PERSONAL_POSTAL_ADDRESS_LINE1";
        case 12: "WPD_CONTACT_PERSONAL_POSTAL_ADDRESS_LINE2";
        case 13: "WPD_CONTACT_PERSONAL_POSTAL_ADDRESS_CITY";
        case 14: "WPD_CONTACT_PERSONAL_POSTAL_ADDRESS_REGION";
        case 15: "WPD_CONTACT_PERSONAL_POSTAL_ADDRESS_POSTAL_CODE";
        case 16: "WPD_CONTACT_PERSONAL_POSTAL_ADDRESS_COUNTRY";
        case 17: "WPD_CONTACT_BUSINESS_FULL_POSTAL_ADDRESS";
        case 18: "WPD_CONTACT_BUSINESS_POSTAL_ADDRESS_LINE1";
        case 19: "WPD_CONTACT_BUSINESS_POSTAL_ADDRESS_LINE2";
        case 20: "WPD_CONTACT_BUSINESS_POSTAL_ADDRESS_CITY";
        case 21: "WPD_CONTACT_BUSINESS_POSTAL_ADDRESS_REGION";
        case 22: "WPD_CONTACT_BUSINESS_POSTAL_ADDRESS_POSTAL_CODE";
        case 23: "WPD_CONTACT_BUSINESS_POSTAL_ADDRESS_COUNTRY";
        case 24: "WPD_CONTACT_OTHER_FULL_POSTAL_ADDRESS";
        case 25: "WPD_CONTACT_OTHER_POSTAL_ADDRESS_LINE1";
        case 26: "WPD_CONTACT_OTHER_POSTAL_ADDRESS_LINE2";
        case 27: "WPD_CONTACT_OTHER_POSTAL_ADDRESS_CITY";
        case 28: "WPD_CONTACT_OTHER_POSTAL_ADDRESS_REGION";
        case 29: "WPD_CONTACT_OTHER_POSTAL_ADDRESS_POSTAL_CODE";
        case 30: "WPD_CONTACT_OTHER_POSTAL_ADDRESS_POSTAL_COUNTRY";
        case 31: "WPD_CONTACT_PRIMARY_EMAIL_ADDRESS";
        case 32: "WPD_CONTACT_PERSONAL_EMAIL";
        case 33: "WPD_CONTACT_PERSONAL_EMAIL2";
        case 34: "WPD_CONTACT_BUSINESS_EMAIL";
        case 35: "WPD_CONTACT_BUSINESS_EMAIL2";
        case 36: "WPD_CONTACT_OTHER_EMAILS";
        case 37: "WPD_CONTACT_PRIMARY_PHONE";
        case 38: "WPD_CONTACT_PERSONAL_PHONE";
        case 39: "WPD_CONTACT_PERSONAL_PHONE2";
        case 40: "WPD_CONTACT_BUSINESS_PHONE";
        case 41: "WPD_CONTACT_BUSINESS_PHONE2";
        case 42: "WPD_CONTACT_MOBILE_PHONE";
        case 43: "WPD_CONTACT_MOBILE_PHONE2";
        case 44: "WPD_CONTACT_PERSONAL_FAX";
        case 45: "WPD_CONTACT_BUSINESS_FAX";
        case 46: "WPD_CONTACT_PAGER";
        case 47: "WPD_CONTACT_OTHER_PHONES";
        case 48: "WPD_CONTACT_PRIMARY_WEB_ADDRESS";
        case 49: "WPD_CONTACT_PERSONAL_WEB_ADDRESS";
        case 50: "WPD_CONTACT_BUSINESS_WEB_ADDRESS";
        case 51: "WPD_CONTACT_INSTANT_MESSENGER";
        case 52: "WPD_CONTACT_INSTANT_MESSENGER2";
        case 53: "WPD_CONTACT_INSTANT_MESSENGER3";
        case 54: "WPD_CONTACT_COMPANY_NAME";
        case 55: "WPD_CONTACT_PHONETIC_COMPANY_NAME";
        case 56: "WPD_CONTACT_ROLE";
        case 57: "WPD_CONTACT_BIRTHDATE";
        case 58: "WPD_CONTACT_PRIMARY_FAX";
        case 59: "WPD_CONTACT_SPOUSE";
        case 60: "WPD_CONTACT_CHILDREN";
        case 61: "WPD_CONTACT_ASSISTANT";
        case 62: "WPD_CONTACT_ANNIVERSARY_DATE";
        case 63: "WPD_CONTACT_RINGTONE";
        default: FormatString("WPD_CONTACT_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_MUSIC_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "WPD_MUSIC_ALBUM";
        case 4: "WPD_MUSIC_TRACK";
        case 6: "WPD_MUSIC_LYRICS";
        case 8: "WPD_MUSIC_MOOD";
        case 9: "WPD_AUDIO_BITRATE";
        case 10: "WPD_AUDIO_CHANNEL_COUNT";
        case 11: "WPD_AUDIO_FORMAT_CODE";
        case 12: "WPD_AUDIO_BIT_DEPTH";
        case 13: "WPD_AUDIO_BLOCK_ALIGNMENT";
        default: FormatString("WPD_MUSIC_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_VIDEO_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_VIDEO_AUTHOR";
        case 4: "WPD_VIDEO_RECORDEDTV_STATION_NAME";
        case 5: "WPD_VIDEO_RECORDEDTV_CHANNEL_NUMBER";
        case 7: "WPD_VIDEO_RECORDEDTV_REPEAT";
        case 8: "WPD_VIDEO_BUFFER_SIZE";
        case 9: "WPD_VIDEO_CREDITS";
        case 10: "WPD_VIDEO_KEY_FRAME_DISTANCE";
        case 11: "WPD_VIDEO_QUALITY_SETTING";
        case 12: "WPD_VIDEO_SCAN_TYPE";
        case 13: "WPD_VIDEO_BITRATE";
        case 14: "WPD_VIDEO_FOURCC_CODE";
        case 15: "WPD_VIDEO_FRAMERATE";
        default: FormatString("WPD_VIDEO_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMON_INFORMATION_SUBJECT";
        case 3: "WPD_COMMON_INFORMATION_BODY_TEXT";
        case 4: "WPD_COMMON_INFORMATION_PRIORITY";
        case 5: "WPD_COMMON_INFORMATION_START_DATETIME";
        case 6: "WPD_COMMON_INFORMATION_END_DATETIME";
        case 7: "WPD_COMMON_INFORMATION_NOTES";
        default: FormatString("WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_EMAIL_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_EMAIL_TO_LINE";
        case 3: "WPD_EMAIL_CC_LINE";
        case 4: "WPD_EMAIL_BCC_LINE";
        case 7: "WPD_EMAIL_HAS_BEEN_READ";
        case 8: "WPD_EMAIL_RECEIVED_TIME";
        case 9: "WPD_EMAIL_HAS_ATTACHMENTS";
        case 10: "WPD_EMAIL_SENDER_ADDRESS";
        default: FormatString("WPD_EMAIL_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_APPOINTMENT_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "WPD_APPOINTMENT_LOCATION";
        case 7: "WPD_APPOINTMENT_TYPE";
        case 8: "WPD_APPOINTMENT_REQUIRED_ATTENDEES";
        case 9: "WPD_APPOINTMENT_OPTIONAL_ATTENDEES";
        case 10: "WPD_APPOINTMENT_ACCEPTED_ATTENDEES";
        case 11: "WPD_APPOINTMENT_RESOURCES";
        case 12: "WPD_APPOINTMENT_TENTATIVE_ATTENDEES";
        case 13: "WPD_APPOINTMENT_DECLINED_ATTENDEES";
        default: FormatString("WPD_APPOINTMENT_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_TASK_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 6: "WPD_TASK_STATUS";
        case 8: "WPD_TASK_PERCENT_COMPLETE";
        case 10: "WPD_TASK_REMINDER_DATE";
        case 11: "WPD_TASK_OWNER";
        default: FormatString("WPD_TASK_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_STORAGE_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_STORAGE_TYPE";
        case 3: "WPD_STORAGE_FILE_SYSTEM_TYPE";
        case 4: "WPD_STORAGE_CAPACITY";
        case 5: "WPD_STORAGE_FREE_SPACE_IN_BYTES";
        case 6: "WPD_STORAGE_FREE_SPACE_IN_OBJECTS";
        case 7: "WPD_STORAGE_DESCRIPTION";
        case 8: "WPD_STORAGE_SERIAL_NUMBER";
        case 9: "WPD_STORAGE_MAX_OBJECT_SIZE";
        case 10: "WPD_STORAGE_CAPACITY_IN_OBJECTS";
        case 11: "WPD_STORAGE_ACCESS_CAPABILITY";
        default: FormatString("WPD_STORAGE_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_NETWORK_ASSOCIATION_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_NETWORK_ASSOCIATION_HOST_NETWORK_IDENTIFIERS";
        case 3: "WPD_NETWORK_ASSOCIATION_X509V3SEQUENCE";
        default: FormatString("WPD_NETWORK_ASSOCIATION_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_STILL_IMAGE_CAPTURE_RESOLUTION";
        case 3: "WPD_STILL_IMAGE_CAPTURE_FORMAT";
        case 4: "WPD_STILL_IMAGE_COMPRESSION_SETTING";
        case 5: "WPD_STILL_IMAGE_WHITE_BALANCE";
        case 6: "WPD_STILL_IMAGE_RGB_GAIN";
        case 7: "WPD_STILL_IMAGE_FNUMBER";
        case 8: "WPD_STILL_IMAGE_FOCAL_LENGTH";
        case 9: "WPD_STILL_IMAGE_FOCUS_DISTANCE";
        case 10: "WPD_STILL_IMAGE_FOCUS_MODE";
        case 11: "WPD_STILL_IMAGE_EXPOSURE_METERING_MODE";
        case 12: "WPD_STILL_IMAGE_FLASH_MODE";
        case 13: "WPD_STILL_IMAGE_EXPOSURE_TIME";
        case 14: "WPD_STILL_IMAGE_EXPOSURE_PROGRAM_MODE";
        case 15: "WPD_STILL_IMAGE_EXPOSURE_INDEX";
        case 16: "WPD_STILL_IMAGE_EXPOSURE_BIAS_COMPENSATION";
        case 17: "WPD_STILL_IMAGE_CAPTURE_DELAY";
        case 18: "WPD_STILL_IMAGE_CAPTURE_MODE";
        case 19: "WPD_STILL_IMAGE_CONTRAST";
        case 20: "WPD_STILL_IMAGE_SHARPNESS";
        case 21: "WPD_STILL_IMAGE_DIGITAL_ZOOM";
        case 22: "WPD_STILL_IMAGE_EFFECT_MODE";
        case 23: "WPD_STILL_IMAGE_BURST_NUMBER";
        case 24: "WPD_STILL_IMAGE_BURST_INTERVAL";
        case 25: "WPD_STILL_IMAGE_TIMELAPSE_NUMBER";
        case 26: "WPD_STILL_IMAGE_TIMELAPSE_INTERVAL";
        case 27: "WPD_STILL_IMAGE_FOCUS_METERING_MODE";
        case 28: "WPD_STILL_IMAGE_UPLOAD_URL";
        case 29: "WPD_STILL_IMAGE_ARTIST";
        case 30: "WPD_STILL_IMAGE_CAMERA_MODEL";
        case 31: "WPD_STILL_IMAGE_CAMERA_MANUFACTURER";
        default: FormatString("WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_SMS_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_SMS_PROVIDER";
        case 3: "WPD_SMS_TIMEOUT";
        case 4: "WPD_SMS_MAX_PAYLOAD";
        case 5: "WPD_SMS_ENCODING";
        default: FormatString("WPD_SMS_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_SECTION_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_SECTION_DATA_OFFSET";
        case 3: "WPD_SECTION_DATA_LENGTH";
        case 4: "WPD_SECTION_DATA_UNITS";
        case 5: "WPD_SECTION_DATA_REFERENCED_OBJECT_RESOURCE";
        default: FormatString("WPD_SECTION_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_RENDERING_INFORMATION_PROFILES";
        case 3: "WPD_RENDERING_INFORMATION_PROFILE_ENTRY_TYPE";
        case 4: "WPD_RENDERING_INFORMATION_PROFILE_ENTRY_CREATABLE_RESOURCES";
        default: FormatString("WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_CLIENT_INFORMATION_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_CLIENT_NAME";
        case 3: "WPD_CLIENT_MAJOR_VERSION";
        case 4: "WPD_CLIENT_MINOR_VERSION";
        case 5: "WPD_CLIENT_REVISION";
        case 6: "WPD_CLIENT_WMDRM_APPLICATION_PRIVATE_KEY";
        case 7: "WPD_CLIENT_WMDRM_APPLICATION_CERTIFICATE";
        case 8: "WPD_CLIENT_SECURITY_QUALITY_OF_SERVICE";
        case 9: "WPD_CLIENT_DESIRED_ACCESS";
        case 10: "WPD_CLIENT_SHARE_MODE";
        case 11: "WPD_CLIENT_EVENT_COOKIE";
        case 12: "WPD_CLIENT_MINIMUM_RESULTS_BUFFER_SIZE";
        case 13: "WPD_CLIENT_MANUAL_CLOSE_ON_DISCONNECT";
        default: FormatString("WPD_CLIENT_INFORMATION_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_PROPERTY_ATTRIBUTES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_PROPERTY_ATTRIBUTE_FORM";
        case 3: "WPD_PROPERTY_ATTRIBUTE_CAN_READ";
        case 4: "WPD_PROPERTY_ATTRIBUTE_CAN_WRITE";
        case 5: "WPD_PROPERTY_ATTRIBUTE_CAN_DELETE";
        case 6: "WPD_PROPERTY_ATTRIBUTE_DEFAULT_VALUE";
        case 7: "WPD_PROPERTY_ATTRIBUTE_FAST_PROPERTY";
        case 8: "WPD_PROPERTY_ATTRIBUTE_RANGE_MIN";
        case 9: "WPD_PROPERTY_ATTRIBUTE_RANGE_MAX";
        case 10: "WPD_PROPERTY_ATTRIBUTE_RANGE_STEP";
        case 11: "WPD_PROPERTY_ATTRIBUTE_ENUMERATION_ELEMENTS";
        case 12: "WPD_PROPERTY_ATTRIBUTE_REGULAR_EXPRESSION";
        case 13: "WPD_PROPERTY_ATTRIBUTE_MAX_SIZE";
        default: FormatString("WPD_PROPERTY_ATTRIBUTES_V1.%d", pid);
    }
}

Table WPD_PROPERTY_ATTRIBUTES_V2_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_PROPERTY_ATTRIBUTE_NAME";
        case 3: "WPD_PROPERTY_ATTRIBUTE_VARTYPE";
        default: FormatString("WPD_PROPERTY_ATTRIBUTES_V2.%d", pid);
    }
}

Table WPD_CLASS_EXTENSION_OPTIONS_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_CLASS_EXTENSION_OPTIONS_SUPPORTED_CONTENT_TYPES";
        case 3: "WPD_CLASS_EXTENSION_OPTIONS_DONT_REGISTER_WPD_DEVICE_INTERFACE";
        case 4: "WPD_CLASS_EXTENSION_OPTIONS_REGISTER_WPD_PRIVATE_DEVICE_INTERFACE";
        default: FormatString("WPD_CLASS_EXTENSION_OPTIONS_V1.%d", pid);
    }
}

Table WPD_CLASS_EXTENSION_OPTIONS_V2_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_CLASS_EXTENSION_OPTIONS_MULTITRANSPORT_MODE";
        case 3: "WPD_CLASS_EXTENSION_OPTIONS_DEVICE_IDENTIFICATION_VALUES";
        case 4: "WPD_CLASS_EXTENSION_OPTIONS_TRANSPORT_BANDWIDTH";
        default: FormatString("WPD_CLASS_EXTENSION_OPTIONS_V2.%d", pid);
    }
}

Table WPD_CLASS_EXTENSION_OPTIONS_V3_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_CLASS_EXTENSION_OPTIONS_SILENCE_AUTOPLAY";
        default: FormatString("WPD_CLASS_EXTENSION_OPTIONS_V3.%d", pid);
    }
}

Table WPD_RESOURCE_ATTRIBUTES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_RESOURCE_ATTRIBUTE_TOTAL_SIZE";
        case 3: "WPD_RESOURCE_ATTRIBUTE_CAN_READ";
        case 4: "WPD_RESOURCE_ATTRIBUTE_CAN_WRITE";
        case 5: "WPD_RESOURCE_ATTRIBUTE_CAN_DELETE";
        case 6: "WPD_RESOURCE_ATTRIBUTE_OPTIMAL_READ_BUFFER_SIZE";
        case 7: "WPD_RESOURCE_ATTRIBUTE_OPTIMAL_WRITE_BUFFER_SIZE";
        case 8: "WPD_RESOURCE_ATTRIBUTE_FORMAT";
        case 9: "WPD_RESOURCE_ATTRIBUTE_RESOURCE_KEY";
        default: FormatString("WPD_RESOURCE_ATTRIBUTES_V1.%d", pid);
    }
}

Table WPD_DEVICE_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_DEVICE_SYNC_PARTNER";
        case 3: "WPD_DEVICE_FIRMWARE_VERSION";
        case 4: "WPD_DEVICE_POWER_LEVEL";
        case 5: "WPD_DEVICE_POWER_SOURCE";
        case 6: "WPD_DEVICE_PROTOCOL";
        case 7: "WPD_DEVICE_MANUFACTURER";
        case 8: "WPD_DEVICE_MODEL";
        case 9: "WPD_DEVICE_SERIAL_NUMBER";
        case 10: "WPD_DEVICE_SUPPORTS_NON_CONSUMABLE";
        case 11: "WPD_DEVICE_DATETIME";
        case 12: "WPD_DEVICE_FRIENDLY_NAME";
        case 13: "WPD_DEVICE_SUPPORTED_DRM_SCHEMES";
        case 14: "WPD_DEVICE_SUPPORTED_FORMATS_ARE_ORDERED";
        case 15: "WPD_DEVICE_TYPE";
        case 16: "WPD_DEVICE_NETWORK_IDENTIFIER";
        default: FormatString("WPD_DEVICE_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_DEVICE_PROPERTIES_V2_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_DEVICE_FUNCTIONAL_UNIQUE_ID";
        case 3: "WPD_DEVICE_MODEL_UNIQUE_ID";
        case 4: "WPD_DEVICE_TRANSPORT";
        case 5: "WPD_DEVICE_USE_DEVICE_STAGE";
        default: FormatString("WPD_DEVICE_PROPERTIES_V2.%d", pid);
    }
}

Table WPD_DEVICE_PROPERTIES_V3_Table(fmtid, pid)
{
    switch(pid)
    {
        case 1: "WPD_DEVICE_EDP_IDENTITY";
        default: FormatString("WPD_DEVICE_PROPERTIES_V3.%d", pid);
    }
}

Table WPD_SERVICE_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_SERVICE_VERSION";
        default: FormatString("WPD_SERVICE_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_EVENT_PROPERTIES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_EVENT_PARAMETER_PNP_DEVICE_ID";
        case 3: "WPD_EVENT_PARAMETER_EVENT_ID";
        case 4: "WPD_EVENT_PARAMETER_OPERATION_STATE";
        case 5: "WPD_EVENT_PARAMETER_OPERATION_PROGRESS";
        case 6: "WPD_EVENT_PARAMETER_OBJECT_PARENT_PERSISTENT_UNIQUE_ID";
        case 7: "WPD_EVENT_PARAMETER_OBJECT_CREATION_COOKIE";
        case 8: "WPD_EVENT_PARAMETER_CHILD_HIERARCHY_CHANGED";
        default: FormatString("WPD_EVENT_PROPERTIES_V1.%d", pid);
    }
}

Table WPD_EVENT_PROPERTIES_V2_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_EVENT_PARAMETER_SERVICE_METHOD_CONTEXT";
        default: FormatString("WPD_EVENT_PROPERTIES_V2.%d", pid);
    }
}

Table WPD_EVENT_OPTIONS_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_EVENT_OPTION_IS_BROADCAST_EVENT";
        case 3: "WPD_EVENT_OPTION_IS_AUTOPLAY_EVENT";
        default: FormatString("WPD_EVENT_OPTIONS_V1.%d", pid);
    }
}

Table WPD_EVENT_ATTRIBUTES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_EVENT_ATTRIBUTE_NAME";
        case 3: "WPD_EVENT_ATTRIBUTE_PARAMETERS";
        case 4: "WPD_EVENT_ATTRIBUTE_OPTIONS";
        default: FormatString("WPD_EVENT_ATTRIBUTES_V1.%d", pid);
    }
}

Table WPD_API_OPTIONS_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_API_OPTION_USE_CLEAR_DATA_STREAM";
        case 3: "WPD_API_OPTION_IOCTL_ACCESS";
        default: FormatString("WPD_API_OPTIONS_V1.%d", pid);
    }
}

Table WPD_FORMAT_ATTRIBUTES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_FORMAT_ATTRIBUTE_NAME";
        case 3: "WPD_FORMAT_ATTRIBUTE_MIMETYPE";
        default: FormatString("WPD_FORMAT_ATTRIBUTES_V1.%d", pid);
    }
}

Table WPD_METHOD_ATTRIBUTES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_METHOD_ATTRIBUTE_NAME";
        case 3: "WPD_METHOD_ATTRIBUTE_ASSOCIATED_FORMAT";
        case 4: "WPD_METHOD_ATTRIBUTE_ACCESS";
        case 5: "WPD_METHOD_ATTRIBUTE_PARAMETERS";
        default: FormatString("WPD_METHOD_ATTRIBUTES_V1.%d", pid);
    }
}

Table WPD_PARAMETER_ATTRIBUTES_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_PARAMETER_ATTRIBUTE_ORDER";
        case 3: "WPD_PARAMETER_ATTRIBUTE_USAGE";
        case 4: "WPD_PARAMETER_ATTRIBUTE_FORM";
        case 5: "WPD_PARAMETER_ATTRIBUTE_DEFAULT_VALUE";
        case 6: "WPD_PARAMETER_ATTRIBUTE_RANGE_MIN";
        case 7: "WPD_PARAMETER_ATTRIBUTE_RANGE_MAX";
        case 8: "WPD_PARAMETER_ATTRIBUTE_RANGE_STEP";
        case 9: "WPD_PARAMETER_ATTRIBUTE_ENUMERATION_ELEMENTS";
        case 10: "WPD_PARAMETER_ATTRIBUTE_REGULAR_EXPRESSION";
        case 11: "WPD_PARAMETER_ATTRIBUTE_MAX_SIZE";
        case 12: "WPD_PARAMETER_ATTRIBUTE_VARTYPE";
        case 13: "WPD_PARAMETER_ATTRIBUTE_NAME";
        default: FormatString("WPD_PARAMETER_ATTRIBUTES_V1.%d", pid);
    }
}

Table WPD_CATEGORY_COMMON_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_COMMON_RESET_DEVICE";
        case 3: "WPD_COMMAND_COMMON_GET_OBJECT_IDS_FROM_PERSISTENT_UNIQUE_IDS";
        case 4: "WPD_COMMAND_COMMON_SAVE_CLIENT_INFORMATION";
        case 1001: "WPD_PROPERTY_COMMON_COMMAND_CATEGORY";
        case 1002: "WPD_PROPERTY_COMMON_COMMAND_ID";
        case 1003: "WPD_PROPERTY_COMMON_HRESULT";
        case 1004: "WPD_PROPERTY_COMMON_DRIVER_ERROR_CODE";
        case 1006: "WPD_PROPERTY_COMMON_COMMAND_TARGET";
        case 1007: "WPD_PROPERTY_COMMON_PERSISTENT_UNIQUE_IDS";
        case 1008: "WPD_PROPERTY_COMMON_OBJECT_IDS";
        case 1009: "WPD_PROPERTY_COMMON_CLIENT_INFORMATION";
        case 1010: "WPD_PROPERTY_COMMON_CLIENT_INFORMATION_CONTEXT";
        case 1011: "WPD_PROPERTY_COMMON_ACTIVITY_ID";
        default: FormatString("WPD_CATEGORY_COMMON.%d", pid);
    }
}

Table WPD_CATEGORY_OBJECT_ENUMERATION_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_OBJECT_ENUMERATION_START_FIND";
        case 3: "WPD_COMMAND_OBJECT_ENUMERATION_FIND_NEXT";
        case 4: "WPD_COMMAND_OBJECT_ENUMERATION_END_FIND";
        case 1001: "WPD_PROPERTY_OBJECT_ENUMERATION_PARENT_ID";
        case 1002: "WPD_PROPERTY_OBJECT_ENUMERATION_FILTER";
        case 1003: "WPD_PROPERTY_OBJECT_ENUMERATION_OBJECT_IDS";
        case 1004: "WPD_PROPERTY_OBJECT_ENUMERATION_CONTEXT";
        case 1005: "WPD_PROPERTY_OBJECT_ENUMERATION_NUM_OBJECTS_REQUESTED";
        default: FormatString("WPD_CATEGORY_OBJECT_ENUMERATION.%d", pid);
    }
}

Table WPD_CATEGORY_OBJECT_PROPERTIES_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_OBJECT_PROPERTIES_GET_SUPPORTED";
        case 3: "WPD_COMMAND_OBJECT_PROPERTIES_GET_ATTRIBUTES";
        case 4: "WPD_COMMAND_OBJECT_PROPERTIES_GET";
        case 5: "WPD_COMMAND_OBJECT_PROPERTIES_SET";
        case 6: "WPD_COMMAND_OBJECT_PROPERTIES_GET_ALL";
        case 7: "WPD_COMMAND_OBJECT_PROPERTIES_DELETE";
        case 1001: "WPD_PROPERTY_OBJECT_PROPERTIES_OBJECT_ID";
        case 1002: "WPD_PROPERTY_OBJECT_PROPERTIES_PROPERTY_KEYS";
        case 1003: "WPD_PROPERTY_OBJECT_PROPERTIES_PROPERTY_ATTRIBUTES";
        case 1004: "WPD_PROPERTY_OBJECT_PROPERTIES_PROPERTY_VALUES";
        case 1005: "WPD_PROPERTY_OBJECT_PROPERTIES_PROPERTY_WRITE_RESULTS";
        case 1006: "WPD_PROPERTY_OBJECT_PROPERTIES_PROPERTY_DELETE_RESULTS";
        default: FormatString("WPD_CATEGORY_OBJECT_PROPERTIES.%d", pid);
    }
}

Table WPD_CATEGORY_OBJECT_PROPERTIES_BULK_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_GET_VALUES_BY_OBJECT_LIST_START";
        case 3: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_GET_VALUES_BY_OBJECT_LIST_NEXT";
        case 4: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_GET_VALUES_BY_OBJECT_LIST_END";
        case 5: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_GET_VALUES_BY_OBJECT_FORMAT_START";
        case 6: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_GET_VALUES_BY_OBJECT_FORMAT_NEXT";
        case 7: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_GET_VALUES_BY_OBJECT_FORMAT_END";
        case 8: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_SET_VALUES_BY_OBJECT_LIST_START";
        case 9: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_SET_VALUES_BY_OBJECT_LIST_NEXT";
        case 10: "WPD_COMMAND_OBJECT_PROPERTIES_BULK_SET_VALUES_BY_OBJECT_LIST_END";
        case 1001: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_OBJECT_IDS";
        case 1002: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_CONTEXT";
        case 1003: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_VALUES";
        case 1004: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_PROPERTY_KEYS";
        case 1005: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_DEPTH";
        case 1006: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_PARENT_OBJECT_ID";
        case 1007: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_OBJECT_FORMAT";
        case 1008: "WPD_PROPERTY_OBJECT_PROPERTIES_BULK_WRITE_RESULTS";
        default: FormatString("WPD_CATEGORY_OBJECT_PROPERTIES_BULK.%d", pid);
    }
}

Table WPD_CATEGORY_OBJECT_RESOURCES_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_OBJECT_RESOURCES_GET_SUPPORTED";
        case 3: "WPD_COMMAND_OBJECT_RESOURCES_GET_ATTRIBUTES";
        case 4: "WPD_COMMAND_OBJECT_RESOURCES_OPEN";
        case 5: "WPD_COMMAND_OBJECT_RESOURCES_READ";
        case 6: "WPD_COMMAND_OBJECT_RESOURCES_WRITE";
        case 7: "WPD_COMMAND_OBJECT_RESOURCES_CLOSE";
        case 8: "WPD_COMMAND_OBJECT_RESOURCES_DELETE";
        case 9: "WPD_COMMAND_OBJECT_RESOURCES_CREATE_RESOURCE";
        case 10: "WPD_COMMAND_OBJECT_RESOURCES_REVERT";
        case 11: "WPD_COMMAND_OBJECT_RESOURCES_SEEK";
        case 12: "WPD_COMMAND_OBJECT_RESOURCES_COMMIT";
        case 13: "WPD_COMMAND_OBJECT_RESOURCES_SEEK_IN_UNITS";
        case 1001: "WPD_PROPERTY_OBJECT_RESOURCES_OBJECT_ID";
        case 1002: "WPD_PROPERTY_OBJECT_RESOURCES_ACCESS_MODE";
        case 1003: "WPD_PROPERTY_OBJECT_RESOURCES_RESOURCE_KEYS";
        case 1004: "WPD_PROPERTY_OBJECT_RESOURCES_RESOURCE_ATTRIBUTES";
        case 1005: "WPD_PROPERTY_OBJECT_RESOURCES_CONTEXT";
        case 1006: "WPD_PROPERTY_OBJECT_RESOURCES_NUM_BYTES_TO_READ";
        case 1007: "WPD_PROPERTY_OBJECT_RESOURCES_NUM_BYTES_READ";
        case 1008: "WPD_PROPERTY_OBJECT_RESOURCES_NUM_BYTES_TO_WRITE";
        case 1009: "WPD_PROPERTY_OBJECT_RESOURCES_NUM_BYTES_WRITTEN";
        case 1010: "WPD_PROPERTY_OBJECT_RESOURCES_DATA";
        case 1011: "WPD_PROPERTY_OBJECT_RESOURCES_OPTIMAL_TRANSFER_BUFFER_SIZE";
        case 1012: "WPD_PROPERTY_OBJECT_RESOURCES_SEEK_OFFSET";
        case 1013: "WPD_PROPERTY_OBJECT_RESOURCES_SEEK_ORIGIN_FLAG";
        case 1014: "WPD_PROPERTY_OBJECT_RESOURCES_POSITION_FROM_START";
        case 1015: "WPD_PROPERTY_OBJECT_RESOURCES_SUPPORTS_UNITS";
        case 1016: "WPD_PROPERTY_OBJECT_RESOURCES_STREAM_UNITS";
        default: FormatString("WPD_CATEGORY_OBJECT_RESOURCES.%d", pid);
    }
}

Table WPD_CATEGORY_OBJECT_MANAGEMENT_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_OBJECT_MANAGEMENT_CREATE_OBJECT_WITH_PROPERTIES_ONLY";
        case 3: "WPD_COMMAND_OBJECT_MANAGEMENT_CREATE_OBJECT_WITH_PROPERTIES_AND_DATA";
        case 4: "WPD_COMMAND_OBJECT_MANAGEMENT_WRITE_OBJECT_DATA";
        case 5: "WPD_COMMAND_OBJECT_MANAGEMENT_COMMIT_OBJECT";
        case 6: "WPD_COMMAND_OBJECT_MANAGEMENT_REVERT_OBJECT";
        case 7: "WPD_COMMAND_OBJECT_MANAGEMENT_DELETE_OBJECTS";
        case 8: "WPD_COMMAND_OBJECT_MANAGEMENT_MOVE_OBJECTS";
        case 9: "WPD_COMMAND_OBJECT_MANAGEMENT_COPY_OBJECTS";
        case 10: "WPD_COMMAND_OBJECT_MANAGEMENT_UPDATE_OBJECT_WITH_PROPERTIES_AND_DATA";
        case 1001: "WPD_PROPERTY_OBJECT_MANAGEMENT_CREATION_PROPERTIES";
        case 1002: "WPD_PROPERTY_OBJECT_MANAGEMENT_CONTEXT";
        case 1003: "WPD_PROPERTY_OBJECT_MANAGEMENT_NUM_BYTES_TO_WRITE";
        case 1004: "WPD_PROPERTY_OBJECT_MANAGEMENT_NUM_BYTES_WRITTEN";
        case 1005: "WPD_PROPERTY_OBJECT_MANAGEMENT_DATA";
        case 1006: "WPD_PROPERTY_OBJECT_MANAGEMENT_OBJECT_ID";
        case 1007: "WPD_PROPERTY_OBJECT_MANAGEMENT_DELETE_OPTIONS";
        case 1008: "WPD_PROPERTY_OBJECT_MANAGEMENT_OPTIMAL_TRANSFER_BUFFER_SIZE";
        case 1009: "WPD_PROPERTY_OBJECT_MANAGEMENT_OBJECT_IDS";
        case 1010: "WPD_PROPERTY_OBJECT_MANAGEMENT_DELETE_RESULTS";
        case 1011: "WPD_PROPERTY_OBJECT_MANAGEMENT_DESTINATION_FOLDER_OBJECT_ID";
        case 1012: "WPD_PROPERTY_OBJECT_MANAGEMENT_MOVE_RESULTS";
        case 1013: "WPD_PROPERTY_OBJECT_MANAGEMENT_COPY_RESULTS";
        case 1014: "WPD_PROPERTY_OBJECT_MANAGEMENT_UPDATE_PROPERTIES";
        case 1015: "WPD_PROPERTY_OBJECT_MANAGEMENT_PROPERTY_KEYS";
        case 1016: "WPD_PROPERTY_OBJECT_MANAGEMENT_OBJECT_FORMAT";
        default: FormatString("WPD_CATEGORY_OBJECT_MANAGEMENT.%d", pid);
    }
}

Table WPD_CATEGORY_CAPABILITIES_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_COMMANDS";
        case 3: "WPD_COMMAND_CAPABILITIES_GET_COMMAND_OPTIONS";
        case 4: "WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_FUNCTIONAL_CATEGORIES";
        case 5: "WPD_COMMAND_CAPABILITIES_GET_FUNCTIONAL_OBJECTS";
        case 6: "WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_CONTENT_TYPES";
        case 7: "WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_FORMATS";
        case 8: "WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_FORMAT_PROPERTIES";
        case 9: "WPD_COMMAND_CAPABILITIES_GET_FIXED_PROPERTY_ATTRIBUTES";
        case 10: "WPD_COMMAND_CAPABILITIES_GET_SUPPORTED_EVENTS";
        case 11: "WPD_COMMAND_CAPABILITIES_GET_EVENT_OPTIONS";
        case 1001: "WPD_PROPERTY_CAPABILITIES_SUPPORTED_COMMANDS";
        case 1002: "WPD_PROPERTY_CAPABILITIES_COMMAND";
        case 1003: "WPD_PROPERTY_CAPABILITIES_COMMAND_OPTIONS";
        case 1004: "WPD_PROPERTY_CAPABILITIES_FUNCTIONAL_CATEGORIES";
        case 1005: "WPD_PROPERTY_CAPABILITIES_FUNCTIONAL_CATEGORY";
        case 1006: "WPD_PROPERTY_CAPABILITIES_FUNCTIONAL_OBJECTS";
        case 1007: "WPD_PROPERTY_CAPABILITIES_CONTENT_TYPES";
        case 1008: "WPD_PROPERTY_CAPABILITIES_CONTENT_TYPE";
        case 1009: "WPD_PROPERTY_CAPABILITIES_FORMATS";
        case 1010: "WPD_PROPERTY_CAPABILITIES_FORMAT";
        case 1011: "WPD_PROPERTY_CAPABILITIES_PROPERTY_KEYS";
        case 1012: "WPD_PROPERTY_CAPABILITIES_PROPERTY_ATTRIBUTES";
        case 1013: "WPD_PROPERTY_CAPABILITIES_SUPPORTED_EVENTS";
        case 1014: "WPD_PROPERTY_CAPABILITIES_EVENT";
        case 1015: "WPD_PROPERTY_CAPABILITIES_EVENT_OPTIONS";
        default: FormatString("WPD_CATEGORY_CAPABILITIES.%d", pid);
    }
}

Table WPD_CATEGORY_STORAGE_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_STORAGE_FORMAT";
        case 4: "WPD_COMMAND_STORAGE_EJECT";
        case 1001: "WPD_PROPERTY_STORAGE_OBJECT_ID";
        case 1002: "WPD_PROPERTY_STORAGE_DESTINATION_OBJECT_ID";
        default: FormatString("WPD_CATEGORY_STORAGE.%d", pid);
    }
}

Table WPD_CATEGORY_SMS_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_SMS_SEND";
        case 1001: "WPD_PROPERTY_SMS_RECIPIENT";
        case 1002: "WPD_PROPERTY_SMS_MESSAGE_TYPE";
        case 1003: "WPD_PROPERTY_SMS_TEXT_MESSAGE";
        case 1004: "WPD_PROPERTY_SMS_BINARY_MESSAGE";
        default: FormatString("WPD_CATEGORY_SMS.%d", pid);
    }
}

Table WPD_CATEGORY_STILL_IMAGE_CAPTURE_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_STILL_IMAGE_CAPTURE_INITIATE";
        default: FormatString("WPD_CATEGORY_STILL_IMAGE_CAPTURE.%d", pid);
    }
}

Table WPD_CATEGORY_MEDIA_CAPTURE_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_MEDIA_CAPTURE_START";
        case 3: "WPD_COMMAND_MEDIA_CAPTURE_STOP";
        case 4: "WPD_COMMAND_MEDIA_CAPTURE_PAUSE";
        default: FormatString("WPD_CATEGORY_MEDIA_CAPTURE.%d", pid);
    }
}

Table WPD_CATEGORY_DEVICE_HINTS_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_DEVICE_HINTS_GET_CONTENT_LOCATION";
        case 1001: "WPD_PROPERTY_DEVICE_HINTS_CONTENT_TYPE";
        case 1002: "WPD_PROPERTY_DEVICE_HINTS_CONTENT_LOCATIONS";
        default: FormatString("WPD_CATEGORY_DEVICE_HINTS.%d", pid);
    }
}

Table WPD_CLASS_EXTENSION_V1_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_CLASS_EXTENSION_WRITE_DEVICE_INFORMATION";
        case 1001: "WPD_PROPERTY_CLASS_EXTENSION_DEVICE_INFORMATION_VALUES";
        case 1002: "WPD_PROPERTY_CLASS_EXTENSION_DEVICE_INFORMATION_WRITE_RESULTS";
        default: FormatString("WPD_CLASS_EXTENSION_V1.%d", pid);
    }
}

Table WPD_CLASS_EXTENSION_V2_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_CLASS_EXTENSION_REGISTER_SERVICE_INTERFACES";
        case 3: "WPD_COMMAND_CLASS_EXTENSION_UNREGISTER_SERVICE_INTERFACES";
        case 1001: "WPD_PROPERTY_CLASS_EXTENSION_SERVICE_OBJECT_ID";
        case 1002: "WPD_PROPERTY_CLASS_EXTENSION_SERVICE_INTERFACES";
        case 1003: "WPD_PROPERTY_CLASS_EXTENSION_SERVICE_REGISTRATION_RESULTS";
        default: FormatString("WPD_CLASS_EXTENSION_V2.%d", pid);
    }
}

Table WPD_CATEGORY_NETWORK_CONFIGURATION_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_GENERATE_KEYPAIR";
        case 3: "WPD_COMMAND_COMMIT_KEYPAIR";
        case 4: "WPD_COMMAND_PROCESS_WIRELESS_PROFILE";
        case 1001: "WPD_PROPERTY_PUBLIC_KEY";
        default: FormatString("WPD_CATEGORY_NETWORK_CONFIGURATION.%d", pid);
    }
}

Table WPD_CATEGORY_SERVICE_COMMON_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_SERVICE_COMMON_GET_SERVICE_OBJECT_ID";
        case 1001: "WPD_PROPERTY_SERVICE_OBJECT_ID";
        default: FormatString("WPD_CATEGORY_SERVICE_COMMON.%d", pid);
    }
}

Table WPD_CATEGORY_SERVICE_CAPABILITIES_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_SUPPORTED_METHODS";
        case 3: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_SUPPORTED_METHODS_BY_FORMAT";
        case 4: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_METHOD_ATTRIBUTES";
        case 5: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_METHOD_PARAMETER_ATTRIBUTES";
        case 6: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_SUPPORTED_FORMATS";
        case 7: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_FORMAT_ATTRIBUTES";
        case 8: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_SUPPORTED_FORMAT_PROPERTIES";
        case 9: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_FORMAT_PROPERTY_ATTRIBUTES";
        case 10: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_SUPPORTED_EVENTS";
        case 11: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_EVENT_ATTRIBUTES";
        case 12: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_EVENT_PARAMETER_ATTRIBUTES";
        case 13: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_INHERITED_SERVICES";
        case 14: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_FORMAT_RENDERING_PROFILES";
        case 15: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_SUPPORTED_COMMANDS";
        case 16: "WPD_COMMAND_SERVICE_CAPABILITIES_GET_COMMAND_OPTIONS";
        case 1001: "WPD_PROPERTY_SERVICE_CAPABILITIES_SUPPORTED_METHODS";
        case 1002: "WPD_PROPERTY_SERVICE_CAPABILITIES_FORMAT";
        case 1003: "WPD_PROPERTY_SERVICE_CAPABILITIES_METHOD";
        case 1004: "WPD_PROPERTY_SERVICE_CAPABILITIES_METHOD_ATTRIBUTES";
        case 1005: "WPD_PROPERTY_SERVICE_CAPABILITIES_PARAMETER";
        case 1006: "WPD_PROPERTY_SERVICE_CAPABILITIES_PARAMETER_ATTRIBUTES";
        case 1007: "WPD_PROPERTY_SERVICE_CAPABILITIES_FORMATS";
        case 1008: "WPD_PROPERTY_SERVICE_CAPABILITIES_FORMAT_ATTRIBUTES";
        case 1009: "WPD_PROPERTY_SERVICE_CAPABILITIES_PROPERTY_KEYS";
        case 1010: "WPD_PROPERTY_SERVICE_CAPABILITIES_PROPERTY_ATTRIBUTES";
        case 1011: "WPD_PROPERTY_SERVICE_CAPABILITIES_SUPPORTED_EVENTS";
        case 1012: "WPD_PROPERTY_SERVICE_CAPABILITIES_EVENT";
        case 1013: "WPD_PROPERTY_SERVICE_CAPABILITIES_EVENT_ATTRIBUTES";
        case 1014: "WPD_PROPERTY_SERVICE_CAPABILITIES_INHERITANCE_TYPE";
        case 1015: "WPD_PROPERTY_SERVICE_CAPABILITIES_INHERITED_SERVICES";
        case 1016: "WPD_PROPERTY_SERVICE_CAPABILITIES_RENDERING_PROFILES";
        case 1017: "WPD_PROPERTY_SERVICE_CAPABILITIES_SUPPORTED_COMMANDS";
        case 1018: "WPD_PROPERTY_SERVICE_CAPABILITIES_COMMAND";
        case 1019: "WPD_PROPERTY_SERVICE_CAPABILITIES_COMMAND_OPTIONS";
        default: FormatString("WPD_CATEGORY_SERVICE_CAPABILITIES.%d", pid);
    }
}

Table WPD_CATEGORY_SERVICE_METHODS_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "WPD_COMMAND_SERVICE_METHODS_START_INVOKE";
        case 3: "WPD_COMMAND_SERVICE_METHODS_CANCEL_INVOKE";
        case 4: "WPD_COMMAND_SERVICE_METHODS_END_INVOKE";
        case 1001: "WPD_PROPERTY_SERVICE_METHOD";
        case 1002: "WPD_PROPERTY_SERVICE_METHOD_PARAMETER_VALUES";
        case 1003: "WPD_PROPERTY_SERVICE_METHOD_RESULT_VALUES";
        case 1004: "WPD_PROPERTY_SERVICE_METHOD_CONTEXT";
        case 1005: "WPD_PROPERTY_SERVICE_METHOD_HRESULT";
        default: FormatString("WPD_CATEGORY_SERVICE_METHODS.%d", pid);
    }
}

/// Displays WPD GUIDs.
Table WPDGuidTable(guid)
{
    switch(guid)
    {
        case WPD_CATEGORY_NULL: "WPD_CATEGORY_NULL";
        case WPD_OBJECT_PROPERTIES_V1: "WPD_OBJECT_PROPERTIES_V1";
        case WPD_OBJECT_PROPERTIES_V2: "WPD_OBJECT_PROPERTIES_V2";
        case WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1: "WPD_FUNCTIONAL_OBJECT_PROPERTIES_V1";
        case WPD_FOLDER_OBJECT_PROPERTIES_V1: "WPD_FOLDER_OBJECT_PROPERTIES_V1";
        case WPD_IMAGE_OBJECT_PROPERTIES_V1: "WPD_IMAGE_OBJECT_PROPERTIES_V1";
        case WPD_MEDIA_PROPERTIES_V1: "WPD_MEDIA_PROPERTIES_V1";
        case WPD_CONTACT_OBJECT_PROPERTIES_V1: "WPD_CONTACT_OBJECT_PROPERTIES_V1";
        case WPD_MUSIC_OBJECT_PROPERTIES_V1: "WPD_MUSIC_OBJECT_PROPERTIES_V1";
        case WPD_VIDEO_OBJECT_PROPERTIES_V1: "WPD_VIDEO_OBJECT_PROPERTIES_V1";
        case WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1: "WPD_COMMON_INFORMATION_OBJECT_PROPERTIES_V1";
        case WPD_EMAIL_OBJECT_PROPERTIES_V1: "WPD_EMAIL_OBJECT_PROPERTIES_V1";
        case WPD_APPOINTMENT_OBJECT_PROPERTIES_V1: "WPD_APPOINTMENT_OBJECT_PROPERTIES_V1";
        case WPD_TASK_OBJECT_PROPERTIES_V1: "WPD_TASK_OBJECT_PROPERTIES_V1";
        case WPD_STORAGE_OBJECT_PROPERTIES_V1: "WPD_STORAGE_OBJECT_PROPERTIES_V1";
        case WPD_NETWORK_ASSOCIATION_PROPERTIES_V1: "WPD_NETWORK_ASSOCIATION_PROPERTIES_V1";
        case WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1: "WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1";
        case WPD_SMS_OBJECT_PROPERTIES_V1: "WPD_SMS_OBJECT_PROPERTIES_V1";
        case WPD_SECTION_OBJECT_PROPERTIES_V1: "WPD_SECTION_OBJECT_PROPERTIES_V1";
        case WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1: "WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1";
        case WPD_CLIENT_INFORMATION_PROPERTIES_V1: "WPD_CLIENT_INFORMATION_PROPERTIES_V1";
        case WPD_PROPERTY_ATTRIBUTES_V1: "WPD_PROPERTY_ATTRIBUTES_V1";
        case WPD_PROPERTY_ATTRIBUTES_V2: "WPD_PROPERTY_ATTRIBUTES_V2";
        case WPD_CLASS_EXTENSION_OPTIONS_V1: "WPD_CLASS_EXTENSION_OPTIONS_V1";
        case WPD_CLASS_EXTENSION_OPTIONS_V2: "WPD_CLASS_EXTENSION_OPTIONS_V2";
        case WPD_CLASS_EXTENSION_OPTIONS_V3: "WPD_CLASS_EXTENSION_OPTIONS_V3";
        case WPD_RESOURCE_ATTRIBUTES_V1: "WPD_RESOURCE_ATTRIBUTES_V1";
        case WPD_DEVICE_PROPERTIES_V1: "WPD_DEVICE_PROPERTIES_V1";
        case WPD_DEVICE_PROPERTIES_V2: "WPD_DEVICE_PROPERTIES_V2";
        case WPD_DEVICE_PROPERTIES_V3: "WPD_DEVICE_PROPERTIES_V3";
        case WPD_SERVICE_PROPERTIES_V1: "WPD_SERVICE_PROPERTIES_V1";
        case WPD_EVENT_PROPERTIES_V1: "WPD_EVENT_PROPERTIES_V1";
        case WPD_EVENT_PROPERTIES_V2: "WPD_EVENT_PROPERTIES_V2";
        case WPD_EVENT_OPTIONS_V1: "WPD_EVENT_OPTIONS_V1";
        case WPD_EVENT_ATTRIBUTES_V1: "WPD_EVENT_ATTRIBUTES_V1";
        case WPD_API_OPTIONS_V1: "WPD_API_OPTIONS_V1";
        case WPD_FORMAT_ATTRIBUTES_V1: "WPD_FORMAT_ATTRIBUTES_V1";
        case WPD_METHOD_ATTRIBUTES_V1: "WPD_METHOD_ATTRIBUTES_V1";
        case WPD_PARAMETER_ATTRIBUTES_V1: "WPD_PARAMETER_ATTRIBUTES_V1";
        case WPD_CATEGORY_COMMON: "WPD_CATEGORY_COMMON";
        case WPD_CATEGORY_OBJECT_ENUMERATION: "WPD_CATEGORY_OBJECT_ENUMERATION";
        case WPD_CATEGORY_OBJECT_PROPERTIES: "WPD_CATEGORY_OBJECT_PROPERTIES";
        case WPD_CATEGORY_OBJECT_PROPERTIES_BULK: "WPD_CATEGORY_OBJECT_PROPERTIES_BULK";
        case WPD_CATEGORY_OBJECT_RESOURCES: "WPD_CATEGORY_OBJECT_RESOURCES";
        case WPD_CATEGORY_OBJECT_MANAGEMENT: "WPD_CATEGORY_OBJECT_MANAGEMENT";
        case WPD_CATEGORY_CAPABILITIES: "WPD_CATEGORY_CAPABILITIES";
        case WPD_CATEGORY_STORAGE: "WPD_CATEGORY_STORAGE";
        case WPD_CATEGORY_SMS: "WPD_CATEGORY_SMS";
        case WPD_CATEGORY_STILL_IMAGE_CAPTURE: "WPD_CATEGORY_STILL_IMAGE_CAPTURE";
        case WPD_CATEGORY_MEDIA_CAPTURE: "WPD_CATEGORY_MEDIA_CAPTURE";
        case WPD_CATEGORY_DEVICE_HINTS: "WPD_CATEGORY_DEVICE_HINTS";
        case WPD_CLASS_EXTENSION_V1: "WPD_CLASS_EXTENSION_V1";
        case WPD_CLASS_EXTENSION_V2: "WPD_CLASS_EXTENSION_V2";
        case WPD_CATEGORY_NETWORK_CONFIGURATION: "WPD_CATEGORY_NETWORK_CONFIGURATION";
        case WPD_CATEGORY_SERVICE_COMMON: "WPD_CATEGORY_SERVICE_COMMON";
        case WPD_CATEGORY_SERVICE_CAPABILITIES: "WPD_CATEGORY_SERVICE_CAPABILITIES";
        case WPD_CATEGORY_SERVICE_METHODS: "WPD_CATEGORY_SERVICE_METHODS";
        case WPD_EVENT_NOTIFICATION: "WPD_EVENT_NOTIFICATION";
        case WPD_EVENT_OBJECT_ADDED: "WPD_EVENT_OBJECT_ADDED";
        case WPD_EVENT_OBJECT_REMOVED: "WPD_EVENT_OBJECT_REMOVED";
        case WPD_EVENT_OBJECT_UPDATED: "WPD_EVENT_OBJECT_UPDATED";
        case WPD_EVENT_DEVICE_RESET: "WPD_EVENT_DEVICE_RESET";
        case WPD_EVENT_DEVICE_CAPABILITIES_UPDATED: "WPD_EVENT_DEVICE_CAPABILITIES_UPDATED";
        case WPD_EVENT_STORAGE_FORMAT: "WPD_EVENT_STORAGE_FORMAT";
        case WPD_EVENT_OBJECT_TRANSFER_REQUESTED: "WPD_EVENT_OBJECT_TRANSFER_REQUESTED";
        case WPD_EVENT_DEVICE_REMOVED: "WPD_EVENT_DEVICE_REMOVED";
        case WPD_EVENT_SERVICE_METHOD_COMPLETE: "WPD_EVENT_SERVICE_METHOD_COMPLETE";
        case WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT: "WPD_CONTENT_TYPE_FUNCTIONAL_OBJECT";
        case WPD_CONTENT_TYPE_FOLDER: "WPD_CONTENT_TYPE_FOLDER";
        case WPD_CONTENT_TYPE_IMAGE: "WPD_CONTENT_TYPE_IMAGE";
        case WPD_CONTENT_TYPE_DOCUMENT: "WPD_CONTENT_TYPE_DOCUMENT";
        case WPD_CONTENT_TYPE_CONTACT: "WPD_CONTENT_TYPE_CONTACT";
        case WPD_CONTENT_TYPE_CONTACT_GROUP: "WPD_CONTENT_TYPE_CONTACT_GROUP";
        case WPD_CONTENT_TYPE_AUDIO: "WPD_CONTENT_TYPE_AUDIO";
        case WPD_CONTENT_TYPE_VIDEO: "WPD_CONTENT_TYPE_VIDEO";
        case WPD_CONTENT_TYPE_TELEVISION: "WPD_CONTENT_TYPE_TELEVISION";
        case WPD_CONTENT_TYPE_PLAYLIST: "WPD_CONTENT_TYPE_PLAYLIST";
        case WPD_CONTENT_TYPE_MIXED_CONTENT_ALBUM: "WPD_CONTENT_TYPE_MIXED_CONTENT_ALBUM";
        case WPD_CONTENT_TYPE_AUDIO_ALBUM: "WPD_CONTENT_TYPE_AUDIO_ALBUM";
        case WPD_CONTENT_TYPE_IMAGE_ALBUM: "WPD_CONTENT_TYPE_IMAGE_ALBUM";
        case WPD_CONTENT_TYPE_VIDEO_ALBUM: "WPD_CONTENT_TYPE_VIDEO_ALBUM";
        case WPD_CONTENT_TYPE_MEMO: "WPD_CONTENT_TYPE_MEMO";
        case WPD_CONTENT_TYPE_EMAIL: "WPD_CONTENT_TYPE_EMAIL";
        case WPD_CONTENT_TYPE_APPOINTMENT: "WPD_CONTENT_TYPE_APPOINTMENT";
        case WPD_CONTENT_TYPE_TASK: "WPD_CONTENT_TYPE_TASK";
        case WPD_CONTENT_TYPE_PROGRAM: "WPD_CONTENT_TYPE_PROGRAM";
        case WPD_CONTENT_TYPE_GENERIC_FILE: "WPD_CONTENT_TYPE_GENERIC_FILE";
        case WPD_CONTENT_TYPE_CALENDAR: "WPD_CONTENT_TYPE_CALENDAR";
        case WPD_CONTENT_TYPE_GENERIC_MESSAGE: "WPD_CONTENT_TYPE_GENERIC_MESSAGE";
        case WPD_CONTENT_TYPE_NETWORK_ASSOCIATION: "WPD_CONTENT_TYPE_NETWORK_ASSOCIATION";
        case WPD_CONTENT_TYPE_CERTIFICATE: "WPD_CONTENT_TYPE_CERTIFICATE";
        case WPD_CONTENT_TYPE_WIRELESS_PROFILE: "WPD_CONTENT_TYPE_WIRELESS_PROFILE";
        case WPD_CONTENT_TYPE_MEDIA_CAST: "WPD_CONTENT_TYPE_MEDIA_CAST";
        case WPD_CONTENT_TYPE_SECTION: "WPD_CONTENT_TYPE_SECTION";
        case WPD_CONTENT_TYPE_UNSPECIFIED: "WPD_CONTENT_TYPE_UNSPECIFIED";
        case WPD_CONTENT_TYPE_ALL: "WPD_CONTENT_TYPE_ALL";
        case WPD_FUNCTIONAL_CATEGORY_DEVICE: "WPD_FUNCTIONAL_CATEGORY_DEVICE";
        case WPD_FUNCTIONAL_CATEGORY_STORAGE: "WPD_FUNCTIONAL_CATEGORY_STORAGE";
        case WPD_FUNCTIONAL_CATEGORY_STILL_IMAGE_CAPTURE: "WPD_FUNCTIONAL_CATEGORY_STILL_IMAGE_CAPTURE";
        case WPD_FUNCTIONAL_CATEGORY_AUDIO_CAPTURE: "WPD_FUNCTIONAL_CATEGORY_AUDIO_CAPTURE";
        case WPD_FUNCTIONAL_CATEGORY_VIDEO_CAPTURE: "WPD_FUNCTIONAL_CATEGORY_VIDEO_CAPTURE";
        case WPD_FUNCTIONAL_CATEGORY_SMS: "WPD_FUNCTIONAL_CATEGORY_SMS";
        case WPD_FUNCTIONAL_CATEGORY_RENDERING_INFORMATION: "WPD_FUNCTIONAL_CATEGORY_RENDERING_INFORMATION";
        case WPD_FUNCTIONAL_CATEGORY_NETWORK_CONFIGURATION: "WPD_FUNCTIONAL_CATEGORY_NETWORK_CONFIGURATION";
        case WPD_FUNCTIONAL_CATEGORY_ALL: "WPD_FUNCTIONAL_CATEGORY_ALL";
        case GUID_DEVINTERFACE_WPD: "GUID_DEVINTERFACE_WPD";
        case GUID_DEVINTERFACE_WPD_PRIVATE: "GUID_DEVINTERFACE_WPD_PRIVATE";
        case GUID_DEVINTERFACE_WPD_SERVICE: "GUID_DEVINTERFACE_WPD_SERVICE";
        case WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS: "WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS";
        case WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS: "WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS";
        case WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS: "WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS";
        case WPD_CATEGORY_MTP_EXT_EVENT_PARAMS: "WPD_CATEGORY_MTP_EXT_EVENT_PARAMS";
        case WPD_OBJECT_FORMAT_PROPERTIES_ONLY: "WPD_OBJECT_FORMAT_PROPERTIES_ONLY";
        case WPD_OBJECT_FORMAT_UNSPECIFIED: "WPD_OBJECT_FORMAT_UNSPECIFIED";
        case WPD_OBJECT_FORMAT_SCRIPT: "WPD_OBJECT_FORMAT_SCRIPT";
        case WPD_OBJECT_FORMAT_EXECUTABLE: "WPD_OBJECT_FORMAT_EXECUTABLE";
        case WPD_OBJECT_FORMAT_TEXT: "WPD_OBJECT_FORMAT_TEXT";
        case WPD_OBJECT_FORMAT_HTML: "WPD_OBJECT_FORMAT_HTML";
        case WPD_OBJECT_FORMAT_DPOF: "WPD_OBJECT_FORMAT_DPOF";
        case WPD_OBJECT_FORMAT_AIFF: "WPD_OBJECT_FORMAT_AIFF";
        case WPD_OBJECT_FORMAT_WAVE: "WPD_OBJECT_FORMAT_WAVE";
        case WPD_OBJECT_FORMAT_MP3: "WPD_OBJECT_FORMAT_MP3";
        case WPD_OBJECT_FORMAT_AVI: "WPD_OBJECT_FORMAT_AVI";
        case WPD_OBJECT_FORMAT_MPEG: "WPD_OBJECT_FORMAT_MPEG";
        case WPD_OBJECT_FORMAT_ASF: "WPD_OBJECT_FORMAT_ASF";
        case WPD_OBJECT_FORMAT_EXIF: "WPD_OBJECT_FORMAT_EXIF";
        case WPD_OBJECT_FORMAT_TIFFEP: "WPD_OBJECT_FORMAT_TIFFEP";
        case WPD_OBJECT_FORMAT_FLASHPIX: "WPD_OBJECT_FORMAT_FLASHPIX";
        case WPD_OBJECT_FORMAT_BMP: "WPD_OBJECT_FORMAT_BMP";
        case WPD_OBJECT_FORMAT_CIFF: "WPD_OBJECT_FORMAT_CIFF";
        case WPD_OBJECT_FORMAT_GIF: "WPD_OBJECT_FORMAT_GIF";
        case WPD_OBJECT_FORMAT_JFIF: "WPD_OBJECT_FORMAT_JFIF";
        case WPD_OBJECT_FORMAT_PCD: "WPD_OBJECT_FORMAT_PCD";
        case WPD_OBJECT_FORMAT_PICT: "WPD_OBJECT_FORMAT_PICT";
        case WPD_OBJECT_FORMAT_PNG: "WPD_OBJECT_FORMAT_PNG";
        case WPD_OBJECT_FORMAT_TIFF: "WPD_OBJECT_FORMAT_TIFF";
        case WPD_OBJECT_FORMAT_TIFFIT: "WPD_OBJECT_FORMAT_TIFFIT";
        case WPD_OBJECT_FORMAT_JP2: "WPD_OBJECT_FORMAT_JP2";
        case WPD_OBJECT_FORMAT_JPX: "WPD_OBJECT_FORMAT_JPX";
        case WPD_OBJECT_FORMAT_WBMP: "WPD_OBJECT_FORMAT_WBMP";
        case WPD_OBJECT_FORMAT_JPEGXR: "WPD_OBJECT_FORMAT_JPEGXR";
        case WPD_OBJECT_FORMAT_WINDOWSIMAGEFORMAT: "WPD_OBJECT_FORMAT_WINDOWSIMAGEFORMAT";
        case WPD_OBJECT_FORMAT_WMA: "WPD_OBJECT_FORMAT_WMA";
        case WPD_OBJECT_FORMAT_WMV: "WPD_OBJECT_FORMAT_WMV";
        case WPD_OBJECT_FORMAT_WPLPLAYLIST: "WPD_OBJECT_FORMAT_WPLPLAYLIST";
        case WPD_OBJECT_FORMAT_M3UPLAYLIST: "WPD_OBJECT_FORMAT_M3UPLAYLIST";
        case WPD_OBJECT_FORMAT_MPLPLAYLIST: "WPD_OBJECT_FORMAT_MPLPLAYLIST";
        case WPD_OBJECT_FORMAT_ASXPLAYLIST: "WPD_OBJECT_FORMAT_ASXPLAYLIST";
        case WPD_OBJECT_FORMAT_PLSPLAYLIST: "WPD_OBJECT_FORMAT_PLSPLAYLIST";
        case WPD_OBJECT_FORMAT_ABSTRACT_CONTACT_GROUP: "WPD_OBJECT_FORMAT_ABSTRACT_CONTACT_GROUP";
        case WPD_OBJECT_FORMAT_ABSTRACT_MEDIA_CAST: "WPD_OBJECT_FORMAT_ABSTRACT_MEDIA_CAST";
        case WPD_OBJECT_FORMAT_VCALENDAR1: "WPD_OBJECT_FORMAT_VCALENDAR1";
        case WPD_OBJECT_FORMAT_ICALENDAR: "WPD_OBJECT_FORMAT_ICALENDAR";
        case WPD_OBJECT_FORMAT_ABSTRACT_CONTACT: "WPD_OBJECT_FORMAT_ABSTRACT_CONTACT";
        case WPD_OBJECT_FORMAT_VCARD2: "WPD_OBJECT_FORMAT_VCARD2";
        case WPD_OBJECT_FORMAT_VCARD3: "WPD_OBJECT_FORMAT_VCARD3";
        case WPD_OBJECT_FORMAT_ICON: "WPD_OBJECT_FORMAT_ICON";
        case WPD_OBJECT_FORMAT_XML: "WPD_OBJECT_FORMAT_XML";
        case WPD_OBJECT_FORMAT_AAC: "WPD_OBJECT_FORMAT_AAC";
        case WPD_OBJECT_FORMAT_AUDIBLE: "WPD_OBJECT_FORMAT_AUDIBLE";
        case WPD_OBJECT_FORMAT_FLAC: "WPD_OBJECT_FORMAT_FLAC";
        case WPD_OBJECT_FORMAT_QCELP: "WPD_OBJECT_FORMAT_QCELP";
        case WPD_OBJECT_FORMAT_AMR: "WPD_OBJECT_FORMAT_AMR";
        case WPD_OBJECT_FORMAT_OGG: "WPD_OBJECT_FORMAT_OGG";
        case WPD_OBJECT_FORMAT_MP4: "WPD_OBJECT_FORMAT_MP4";
        case WPD_OBJECT_FORMAT_M4A: "WPD_OBJECT_FORMAT_M4A";
        case WPD_OBJECT_FORMAT_MP2: "WPD_OBJECT_FORMAT_MP2";
        case WPD_OBJECT_FORMAT_MICROSOFT_WORD: "WPD_OBJECT_FORMAT_MICROSOFT_WORD";
        case WPD_OBJECT_FORMAT_MHT_COMPILED_HTML: "WPD_OBJECT_FORMAT_MHT_COMPILED_HTML";
        case WPD_OBJECT_FORMAT_MICROSOFT_EXCEL: "WPD_OBJECT_FORMAT_MICROSOFT_EXCEL";
        case WPD_OBJECT_FORMAT_MICROSOFT_POWERPOINT: "WPD_OBJECT_FORMAT_MICROSOFT_POWERPOINT";
        case WPD_OBJECT_FORMAT_NETWORK_ASSOCIATION: "WPD_OBJECT_FORMAT_NETWORK_ASSOCIATION";
        case WPD_OBJECT_FORMAT_X509V3CERTIFICATE: "WPD_OBJECT_FORMAT_X509V3CERTIFICATE";
        case WPD_OBJECT_FORMAT_MICROSOFT_WFC: "WPD_OBJECT_FORMAT_MICROSOFT_WFC";
        case WPD_OBJECT_FORMAT_3GP: "WPD_OBJECT_FORMAT_3GP";
        case WPD_OBJECT_FORMAT_3GPA: "WPD_OBJECT_FORMAT_3GPA";
        case WPD_OBJECT_FORMAT_3G2: "WPD_OBJECT_FORMAT_3G2";
        case WPD_OBJECT_FORMAT_3G2A: "WPD_OBJECT_FORMAT_3G2A";
        case WPD_OBJECT_FORMAT_AVCHD: "WPD_OBJECT_FORMAT_AVCHD";
        case WPD_OBJECT_FORMAT_ATSCTS: "WPD_OBJECT_FORMAT_ATSCTS";
        case WPD_OBJECT_FORMAT_DVBTS: "WPD_OBJECT_FORMAT_DVBTS";
        case WPD_OBJECT_FORMAT_MKV: "WPD_OBJECT_FORMAT_MKV";
        case WPD_OBJECT_FORMAT_ALL: "WPD_OBJECT_FORMAT_ALL";
        case FORMAT_UnknownImage: "FORMAT_UnknownImage";
        case FORMAT_FirmwareFile: "FORMAT_FirmwareFile";
        case FORMAT_UndefinedAudio: "FORMAT_UndefinedAudio";
        case FORMAT_UndefinedVideo: "FORMAT_UndefinedVideo";
        case FORMAT_UndefinedCollection: "FORMAT_UndefinedCollection";
        case FORMAT_AbstractMultimediaAlbum: "FORMAT_AbstractMultimediaAlbum";
        case FORMAT_AbstractImageAlbum: "FORMAT_AbstractImageAlbum";
        case FORMAT_AbstractAudioAlbum: "FORMAT_AbstractAudioAlbum";
        case FORMAT_AbstractVideoAlbum: "FORMAT_AbstractVideoAlbum";
        case FORMAT_AbstractAudioVideoAlbum: "FORMAT_AbstractAudioVideoAlbum";
        case FORMAT_AbstractChapteredProduction: "FORMAT_AbstractChapteredProduction";
        case FORMAT_AbstractAudioPlaylist: "FORMAT_AbstractAudioPlaylist";
        case FORMAT_AbstractVideoPlaylist: "FORMAT_AbstractVideoPlaylist";
        case FORMAT_UndefinedDocument: "FORMAT_UndefinedDocument";
        case FORMAT_AbstractDocument: "FORMAT_AbstractDocument";
        default: DeviceServicesGuidTable(guid);
    }
}

/// Returns 1 if a given Property Key has a corresponding Values table, 0 otherwise.
Table WPDPropertyHasValues(fmtid, pid)
{
    switch
    {
        case (fmtid == WPD_IMAGE_OBJECT_PROPERTIES_V1 && pid ==  4): 1;
        case (fmtid == WPD_IMAGE_OBJECT_PROPERTIES_V1 && pid ==  5): 1;
        case (fmtid == WPD_MEDIA_PROPERTIES_V1 && pid ==  3): 1;
        case (fmtid == WPD_MEDIA_PROPERTIES_V1 && pid ==  10): 1;
        case (fmtid == WPD_VIDEO_OBJECT_PROPERTIES_V1 && pid ==  12): 1;
        case (fmtid == WPD_STORAGE_OBJECT_PROPERTIES_V1 && pid ==  2): 1;
        case (fmtid == WPD_STORAGE_OBJECT_PROPERTIES_V1 && pid ==  11): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  5): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  10): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  11): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  12): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  14): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  18): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  22): 1;
        case (fmtid == WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  27): 1;
        case (fmtid == WPD_SMS_OBJECT_PROPERTIES_V1 && pid ==  5): 1;
        case (fmtid == WPD_SECTION_OBJECT_PROPERTIES_V1 && pid ==  4): 1;
        case (fmtid == WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1 && pid ==  3): 1;
        case (fmtid == WPD_PROPERTY_ATTRIBUTES_V1 && pid ==  2): 1;
        case (fmtid == WPD_DEVICE_PROPERTIES_V1 && pid ==  5): 1;
        case (fmtid == WPD_DEVICE_PROPERTIES_V1 && pid ==  15): 1;
        case (fmtid == WPD_DEVICE_PROPERTIES_V2 && pid ==  4): 1;
        case (fmtid == WPD_EVENT_PROPERTIES_V1 && pid ==  4): 1;
        case (fmtid == WPD_PARAMETER_ATTRIBUTES_V1 && pid ==  3): 1;
        case (fmtid == WPD_PARAMETER_ATTRIBUTES_V1 && pid ==  4): 1;
        case (fmtid == WPD_CATEGORY_OBJECT_RESOURCES && pid ==  1002): 1;
        case (fmtid == WPD_CATEGORY_OBJECT_RESOURCES && pid ==  1013): 1;
        case (fmtid == WPD_CATEGORY_OBJECT_MANAGEMENT && pid ==  1007): 1;
        case (fmtid == WPD_CATEGORY_SMS && pid ==  1002): 1;
        case (fmtid == WPD_CATEGORY_SERVICE_CAPABILITIES && pid ==  1014): 1;
        default: DeviceServicesPropertyHasValues(fmtid, pid);
    }
}

/// Displays Values for WPD Property Keys.
Table WPDPropertyValues(fmtid, pid, PropVariantValue)
{
    switch
    {
        case (fmtid ==  WPD_IMAGE_OBJECT_PROPERTIES_V1 && pid ==  4): WPD_IMAGE_CROPPED_STATUS_Values(PropVariantValue);
        case (fmtid ==  WPD_IMAGE_OBJECT_PROPERTIES_V1 && pid ==  5): WPD_IMAGE_COLOR_CORRECTED_STATUS_Values(PropVariantValue);
        case (fmtid ==  WPD_MEDIA_PROPERTIES_V1 && pid ==  3): WPD_MEDIA_BITRATE_TYPE_Values(PropVariantValue);
        case (fmtid ==  WPD_MEDIA_PROPERTIES_V1 && pid ==  10): WPD_MEDIA_META_GENRE_Values(PropVariantValue);
        case (fmtid ==  WPD_VIDEO_OBJECT_PROPERTIES_V1 && pid ==  12): WPD_VIDEO_SCAN_TYPE_Values(PropVariantValue);
        case (fmtid ==  WPD_STORAGE_OBJECT_PROPERTIES_V1 && pid ==  2): WPD_STORAGE_TYPE_Values(PropVariantValue);
        case (fmtid ==  WPD_STORAGE_OBJECT_PROPERTIES_V1 && pid ==  11): WPD_STORAGE_ACCESS_CAPABILITY_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  5): WPD_STILL_IMAGE_WHITE_BALANCE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  10): WPD_STILL_IMAGE_FOCUS_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  11): WPD_STILL_IMAGE_EXPOSURE_METERING_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  12): WPD_STILL_IMAGE_FLASH_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  14): WPD_STILL_IMAGE_EXPOSURE_PROGRAM_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  18): WPD_STILL_IMAGE_CAPTURE_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  22): WPD_STILL_IMAGE_EFFECT_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_STILL_IMAGE_CAPTURE_OBJECT_PROPERTIES_V1 && pid ==  27): WPD_STILL_IMAGE_FOCUS_METERING_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_SMS_OBJECT_PROPERTIES_V1 && pid ==  5): WPD_SMS_ENCODING_Values(PropVariantValue);
        case (fmtid ==  WPD_SECTION_OBJECT_PROPERTIES_V1 && pid ==  4): WPD_SECTION_DATA_UNITS_Values(PropVariantValue);
        case (fmtid ==  WPD_RENDERING_INFORMATION_OBJECT_PROPERTIES_V1 && pid ==  3): WPD_RENDERING_INFORMATION_PROFILE_ENTRY_TYPE_Values(PropVariantValue);
        case (fmtid ==  WPD_PROPERTY_ATTRIBUTES_V1 && pid ==  2): WPD_PROPERTY_ATTRIBUTE_FORM_Values(PropVariantValue);
        case (fmtid ==  WPD_DEVICE_PROPERTIES_V1 && pid ==  5): WPD_DEVICE_POWER_SOURCE_Values(PropVariantValue);
        case (fmtid ==  WPD_DEVICE_PROPERTIES_V1 && pid ==  15): WPD_DEVICE_TYPE_Values(PropVariantValue);
        case (fmtid ==  WPD_DEVICE_PROPERTIES_V2 && pid ==  4): WPD_DEVICE_TRANSPORT_Values(PropVariantValue);
        case (fmtid ==  WPD_EVENT_PROPERTIES_V1 && pid ==  4): WPD_EVENT_PARAMETER_OPERATION_STATE_Values(PropVariantValue);
        case (fmtid ==  WPD_PARAMETER_ATTRIBUTES_V1 && pid ==  3): WPD_PARAMETER_ATTRIBUTE_USAGE_Values(PropVariantValue);
        case (fmtid ==  WPD_PARAMETER_ATTRIBUTES_V1 && pid ==  4): WPD_PARAMETER_ATTRIBUTE_FORM_Values(PropVariantValue);
        case (fmtid ==  WPD_CATEGORY_OBJECT_RESOURCES && pid ==  1002): WPD_PROPERTY_OBJECT_RESOURCES_ACCESS_MODE_Values(PropVariantValue);
        case (fmtid ==  WPD_CATEGORY_OBJECT_RESOURCES && pid ==  1013): WPD_PROPERTY_OBJECT_RESOURCES_SEEK_ORIGIN_FLAG_Values(PropVariantValue);
        case (fmtid ==  WPD_CATEGORY_OBJECT_MANAGEMENT && pid ==  1007): WPD_PROPERTY_OBJECT_MANAGEMENT_DELETE_OPTIONS_Values(PropVariantValue);
        case (fmtid ==  WPD_CATEGORY_SMS && pid ==  1002): WPD_PROPERTY_SMS_MESSAGE_TYPE_Values(PropVariantValue);
        case (fmtid ==  WPD_CATEGORY_SERVICE_CAPABILITIES && pid ==  1014): WPD_PROPERTY_SERVICE_CAPABILITIES_INHERITANCE_TYPE_Values(PropVariantValue);
        default: DeviceServicesPropertyValues(fmtid, pid, PropVariantValue);

    }
}

Table WPD_PROPERTY_OBJECT_RESOURCES_ACCESS_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00000000: "STGM_READ";
        case 0x00000001: "STGM_WRITE";
        case 0x00000002: "STGM_READ_WRITE";
        default: "##Unknown##";
    }
}

Table WPD_PROPERTY_OBJECT_RESOURCES_SEEK_ORIGIN_FLAG_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00000000: "STREAM_SEEK_SET";
        case 0x00000001: "STREAM_SEEK_CUR";
        case 0x00000002: "STREAM_SEEK_END";
        default: "##Unknown##";
    }
}

Table WPD_IMAGE_CROPPED_STATUS_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_CROPPED_STATUS_NOT_CROPPED";
        case 1: "WPD_CROPPED_STATUS_CROPPED";
        case 2: "WPD_CROPPED_STATUS_SHOULD_NOT_BE_CROPPED";
        default: "##Unknown##";
    }
}

Table WPD_IMAGE_COLOR_CORRECTED_STATUS_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_COLOR_CORRECTED_STATUS_NOT_CORRECTED";
        case 1: "WPD_COLOR_CORRECTED_STATUS_CORRECTED";
        case 2: "WPD_COLOR_CORRECTED_STATUS_SHOULD_NOT_BE_CORRECTED";
        default: "##Unknown##";
    }
}

Table WPD_MEDIA_BITRATE_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_BITRATE_TYPE_UNUSED";
        case 1: "WPD_BITRATE_TYPE_DISCRETE";
        case 2: "WPD_BITRATE_TYPE_VARIABLE";
        case 3: "WPD_BITRATE_TYPE_FREE";
        default: "##Unknown##";
    }
}

Table WPD_MEDIA_META_GENRE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x0: "WPD_META_GENRE_UNUSED";
        case 0x1: "WPD_META_GENRE_GENERIC_MUSIC_AUDIO_FILE";
        case 0x11: "WPD_META_GENRE_GENERIC_NON_MUSIC_AUDIO_FILE";
        case 0x12: "WPD_META_GENRE_SPOKEN_WORD_AUDIO_BOOK_FILES";
        case 0x13: "WPD_META_GENRE_SPOKEN_WORD_FILES_NON_AUDIO_BOOK";
        case 0x14: "WPD_META_GENRE_SPOKEN_WORD_NEWS";
        case 0x15: "WPD_META_GENRE_SPOKEN_WORD_TALK_SHOWS";
        case 0x21: "WPD_META_GENRE_GENERIC_VIDEO_FILE";
        case 0x22: "WPD_META_GENRE_NEWS_VIDEO_FILE";
        case 0x23: "WPD_META_GENRE_MUSIC_VIDEO_FILE";
        case 0x24: "WPD_META_GENRE_HOME_VIDEO_FILE";
        case 0x25: "WPD_META_GENRE_FEATURE_FILM_VIDEO_FILE";
        case 0x26: "WPD_META_GENRE_TELEVISION_VIDEO_FILE";
        case 0x27: "WPD_META_GENRE_TRAINING_EDUCATIONAL_VIDEO_FILE";
        case 0x28: "WPD_META_GENRE_PHOTO_MONTAGE_VIDEO_FILE";
        case 0x30: "WPD_META_GENRE_GENERIC_NON_AUDIO_NON_VIDEO";
        case 0x40: "WPD_META_GENRE_AUDIO_PODCAST";
        case 0x41: "WPD_META_GENRE_VIDEO_PODCAST";
        case 0x42: "WPD_META_GENRE_MIXED_PODCAST";
        default: "##Unknown##";
    }
}

Table WPD_VIDEO_SCAN_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_VIDEO_SCAN_TYPE_UNUSED";
        case 1: "WPD_VIDEO_SCAN_TYPE_PROGRESSIVE";
        case 2: "WPD_VIDEO_SCAN_TYPE_FIELD_INTERLEAVED_UPPER_FIRST";
        case 3: "WPD_VIDEO_SCAN_TYPE_FIELD_INTERLEAVED_LOWER_FIRST";
        case 4: "WPD_VIDEO_SCAN_TYPE_FIELD_SINGLE_UPPER_FIRST";
        case 5: "WPD_VIDEO_SCAN_TYPE_FIELD_SINGLE_LOWER_FIRST";
        case 6: "WPD_VIDEO_SCAN_TYPE_MIXED_INTERLACE";
        case 7: "WPD_VIDEO_SCAN_TYPE_MIXED_INTERLACE_AND_PROGRESSIVE";
        default: "##Unknown##";
    }
}

Table WPD_STORAGE_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_STORAGE_TYPE_UNDEFINED";
        case 1: "WPD_STORAGE_TYPE_FIXED_ROM";
        case 2: "WPD_STORAGE_TYPE_REMOVABLE_ROM";
        case 3: "WPD_STORAGE_TYPE_FIXED_RAM";
        case 4: "WPD_STORAGE_TYPE_REMOVABLE_RAM";
        default: "##Unknown##";
    }
}

Table WPD_STORAGE_ACCESS_CAPABILITY_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_STORAGE_ACCESS_CAPABILITY_READWRITE";
        case 1: "WPD_STORAGE_ACCESS_CAPABILITY_READ_ONLY_WITHOUT_OBJECT_DELETION";
        case 2: "WPD_STORAGE_ACCESS_CAPABILITY_READ_ONLY_WITH_OBJECT_DELETION";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_WHITE_BALANCE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_WHITE_BALANCE_UNDEFINED";
        case 1: "WPD_WHITE_BALANCE_MANUAL";
        case 2: "WPD_WHITE_BALANCE_AUTOMATIC";
        case 3: "WPD_WHITE_BALANCE_ONE_PUSH_AUTOMATIC";
        case 4: "WPD_WHITE_BALANCE_DAYLIGHT";
        case 5: "WPD_WHITE_BALANCE_FLORESCENT";
        case 6: "WPD_WHITE_BALANCE_TUNGSTEN";
        case 7: "WPD_WHITE_BALANCE_FLASH";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_FOCUS_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_FOCUS_UNDEFINED";
        case 1: "WPD_FOCUS_MANUAL";
        case 2: "WPD_FOCUS_AUTOMATIC";
        case 3: "WPD_FOCUS_AUTOMATIC_MACRO";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_EXPOSURE_METERING_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_EXPOSURE_METERING_MODE_UNDEFINED";
        case 1: "WPD_EXPOSURE_METERING_MODE_AVERAGE";
        case 2: "WPD_EXPOSURE_METERING_MODE_CENTER_WEIGHTED_AVERAGE";
        case 3: "WPD_EXPOSURE_METERING_MODE_MULTI_SPOT";
        case 4: "WPD_EXPOSURE_METERING_MODE_CENTER_SPOT";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_FLASH_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_FLASH_MODE_UNDEFINED";
        case 1: "WPD_FLASH_MODE_AUTO";
        case 2: "WPD_FLASH_MODE_OFF";
        case 3: "WPD_FLASH_MODE_FILL";
        case 4: "WPD_FLASH_MODE_RED_EYE_AUTO";
        case 5: "WPD_FLASH_MODE_RED_EYE_FILL";
        case 6: "WPD_FLASH_MODE_EXTERNAL_SYNC";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_EXPOSURE_PROGRAM_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_EXPOSURE_PROGRAM_MODE_UNDEFINED";
        case 1: "WPD_EXPOSURE_PROGRAM_MODE_MANUAL";
        case 2: "WPD_EXPOSURE_PROGRAM_MODE_AUTO";
        case 3: "WPD_EXPOSURE_PROGRAM_MODE_APERTURE_PRIORITY";
        case 4: "WPD_EXPOSURE_PROGRAM_MODE_SHUTTER_PRIORITY";
        case 5: "WPD_EXPOSURE_PROGRAM_MODE_CREATIVE";
        case 6: "WPD_EXPOSURE_PROGRAM_MODE_ACTION";
        case 7: "WPD_EXPOSURE_PROGRAM_MODE_PORTRAIT";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_CAPTURE_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_CAPTURE_MODE_UNDEFINED";
        case 1: "WPD_CAPTURE_MODE_NORMAL";
        case 2: "WPD_CAPTURE_MODE_BURST";
        case 3: "WPD_CAPTURE_MODE_TIMELAPSE";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_EFFECT_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_EFFECT_MODE_UNDEFINED";
        case 1: "WPD_EFFECT_MODE_COLOR";
        case 2: "WPD_EFFECT_MODE_BLACK_AND_WHITE";
        case 3: "WPD_EFFECT_MODE_SEPIA";
        default: "##Unknown##";
    }
}

Table WPD_STILL_IMAGE_FOCUS_METERING_MODE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_FOCUS_METERING_MODE_UNDEFINED";
        case 1: "WPD_FOCUS_METERING_MODE_CENTER_SPOT";
        case 2: "WPD_FOCUS_METERING_MODE_MULTI_SPOT";
        default: "##Unknown##";
    }
}

Table WPD_SMS_ENCODING_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "SMS_ENCODING_7_BIT";
        case 1: "SMS_ENCODING_8_BIT";
        case 2: "SMS_ENCODING_UTF_16";
        default: "##Unknown##";
    }
}

Table WPD_SECTION_DATA_UNITS_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_SECTION_DATA_UNITS_BYTES";
        case 1: "WPD_SECTION_DATA_UNITS_MILLISECONDS";
        default: "##Unknown##";
    }
}

Table WPD_RENDERING_INFORMATION_PROFILE_ENTRY_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_RENDERING_INFORMATION_PROFILE_ENTRY_TYPE_OBJECT";
        case 1: "WPD_RENDERING_INFORMATION_PROFILE_ENTRY_TYPE_RESOURCE";
        default: "##Unknown##";
    }
}

Table WPD_PROPERTY_ATTRIBUTE_FORM_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_PROPERTY_ATTRIBUTE_FORM_UNSPECIFIED";
        case 1: "WPD_PROPERTY_ATTRIBUTE_FORM_RANGE";
        case 2: "WPD_PROPERTY_ATTRIBUTE_FORM_ENUMERATION";
        case 3: "WPD_PROPERTY_ATTRIBUTE_FORM_REGULAR_EXPRESSION";
        case 4: "WPD_PROPERTY_ATTRIBUTE_FORM_OBJECT_IDENTIFIER";
        default: "##Unknown##";
    }
}

Table WPD_DEVICE_POWER_SOURCE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_POWER_SOURCE_BATTERY";
        case 1: "WPD_POWER_SOURCE_EXTERNAL";
        default: "##Unknown##";
    }
}

Table WPD_DEVICE_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_DEVICE_TYPE_GENERIC";
        case 1: "WPD_DEVICE_TYPE_CAMERA";
        case 2: "WPD_DEVICE_TYPE_MEDIA_PLAYER";
        case 3: "WPD_DEVICE_TYPE_PHONE";
        case 4: "WPD_DEVICE_TYPE_VIDEO";
        case 5: "WPD_DEVICE_TYPE_PERSONAL_INFORMATION_MANAGER";
        case 6: "WPD_DEVICE_TYPE_AUDIO_RECORDER";
        default: "##Unknown##";
    }
}

Table WPD_DEVICE_TRANSPORT_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_DEVICE_TRANSPORT_UNSPECIFIED";
        case 1: "WPD_DEVICE_TRANSPORT_USB";
        case 2: "WPD_DEVICE_TRANSPORT_IP";
        case 3: "WPD_DEVICE_TRANSPORT_BLUETOOTH";
        default: "##Unknown##";
    }
}

Table WPD_EVENT_PARAMETER_OPERATION_STATE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_OPERATION_STATE_UNSPECIFIED";
        case 1: "WPD_OPERATION_STATE_STARTED";
        case 2: "WPD_OPERATION_STATE_RUNNING";
        case 3: "WPD_OPERATION_STATE_PAUSED";
        case 4: "WPD_OPERATION_STATE_CANCELLED";
        case 5: "WPD_OPERATION_STATE_FINISHED";
        case 6: "WPD_OPERATION_STATE_ABORTED";
        default: "##Unknown##";
    }
}

Table WPD_PARAMETER_ATTRIBUTE_USAGE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_PARAMETER_USAGE_RETURN";
        case 1: "WPD_PARAMETER_USAGE_IN";
        case 2: "WPD_PARAMETER_USAGE_OUT";
        case 3: "WPD_PARAMETER_USAGE_INOUT";
        default: "##Unknown##";
    }
}

Table WPD_PARAMETER_ATTRIBUTE_FORM_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_PARAMETER_ATTRIBUTE_FORM_UNSPECIFIED";
        case 1: "WPD_PARAMETER_ATTRIBUTE_FORM_RANGE";
        case 2: "WPD_PARAMETER_ATTRIBUTE_FORM_ENUMERATION";
        case 3: "WPD_PARAMETER_ATTRIBUTE_FORM_REGULAR_EXPRESSION";
        case 4: "WPD_PARAMETER_ATTRIBUTE_FORM_OBJECT_IDENTIFIER";
        default: "##Unknown##";
    }
}

Table WPD_PROPERTY_OBJECT_MANAGEMENT_DELETE_OPTIONS_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "PORTABLE_DEVICE_DELETE_NO_RECURSION";
        case 1: "PORTABLE_DEVICE_DELETE_WITH_RECURSION";
        default: "##Unknown##";
    }
}

Table WPD_PROPERTY_SMS_MESSAGE_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "SMS_TEXT_MESSAGE";
        case 1: "SMS_BINARY_MESSAGE";
        default: "##Unknown##";
    }
}

Table WPD_PROPERTY_SERVICE_CAPABILITIES_INHERITANCE_TYPE_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "WPD_SERVICE_INHERITANCE_IMPLEMENTATION";
        default: "##Unknown##";
    }
}

/// Displays WPD Error Codes, otherwise defaults to HResultErrorCodeTable in globaltables.npl.
Table WPDErrorTable(errorCode)
{
    switch(errorCode)
    {
        case 0x802A0001: "E_WPD_DEVICE_ALREADY_OPENED";
        case 0x802A0002: "E_WPD_DEVICE_NOT_OPEN";
        case 0x802A0003: "E_WPD_OBJECT_ALREADY_ATTACHED_TO_DEVICE";
        case 0x802A0004: "E_WPD_OBJECT_NOT_ATTACHED_TO_DEVICE";
        case 0x802A0005: "E_WPD_OBJECT_NOT_COMMITED";
        case 0x802A0006: "E_WPD_DEVICE_IS_HUNG";
        case 0x802A0064: "E_WPD_SMS_INVALID_RECIPIENT";
        case 0x802A0065: "E_WPD_SMS_INVALID_MESSAGE_BODY";
        case 0x802A0066: "E_WPD_SMS_SERVICE_UNAVAILABLE";
        case 0x802A00C8: "E_WPD_SERVICE_ALREADY_OPENED";
        case 0x802A00C9: "E_WPD_SERVICE_NOT_OPEN";
        case 0x802A00CA: "E_WPD_OBJECT_ALREADY_ATTACHED_TO_SERVICE";
        case 0x802A00CB: "E_WPD_OBJECT_NOT_ATTACHED_TO_SERVICE";
        case 0x802A00CC: "E_WPD_SERVICE_BAD_PARAMETER_ORDER";
        default: HResultErrorCodeTable(errorCode);
    }
}

// {e65b8fb7-8fc7-4278-b9a3-ba14c2db40fa}
Table NAMESPACE_AnchorSyncSvc_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_AnchorSyncSvcVersionProps";
        case 3: "PKEY_AnchorSyncSvcReplicaID";
        case 4: "PKEY_AnchorSyncSvcKnowledgeObjectID";
        case 5: "PKEY_AnchorSyncSvcLastSyncProxyID";
        case 6: "PKEY_AnchorSyncSvcCurrentAnchor";
        case 7: "PKEY_AnchorSyncSvcProviderVersion";
        default: FormatString("NAMESPACE_AnchorSyncSvc.%d", pid);
    }
}

// {516b5dce-8d45-430f-805c-25e5106d8b1f}
Table NAMESPACE_AnchorResults_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_AnchorResultsAnchorState";
        case 3: "PKEY_AnchorResultsAnchor";
        case 4: "PKEY_AnchorResultsResultObjectID";
        default: FormatString("NAMESPACE_AnchorResults.%d", pid);
    }
}

Table PKEY_AnchorResults_AnchorState_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00000000: "AnchorResults_AnchorStateNormal";
        case 0x00000001: "AnchorResults_AnchorStateInvalid";
        case 0x00000002: "AnchorResults_AnchorStateOld";
        default: "##Unknown##";
    }
}

// {63816297-61E5-4306-B1A3-CEDF481B8629}
Table NAMESPACE_CalendarSvc_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_CalendarSvcSyncWindowStart";
        case 3: "PKEY_CalendarSvcSyncWindowEnd";
        default: FormatString("NAMESPACE_CalendarSvc.%d", pid);
    }
}

// {F99EFD03-431D-40D8-A1C9-4E220D9C88D3}
Table NAMESPACE_CalendarObj_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "PKEY_CalendarObjLocation";
        case 10: "PKEY_CalendarObjAccepted";
        case 12: "PKEY_CalendarObjTentative";
        case 13: "PKEY_CalendarObjDeclined";
        case 14: "PKEY_CalendarObjTimeZone";
        case 15: "PKEY_CalendarObjReminderOffset";
        case 16: "PKEY_CalendarObjBusyStatus";
        case 17: "PKEY_CalendarObjPatternStartTime";
        case 18: "PKEY_CalendarObjPatternDuration";
        case 19: "PKEY_CalendarObjBeginDateTime";
        case 20: "PKEY_CalendarObjEndDateTime";
        default: FormatString("NAMESPACE_CalendarObj.%d", pid);
    }
}

Table PKEY_CalendarObj_BusyStatus_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x0000: "CalendarObj_BusyStatusFree";
        case 0x0001: "CalendarObj_BusyStatusBusy";
        case 0x0002: "CalendarObj_BusyStatusOutOfOffice";
        case 0x0003: "CalendarObj_BusyStatusTentative";
        default: "##Unknown##";
    }
}

// {FBD4FDAB-987D-4777-B3F9-726185A9312B}
Table NAMESPACE_ContactObj_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "PKEY_ContactObjGivenName";
        case 4: "PKEY_ContactObjMiddleNames";
        case 5: "PKEY_ContactObjFamilyName";
        case 6: "PKEY_ContactObjTitle";
        case 7: "PKEY_ContactObjSuffix";
        case 8: "PKEY_ContactObjPhoneticGivenName";
        case 9: "PKEY_ContactObjPhoneticFamilyName";
        case 10: "PKEY_ContactObjPersonalAddressFull";
        case 11: "PKEY_ContactObjPersonalAddressStreet";
        case 12: "PKEY_ContactObjPersonalAddressLine2";
        case 13: "PKEY_ContactObjPersonalAddressCity";
        case 14: "PKEY_ContactObjPersonalAddressRegion";
        case 15: "PKEY_ContactObjPersonalAddressPostalCode";
        case 16: "PKEY_ContactObjPersonalAddressCountry";
        case 17: "PKEY_ContactObjBusinessAddressFull";
        case 18: "PKEY_ContactObjBusinessAddressStreet";
        case 19: "PKEY_ContactObjBusinessAddressLine2";
        case 20: "PKEY_ContactObjBusinessAddressCity";
        case 21: "PKEY_ContactObjBusinessAddressRegion";
        case 22: "PKEY_ContactObjBusinessAddressPostalCode";
        case 23: "PKEY_ContactObjBusinessAddressCountry";
        case 24: "PKEY_ContactObjOtherAddressFull";
        case 25: "PKEY_ContactObjOtherAddressStreet";
        case 26: "PKEY_ContactObjOtherAddressLine2";
        case 27: "PKEY_ContactObjOtherAddressCity";
        case 28: "PKEY_ContactObjOtherAddressRegion";
        case 29: "PKEY_ContactObjOtherAddressPostalCode";
        case 30: "PKEY_ContactObjOtherAddressCountry";
        case 31: "PKEY_ContactObjEmail";
        case 32: "PKEY_ContactObjPersonalEmail";
        case 33: "PKEY_ContactObjPersonalEmail2";
        case 34: "PKEY_ContactObjBusinessEmail";
        case 35: "PKEY_ContactObjBusinessEmail2";
        case 36: "PKEY_ContactObjOtherEmail";
        case 37: "PKEY_ContactObjPhone";
        case 38: "PKEY_ContactObjPersonalPhone";
        case 39: "PKEY_ContactObjPersonalPhone2";
        case 40: "PKEY_ContactObjBusinessPhone";
        case 41: "PKEY_ContactObjBusinessPhone2";
        case 42: "PKEY_ContactObjMobilePhone";
        case 43: "PKEY_ContactObjMobilePhone2";
        case 44: "PKEY_ContactObjPersonalFax";
        case 45: "PKEY_ContactObjBusinessFax";
        case 46: "PKEY_ContactObjPager";
        case 47: "PKEY_ContactObjOtherPhone";
        case 48: "PKEY_ContactObjWebAddress";
        case 49: "PKEY_ContactObjPersonalWebAddress";
        case 50: "PKEY_ContactObjBusinessWebAddress";
        case 51: "PKEY_ContactObjIMAddress";
        case 52: "PKEY_ContactObjIMAddress2";
        case 53: "PKEY_ContactObjIMAddress3";
        case 54: "PKEY_ContactObjOrganization";
        case 55: "PKEY_ContactObjPhoneticOrganization";
        case 56: "PKEY_ContactObjRole";
        case 58: "PKEY_ContactObjFax";
        case 59: "PKEY_ContactObjSpouse";
        case 60: "PKEY_ContactObjChildren";
        case 61: "PKEY_ContactObjAssistant";
        case 63: "PKEY_ContactObjRingtone";
        case 65: "PKEY_ContactObjBirthdate";
        case 66: "PKEY_ContactObjAnniversaryDate";
        default: FormatString("NAMESPACE_ContactObj.%d", pid);
    }
}

// {14fa7268-0b6c-4214-9487-435b480a8c4f}
Table NAMESPACE_Services_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_ServicesServiceDisplayName";
        case 3: "PKEY_ServicesServiceIcon";
        case 4: "PKEY_ServicesServiceLocale";
        default: FormatString("NAMESPACE_Services.%d", pid);
    }
}

// {63b10e6c-4f3a-456d-95cb-9894edec9fa5}
Table NAMESPACE_FullEnumSyncSvc_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "PKEY_FullEnumSyncSvcVersionProps";
        case 4: "PKEY_FullEnumSyncSvcReplicaID";
        case 7: "PKEY_FullEnumSyncSvcKnowledgeObjectID";
        case 8: "PKEY_FullEnumSyncSvcLastSyncProxyID";
        case 9: "PKEY_FullEnumSyncSvcProviderVersion";
        default: FormatString("NAMESPACE_FullEnumSyncSvc.%d", pid);
    }
}

// {B28AE94B-05A4-4E8E-BE01-72CC7E099D8F}
Table NAMESPACE_MessageObj_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_MessageObjSubject";
        case 3: "PKEY_MessageObjBody";
        case 4: "PKEY_MessageObjPriority";
        case 10: "PKEY_MessageObjCategory";
        case 18: "PKEY_MessageObjSender";
        case 20: "PKEY_MessageObjTo";
        case 21: "PKEY_MessageObjCC";
        case 22: "PKEY_MessageObjBCC";
        case 23: "PKEY_MessageObjRead";
        case 24: "PKEY_MessageObjReceivedTime";
        case 26: "PKEY_MessageObjPatternOriginalDateTime";
        case 27: "PKEY_MessageObjPatternType";
        case 28: "PKEY_MessageObjPatternValidStartDate";
        case 29: "PKEY_MessageObjPatternValidEndDate";
        case 31: "PKEY_MessageObjPatternPeriod";
        case 32: "PKEY_MessageObjPatternDayOfWeek";
        case 33: "PKEY_MessageObjPatternDayOfMonth";
        case 34: "PKEY_MessageObjPatternMonthOfYear";
        case 35: "PKEY_MessageObjPatternInstance";
        case 36: "PKEY_MessageObjPatternDeleteDates";
        default: FormatString("NAMESPACE_MessageObj.%d", pid);
    }
}

Table PKEY_MessageObj_Priority_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 2: "MessageObj_PriorityHighest";
        case 1: "MessageObj_PriorityNormal";
        case 0: "MessageObj_PriorityLowest";
        default: "##Unknown##";
    }
}

Table PKEY_MessageObj_Read_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00: "MessageObj_ReadFalse";
        case 0xff: "MessageObj_ReadTrue";
        default: "##Unknown##";
    }
}

Table PKEY_MessageObj_PatternType_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00000001: "MessageObj_PatternTypeDaily";
        case 0x00000002: "MessageObj_PatternTypeWeekly";
        case 0x00000003: "MessageObj_PatternTypeMonthly";
        case 0x00000004: "MessageObj_PatternTypeYearly";
        default: "##Unknown##";
    }
}

Table PKEY_MessageObj_PatternInstance_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00: "MessageObj_PatternInstanceNone";
        case 0x01: "MessageObj_PatternInstanceFirst";
        case 0x02: "MessageObj_PatternInstanceSecond";
        case 0x03: "MessageObj_PatternInstanceThird";
        case 0x04: "MessageObj_PatternInstanceFourth";
        case 0x05: "MessageObj_PatternInstanceLast";
        default: "##Unknown##";
    }
}

// {68bb7eeb-9eef-45bd-8de6-3b92a57cae1e}
Table NAMESPACE_DeviceMetadataObj_Table(fmtid, pid)
{
    switch(pid)
    {
        case 3: "PKEY_DeviceMetadataObjContentID";
        case 4: "PKEY_DeviceMetadataObjDefaultCAB";
        default: FormatString("NAMESPACE_DeviceMetadataObj.%d", pid);
    }
}

Table PKEY_DeviceMetadataObj_DefaultCAB_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0: "DeviceMetadataObj_DefaultCABFalse";
        case 1: "DeviceMetadataObj_DefaultCABTrue";
        default: "##Unknown##";
    }
}

// {5FFBFC7B-7483-41AD-AFB9-DA3F4E592B8D}
Table NAMESPACE_NotesObj_Table(fmtid, pid)
{
    switch
    {
        default: FormatString("NAMESPACE_NotesObj.%d", pid);
    }
}

// {7d05d925-32e6-4790-9205-54764bb3cb74}
Table NAMESPACE_RingtonesSvc_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_RingtonesSvcDefaultRingtone";
        default: FormatString("NAMESPACE_RingtonesSvc.%d", pid);
    }
}

// {8d943c78-2c7d-4c74-945a-42d83cb58b5a}
Table NAMESPACE_RingtonesObj_Table(fmtid, pid)
{
    switch
    {
        default: FormatString("NAMESPACE_RingtonesObj.%d", pid);
    }
}

// {49cd1f76-5626-4b17-a4e8-18b4aa1a2213}
Table NAMESPACE_StatusSvc_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_StatusSvcSignalStrength";
        case 3: "PKEY_StatusSvcTextMessages";
        case 4: "PKEY_StatusSvcNewPictures";
        case 5: "PKEY_StatusSvcMissedCalls";
        case 6: "PKEY_StatusSvcVoiceMail";
        case 7: "PKEY_StatusSvcNetworkName";
        case 8: "PKEY_StatusSvcNetworkType";
        case 9: "PKEY_StatusSvcRoaming";
        case 10: "PKEY_StatusSvcBatteryLife";
        case 11: "PKEY_StatusSvcChargingState";
        case 12: "PKEY_StatusSvcStorageCapacity";
        case 13: "PKEY_StatusSvcStorageFreeSpace";
        default: FormatString("NAMESPACE_StatusSvc.%d", pid);
    }
}

Table PKEY_StatusSvc_Roaming_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00: "StatusSvc_RoamingInactive";
        case 0x01: "StatusSvc_RoamingActive";
        case 0x02: "StatusSvc_RoamingUnknown";
        default: "##Unknown##";
    }
}

Table PKEY_StatusSvc_ChargingState_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00: "StatusSvc_ChargingInactive";
        case 0x01: "StatusSvc_ChargingActive";
        case 0x02: "StatusSvc_ChargingUnknown";
        default: "##Unknown##";
    }
}

// {703d392c-532c-4607-9158-9cea742f3a16}
Table NAMESPACE_SyncSvc_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_SyncSvcSyncFormat";
        case 3: "PKEY_SyncSvcLocalOnlyDelete";
        case 4: "PKEY_SyncSvcFilterType";
        case 5: "PKEY_SyncSvcSyncObjectReferences";
        default: FormatString("NAMESPACE_SyncSvc.%d", pid);
    }
}

// {37364f58-2f74-4981-99a5-7ae28aeee319}
Table NAMESPACE_SyncObj_Table(fmtid, pid)
{
    switch(pid)
    {
        case 2: "PKEY_SyncObjLastAuthorProxyID";
        default: FormatString("NAMESPACE_SyncObj.%d", pid);
    }
}

Table PKEY_SyncSvc_SyncObjectReferences_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00: "SyncSvc_SyncObjectReferencesDisabled";
        case 0xff: "SyncSvc_SyncObjectReferencesEnabled";
        default: "##Unknown##";
    }
}

// {E354E95E-D8A0-4637-A03A-0CB26838DBC7}
Table NAMESPACE_TaskObj_Table(fmtid, pid)
{
    switch(pid)
    {
        case 13: "PKEY_TaskObjReminderDateTime";
        case 14: "PKEY_TaskObjComplete";
        case 15: "PKEY_TaskObjBeginDate";
        case 16: "PKEY_TaskObjEndDate";
        default: FormatString("NAMESPACE_TaskObj.%d", pid);
    }
}

Table PKEY_TaskObj_Complete_Values(PropVariantValue)
{
    switch(PropVariantValue)
    {
        case 0x00: "TaskObj_CompleteFalse";
        case 0xff: "TaskObj_CompleteTrue";
        default: "##Unknown##";
    }
}

Table DeviceServicesPropertyKeyTable(fmtid, pid)
{
    switch(fmtid)
    {
        case NAMESPACE_AnchorSyncSvc: NAMESPACE_AnchorSyncSvc_Table(fmtid, pid);
        case NAMESPACE_AnchorResults: NAMESPACE_AnchorResults_Table(fmtid, pid);
        case NAMESPACE_CalendarSvc: NAMESPACE_CalendarSvc_Table(fmtid, pid);
        case NAMESPACE_CalendarObj: NAMESPACE_CalendarObj_Table(fmtid, pid);
        case NAMESPACE_ContactObj: NAMESPACE_ContactObj_Table(fmtid, pid);
        case NAMESPACE_Services: NAMESPACE_Services_Table(fmtid, pid);
        case NAMESPACE_FullEnumSyncSvc: NAMESPACE_FullEnumSyncSvc_Table(fmtid, pid);
        case NAMESPACE_MessageObj: NAMESPACE_MessageObj_Table(fmtid, pid);
        case NAMESPACE_DeviceMetadataObj: NAMESPACE_DeviceMetadataObj_Table(fmtid, pid);
        case NAMESPACE_NotesObj: NAMESPACE_NotesObj_Table(fmtid, pid);
        case NAMESPACE_RingtonesSvc: NAMESPACE_RingtonesSvc_Table(fmtid, pid);
        case NAMESPACE_RingtonesObj: NAMESPACE_RingtonesObj_Table(fmtid, pid);
        case NAMESPACE_StatusSvc: NAMESPACE_StatusSvc_Table(fmtid, pid);
        case NAMESPACE_SyncSvc: NAMESPACE_SyncSvc_Table(fmtid, pid);
        case NAMESPACE_SyncObj: NAMESPACE_SyncObj_Table(fmtid, pid);
        case NAMESPACE_TaskObj: NAMESPACE_TaskObj_Table(fmtid, pid);
        default: WPDResourceTable(fmtid, pid);
    }
}

Table DeviceServicesGuidTable(guid)
{
    switch(guid)
    {
        case SERVICE_AnchorSync: "SERVICE_AnchorSync";
        case NAMESPACE_AnchorSyncSvc: "NAMESPACE_AnchorSyncSvc";
        case NAMESPACE_AnchorResults: "NAMESPACE_AnchorResults";
        case FORMAT_AnchorSyncKnowledge: "FORMAT_AnchorSyncKnowledge";
        case FORMAT_AnchorSyncSvc_AnchorResults: "FORMAT_AnchorSyncSvc_AnchorResults";
        // BUGBUG: Commenting out METHOD_AnchorSyncSvc_GetChangesSinceAnchor as it collides with FORMAT_AnchorSyncKnowledge
        // case METHOD_AnchorSyncSvc_GetChangesSinceAnchor: "METHOD_AnchorSyncSvc_GetChangesSinceAnchor";
        case SERVICE_Calendar: "SERVICE_Calendar";
        case NAMESPACE_CalendarSvc: "NAMESPACE_CalendarSvc";
        case NAMESPACE_CalendarObj: "NAMESPACE_CalendarObj";
        case FORMAT_AbstractActivity: "FORMAT_AbstractActivity";
        case FORMAT_AbstractActivityOccurrence: "FORMAT_AbstractActivityOccurrence";
        case FORMAT_VCalendar1Activity: "FORMAT_VCalendar1Activity";
        case FORMAT_ICalendarActivity: "FORMAT_ICalendarActivity";
        case SERVICE_Contacts: "SERVICE_Contacts";
        case NAMESPACE_ContactObj: "NAMESPACE_ContactObj";
        case FORMAT_AbstractContact: "FORMAT_AbstractContact";
        case FORMAT_VCard2Contact: "FORMAT_VCard2Contact";
        case FORMAT_VCard3Contact: "FORMAT_VCard3Contact";
        case FORMAT_AbstractContactGroup: "FORMAT_AbstractContactGroup";
        case NAMESPACE_Services: "NAMESPACE_Services";
        case SERVICE_FullEnumSync: "SERVICE_FullEnumSync";
        case NAMESPACE_FullEnumSyncSvc: "NAMESPACE_FullEnumSyncSvc";
        case FORMAT_FullEnumSyncKnowledge: "FORMAT_FullEnumSyncKnowledge";
        case SERVICE_Message: "SERVICE_Message";
        case NAMESPACE_MessageObj: "NAMESPACE_MessageObj";
        case FORMAT_AbstractMessage: "FORMAT_AbstractMessage";
        case FORMAT_AbstractMessageFolder: "FORMAT_AbstractMessageFolder";
        case SERVICE_DeviceMetadata: "SERVICE_DeviceMetadata";
        case NAMESPACE_DeviceMetadataObj: "NAMESPACE_DeviceMetadataObj";
        case FORMAT_DeviceMetadataCAB: "FORMAT_DeviceMetadataCAB";
        case SERVICE_Notes: "SERVICE_Notes";
        case NAMESPACE_NotesObj: "NAMESPACE_NotesObj";
        case FORMAT_AbstractNote: "FORMAT_AbstractNote";
        case SERVICE_Ringtones: "SERVICE_Ringtones";
        case NAMESPACE_RingtonesSvc: "NAMESPACE_RingtonesSvc";
        case NAMESPACE_RingtonesObj: "NAMESPACE_RingtonesObj";
        case SERVICE_Status: "SERVICE_Status";
        case NAMESPACE_StatusSvc: "NAMESPACE_StatusSvc";
        case NAMESPACE_SyncSvc: "NAMESPACE_SyncSvc";
        case NAMESPACE_SyncObj: "NAMESPACE_SyncObj";case METHOD_SyncSvc_BeginSync: "METHOD_SyncSvc_BeginSync";case METHOD_SyncSvc_EndSync: "METHOD_SyncSvc_EndSync";
        case SERVICE_Tasks: "SERVICE_Tasks";
        case NAMESPACE_TaskObj: "NAMESPACE_TaskObj";
        case FORMAT_AbstractTask: "FORMAT_AbstractTask";
        default: FormatString("%s", WPDFormatUINT128AsGUID(guid));
    }
}

Table DeviceServicesPropertyHasValues(fmtid, pid)
{
    switch
    {
        // PKEY_AnchorResults_AnchorState
        case (fmtid == NAMESPACE_AnchorResults && pid == 2): 1;
        // PKEY_CalendarObj_BusyStatus
        case (fmtid == NAMESPACE_CalendarObj && pid == 16): 1;
        // PKEY_MessageObj_Priority
        case (fmtid == NAMESPACE_MessageObj && pid == 4): 1;
        // PKEY_MessageObj_Read
        case (fmtid == NAMESPACE_MessageObj && pid == 23): 1;
        // PKEY_MessageObj_PatternType
        case (fmtid == NAMESPACE_MessageObj && pid == 27): 1;
        // PKEY_MessageObj_PatternInstance
        case (fmtid == NAMESPACE_MessageObj && pid == 35): 1;
        // PKEY_DeviceMetadataObj_DefaultCAB
        case (fmtid == NAMESPACE_DeviceMetadataObj && pid == 4): 1;
        // PKEY_StatusSvc_Roaming
        case (fmtid == NAMESPACE_StatusSvc && pid == 9): 1;
        // PKEY_StatusSvc_ChargingState
        case (fmtid == NAMESPACE_StatusSvc && pid == 11): 1;
        // PKEY_SyncSvc_SyncObjectReferences
        case (fmtid == NAMESPACE_SyncSvc && pid == 5): 1;
        // PKEY_TaskObj_Complete
        case (fmtid == NAMESPACE_TaskObj && pid == 14): 1;
        default: 0;
    }
}

Table DeviceServicesPropertyValues(fmtid, pid, PropVariantValue)
{
    switch
    {
        case (fmtid == NAMESPACE_AnchorResults && pid == 2): PKEY_AnchorResults_AnchorState_Values(PropVariantValue);
        case (fmtid == NAMESPACE_CalendarObj && pid == 16): PKEY_CalendarObj_BusyStatus_Values(PropVariantValue);
        case (fmtid == NAMESPACE_MessageObj && pid == 4): PKEY_MessageObj_Priority_Values(PropVariantValue);
        case (fmtid == NAMESPACE_MessageObj && pid == 23): PKEY_MessageObj_Read_Values(PropVariantValue);
        case (fmtid == NAMESPACE_MessageObj && pid == 27): PKEY_MessageObj_PatternType_Values(PropVariantValue);
        case (fmtid == NAMESPACE_MessageObj && pid == 35): PKEY_MessageObj_PatternInstance_Values(PropVariantValue);
        case (fmtid == NAMESPACE_DeviceMetadataObj && pid == 4): PKEY_DeviceMetadataObj_DefaultCAB_Values(PropVariantValue);
        case (fmtid == NAMESPACE_StatusSvc && pid == 9): PKEY_StatusSvc_Roaming_Values(PropVariantValue);
        case (fmtid == NAMESPACE_StatusSvc && pid == 11): PKEY_StatusSvc_ChargingState_Values(PropVariantValue);
        case (fmtid == NAMESPACE_SyncSvc && pid == 5): PKEY_SyncSvc_SyncObjectReferences_Values(PropVariantValue);
        case (fmtid == NAMESPACE_TaskObj && pid == 14): PKEY_TaskObj_Complete_Values(PropVariantValue);
    }
}

// {4D545058-1A2E-4106-A357-771E0819FC56}
Table WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS_Table(fmtid, pid)
{
    switch(pid)
    {
        case 11: "WPD_COMMAND_MTP_EXT_GET_SUPPORTED_VENDOR_OPCODES";
        case 12: "WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITHOUT_DATA_PHASE";
        case 13: "WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_READ";
        case 14: "WPD_COMMAND_MTP_EXT_EXECUTE_COMMAND_WITH_DATA_TO_WRITE";
        case 15: "WPD_COMMAND_MTP_EXT_READ_DATA";
        case 16: "WPD_COMMAND_MTP_EXT_WRITE_DATA";
        case 17: "WPD_COMMAND_MTP_EXT_END_DATA_TRANSFER";
        case 18: "WPD_COMMAND_MTP_EXT_GET_VENDOR_EXTENSION_DESCRIPTION";
        case 1001: "WPD_PROPERTY_MTP_EXT_OPERATION_CODE";
        case 1002: "WPD_PROPERTY_MTP_EXT_OPERATION_PARAMS";
        case 1003: "WPD_PROPERTY_MTP_EXT_RESPONSE_CODE";
        case 1004: "WPD_PROPERTY_MTP_EXT_RESPONSE_PARAMS";
        case 1005: "WPD_PROPERTY_MTP_EXT_VENDOR_OPERATION_CODES";
        case 1006: "WPD_PROPERTY_MTP_EXT_TRANSFER_CONTEXT";
        case 1007: "WPD_PROPERTY_MTP_EXT_TRANSFER_TOTAL_DATA_SIZE";
        case 1008: "WPD_PROPERTY_MTP_EXT_TRANSFER_NUM_BYTES_TO_READ";
        case 1009: "WPD_PROPERTY_MTP_EXT_TRANSFER_NUM_BYTES_READ";
        case 1010: "WPD_PROPERTY_MTP_EXT_TRANSFER_NUM_BYTES_TO_WRITE";
        case 1011: "WPD_PROPERTY_MTP_EXT_TRANSFER_NUM_BYTES_WRITTEN";
        case 1012: "WPD_PROPERTY_MTP_EXT_TRANSFER_DATA";
        case 1013: "WPD_PROPERTY_MTP_EXT_OPTIMAL_TRANSFER_BUFFER_SIZE";
        case 1014: "WPD_PROPERTY_MTP_EXT_VENDOR_EXTENSION_DESCRIPTION";
        default: FormatString("WPD_CATEGORY_MTP_EXT_VENDOR_OPERATIONS.%d", pid);
    }
}

// {4D545058-4FCE-4578-95C8-8698A9BC0F49}
Table WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS_Table(fmtid, pid)
{
    switch
    {
        default: FormatString("WPD_PROPERTIES_MTP_VENDOR_EXTENDED_OBJECT_PROPS.%d", pid);
    }
}

// {4D545058-8900-40b3-8F1D-DC246E1E8370}
Table WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS_Table(fmtid, pid)
{
    switch
    {
        default: FormatString("WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS.%d", pid);
    }
}

// {4D545058-EF88-4e4d-95C3-4F327F728A96}
Table WPD_CATEGORY_MTP_EXT_EVENT_PARAMS_Table(fmtid, pid)
{
    switch(pid)
    {
        case 1011: "WPD_PROPERTY_MTP_EXT_EVENT_PARAMS";
        default: FormatString("WPD_CATEGORY_MTP_EXT_EVENT_PARAMS.%d", pid);
    }
}

/// Datatypes for WPD
UnsignedNumber WPDGUID
{
    Size = 16;
    DisplayFormat = WPDGuidTable(this);
}

[Property.WPDHRDescription = Description]
Struct WPDHR = Local.Description
{
    [Property.HResultValue = UINT32(FrameData, FrameOffset) ]
    switch
    {
        case !Contains(WPDErrorTable(Property.HResultValue),"Unknown Value"):
            [Local.Description = WPDErrorTable(Property.HResultValue)]
            UINT32 hr = FormatString("0x%X", this);
        case Property.HResultValue & 0x10000000:
            [ Local.Description = this.ToString ]
            NTSTATUS BENTStatus;
        default:
            [ Local.Description = Property.HResultValue & 0x80000000 ? (Property.HResultValue & 0x20000000) ? "Customer Defined" : ((Property.HResultValue & 0x07FF0000) == 0x00070000 ? WinErrorCodeNameTable(Property.HResultValue & 0x0000FFFF) : HResultErrorCodeNameTable(Property.HResultValue)) : "Success" ]
            switch(ByteOrder)
            {
                case BigEndian:
                    _struct BEHResult
                    {
                        UINT32 S:1 = FormatString("        (%s) %s", this.ToBitString, this ? "Failure" : "Success");
                        UINT32 R:1 = FormatString("        (%s) Reserved", this.ToBitString);
                        UINT32 C:1 = FormatString("        (%s) %s", this.ToBitString, this ? "Customer-defined" : "Microsoft-defined");
                        UINT32 N:1 = FormatString("        (%s) %s", this.ToBitString, this ? "NTSTATUS" : "Not NTSTATUS");
                        UINT32 X:1 = FormatString("        (%s) Reserved", this.ToBitString);
                        UINT32 Facility:11 = FormatString(" (%s) %s", this.ToBitString, HResultFacilityTable(this));
                        UINT32 Code:16 = FormatString("     (%s) %s", this.ToBitString, (Property.HResultValue & 0x20000000) ? "Customer Defined" : ((Property.HResultValue & 0x07FF0000) == 0x00070000 ? WinErrorCodeTable( this ) : HResultErrorCodeTable(Property.HResultValue)));
                    }
                default:
                    _struct LEHResult
                    {
                        UINT32 Code:16 = FormatString("     (%s) %s", this.ToBitString, (Property.HResultValue & 0x20000000) ? "Customer Defined" : ((Property.HResultValue & 0x07FF0000) == 0x00070000 ? WinErrorCodeTable( this ) : HResultErrorCodeTable(Property.HResultValue)));
                        UINT32 Facility:11 = FormatString(" (%s) %s", this.ToBitString, HResultFacilityTable(this));
                        UINT32 X:1 = FormatString("        (%s) Reserved", this.ToBitString);
                        UINT32 N:1 = FormatString("        (%s) %s", this.ToBitString, this ? "NTSTATUS" : "Not NTSTATUS");
                        UINT32 C:1 = FormatString("        (%s) %s", this.ToBitString, this ? "Customer-defined" : "Microsoft-defined");
                        UINT32 R:1 = FormatString("        (%s) Reserved", this.ToBitString);
                        UINT32 S:1 = FormatString("        (%s) %s", this.ToBitString, this ? "Failure" : "Success");
                    }
            };
    }
}

//WPD Parser
[RegisterBefore(NetEvent.UserData, MicrosoftWindowsWPDAPI, "{31569DCF-9C6F-4B8E-843A-B7C1CC7FFCBA}")]
[Property.wpderror = 0]
Protocol WPDAPI = FormatString("%s", Property.OperationSummary)
{
    [BuildConversationWithParent, conversation.ConversationDescription = ""]
    switch(property.EventId)
    {
        case 100: //Request
            [Property.OperationSummary = FormatString("Sending  Req :%s", 
                                        WPDPropertyKeyTable(GUID(FrameData, Offset, true),  UINT32(FrameData, Offset+GUIDSizeInBytes)));]
            _struct 
            {
                // Structure of WPDAPIRequest:
                // a. Command Category                        : GUID   (16 bytes)
                // b. Command ID                              : UINT32 (4 bytes)
                // c. Size of serialized data                 : UINT32 (4 bytes)
                // d. Serialized data
                //    d.1: WPD Serializer wraps up the IPortableDeviceValues inside a PropVariant
                //         We do not want to display this level of indirection. So we can skip this detail.
                //         PropVariant.vt                     : UINT32 (4 bytes)
                //         GUID ClsId of IPortableDeviceValues: GUID   (16 bytes)
                WPDGUID RequestCommandCategory;
                UINT32  RequestCommandID;
                [FrameOffset = Offset + 4 + 4 + GUIDSizeInBytes]
                
                // After skipping these, we can parse the actual IPortableDeviceValues structure
                IPortableDeviceValues DataSentToDriver;
            }
        case 101: //Response
            [Property.OperationSummary = FormatString("Received Resp:%-57s HR=%s", WPDPropertyKeyTable(GUID(FrameData, Offset, true), UINT32(FrameData, Offset+GUIDSizeInBytes)),
                                                            ResponseHrFromWPDDriver.ToString)]
            _struct  
            {
                // Structure of WPDAPIResponse:
                // a. Command Category                        : GUID   (16 bytes)
                // b. Command ID                              : UINT32 (4 bytes)
                // c. HResult of the previous WPDAPI Operation: WPDHR  (4 bytes)
                // d. Size of serialized data                 : UINT32 (4 bytes)
                // e. Serialized data
                //    e.1: WPD Serializer wraps up the IPortableDeviceValues inside a PropVariant
                //         We do not want to display this level of indirection. So we can skip this detail.
                //         PropVariant.vt                     : UINT32 (4 bytes)
                //         GUID ClsId of IPortableDeviceValues: GUID   (16 bytes)

                WPDGUID ResponseCommandCategory;
                UINT32  ResponseCommandID;
                WPDHR ResponseHrFromWPDDriver;
                switch
                {
                    case (Property.HResultValue != 0): // Check if did not receive S_OK
                      ReportWPDError(ResponseHrFromWPDDriver.ToString) WPDAPIResponseNotOK;
                }
                [FrameOffset = Offset + 4 + 4 + GUIDSizeInBytes]

                // After skipping the above, we can parse the actual IPortableDeviceValues structure
                IPortableDeviceValues DataReceivedFromDriver;
            }
    }
}

// PropVariant structure with VTs as used in WPD
struct PropVariant = FormatString("%s %s",PropVariantVT.ToString, Property.PropVariantValueStr)
{ 
    UINT32 PropVariantVT = FormatString("[%-10s]", WPDPropVariantTypesTable(this));
    // Used as an argument for Table WPDPropertyValues() and useful only for simple types.
    [Property.PropVariantValue = this;] 
    switch(PropVariantVT)
    {
        case VT_I1:   [Property.PropVariantValueStr=this.ToString] INT8   VT_I1;
        case VT_I2:   [Property.PropVariantValueStr=this.ToString] INT16  VT_I2;
        case VT_I4:   [Property.PropVariantValueStr=this.ToString] INT32  VT_I4;
        case VT_I8:   [Property.PropVariantValueStr=this.ToString] INT64  VT_I8;
        case VT_UI1:  [Property.PropVariantValueStr=this.ToString] UINT8  VT_UI1;
        case VT_UI2:  [Property.PropVariantValueStr=this.ToString] UINT16 VT_UI2;
        case VT_UI4:  [Property.PropVariantValueStr=this.ToString] UINT32 VT_UI4;
        case VT_UI8:  [Property.PropVariantValueStr=this.ToString] UINT64 VT_UI8;
        case VT_INT:  [Property.PropVariantValueStr=this.ToString] INT32  VT_INT;  // Equivalent to VT_I4
        case VT_UINT: [Property.PropVariantValueStr=this.ToString] UINT32 VT_UINT; // Equivalent to VT_UI4
        case VT_R4:   [Property.PropVariantValueStr=this.ToString] float  VT_R4; 
        case VT_R8:   [Property.PropVariantValueStr=this.ToString] double VT_R8; 

        case VT_DATE: [Property.PropVariantValueStr]               UINT64 VT_DATE; //64 bit floating point number in oleaut format
        case VT_BOOL: [Property.PropVariantValueStr=this.ToString] VARIANTBOOL VT_BOOL;       //WORD(16 bit unsigned int)
        case VT_ERROR:[Property.PropVariantValueStr=this.ToString] WPDHR VT_ERROR; //DWORD(32 bits unsigned int)

        case VT_BSTR:
        case VT_LPWSTR:
            [Property.PropVariantValueStr = VT_LPWSTRString.ToString]
            struct VT_LPWSTRString = FormatString("%s", String.ToString)
            {
                UINT32 BYTECount;
                UnicodeString(BYTECount/2) String;  //UNICODE CHAR SIZE = 2
            }

        case VT_CLSID:
            [Property.PropVariantValueStr = WpdGuid.ToString]
            WPDGUID WpdGuid;

        case VT_FILETIME:
            [Property.PropVariantValueStr = FileTime.ToString]
            FILETIME FileTime;

        case VT_DISPATCH:
        case VT_UNKNOWN: //Interface
            [Property.PropVariantValueStr = Property.wpderror ? Property._parserErrorMessage
                                        :InterfaceID.ToString + FormatString(" (%d Elements)",Property.ItemCount)]
            _struct 
            {
                GUID(true) InterfaceID = FormatString("%s", WPDInterfaceGUIDsTable(this));
                switch (InterfaceID) 
                {
                    case CLSID_PortableDeviceValues               : 
                        [Property.ItemCount = IPortableDeviceValues.ElementCount] 
                        IPortableDeviceValues IPortableDeviceValues;
                    case CLSID_PortableDevicePropVariantCollection: 
                        [Property.ItemCount = IPortableDevicePropVariantCollection.ElementCount] 
                        IPortableDevicePropVariantCollection IPortableDevicePropVariantCollection;
                    case CLSID_PortableDeviceKeyCollection        : 
                        [Property.ItemCount = IPortableDeviceKeyCollection.ElementCount] 
                        IPortableDeviceKeyCollection IPortableDeviceKeyCollection;
                    case CLSID_PortableDeviceValuesCollection     : 
                        [Property.ItemCount = IPortableDeviceValuesCollection.ElementCount] 
                        IPortableDeviceValuesCollection IPortableDeviceValuesCollection;
                    default: 
                        _struct
                        {
                            Blob( FrameLength - Offset ) RemainingUnparsedDataBlob;
                            [Property._parserErrorMessage="Unexpected WPD Interface GUID:" + WPDInterfaceGUIDsTable(InterfaceID)]
                            ReportWPDError(Property._parserErrorMessage) BadInterfaceID;
                        }
                }
            }
                
        case (            VT_VECTOR | VT_UI1):
        case (VT_BYREF  | VT_VECTOR | VT_UI1):
            [Property.PropVariantValueStr = FormatString("(%d Elements in Array)", ArraySize)]
            _struct
            {
                UINT32 ArraySize;
                UINT8  Array[ArraySize];
            }
        default:
            [Property.PropVariantValueStr = FormatString("Unsupported VT: %s",PropVariantVT.ToString)]
            _struct
            {
                Blob( FrameLength - Offset ) RemainingUnparsedDataBlob;
                ReportWPDError( "Unsupported VT:" + PropVariantVT.ToString) BadVT;
            }
    }
}

struct IPortableDeviceValues = FormatString ("%d KeyValuePairs", ElementCount)
{
    UINT32       ElementCount;
    KeyValuePair KeyValPair[ElementCount];
}

struct IPortableDevicePropVariantCollection = FormatString ("%d Elements", ElementCount)
{
    UINT32       ElementCount;
    PropVariant  PropVariantElement[ElementCount];
}

struct IPortableDeviceKeyCollection = FormatString ("%d Keys", ElementCount)
{
    UINT32       ElementCount;
    PROPERTYKEY  PropertyKey[ElementCount];
}

struct IPortableDeviceValuesCollection = FormatString ("%d Elements", ElementCount)
{
    UINT32  ElementCount;
    _struct PDValue [ElementCount]
    {
        // This will always be IPortableDeviceValue clsid. So skip it
        [FrameOffset = Offset + GUIDSizeInBytes]
        IPortableDeviceValues IPortableDeviceValues;        
    }
}

// Display "Key = Value"
struct KeyValuePair = FormatString("%-65s = %s", PropertyKey.ToString, 
        WPDPropertyHasValues(PropertyKey.fmtid, PropertyKey.pid)?
            Value.PropVariantVT.ToString + " " +WPDPropertyValues(PropertyKey.fmtid, PropertyKey.pid,Property.PropVariantValue):
            Value.ToString)
{
    PROPERTYKEY PropertyKey; 
    PropVariant Value;
}

struct PROPERTYKEY = FormatString("%s", WPDPropertyKeyTable(this.fmtid, this.pid))
{
    WPDGUID fmtid;
    UINT32  pid;
}

[Property.wpderror = true,
 Property.ETLWPDErrorMessage = ErrorMessage] 
struct ReportWPDError(ErrorMessage) = FormatString("%s", Property.ETLWPDErrorMessage)
{}
