In Windows these are typedef'd together so code that defines a GUID and passes that in as IID compiles just fine. However on non-Windows platforms that fails as _GUID and _IID are two separate structs.
We should either define GUID and IID separately for Windows or use typedef on non-Windows platforms. Given the benefits of having intercom::GUID and intercom::IID be compatible with Windows GUID type, we should probably just typedef these on non-Windows platforms.