Win8 M3 (7989) findings relevant to Managed .net & WPF/SL developers

Discussion in 'Windows 8' started by SilverlightWPF, Jun 19, 2011.

  1. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #141 NaiveUser, Aug 19, 2011
    Last edited by a moderator: Apr 20, 2017
    last part about comdlg32.pdb

    ActionSpaceFlow ? AppSpace ? ApplicationTile ? Flyout ?
    Code:
    struct IActionSpaceFlow // 0x8
    {
        struct IActionSpaceFlowVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IActionSpaceFlowVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct IActionSpaceFlow*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IActionSpaceFlow*); // +0x8(0x8)
        ULONG (*Release)(struct IActionSpaceFlow*); // +0x10(0x8)
        HRESULT (*StartFlow)(struct IActionSpaceFlow*, struct HWND__*); // +0x18(0x8)
    };
    struct IActivationFactory : public IInspectable // 0x8
    {
        virtual HRESULT ActivateInstance(struct IInspectable**) = 0;
        void IActivationFactory(struct IActivationFactory&);
        void IActivationFactory(void);
        struct IActivationFactory& operator=(struct IActivationFactory&);
    };
    struct IApplicationStreamDownload // 0x8
    {
        struct IApplicationStreamDownloadVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IApplicationStreamDownloadVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct IApplicationStreamDownload*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IApplicationStreamDownload*); // +0x8(0x8)
        ULONG (*Release)(struct IApplicationStreamDownload*); // +0x10(0x8)
        HRESULT (*Download)(struct IApplicationStreamDownload*); // +0x18(0x8)
    };
    struct IApplicationTileInformation // 0x8
    {
        struct IApplicationTileInformationVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IApplicationTileInformationVtbl // 0x58
    {
        HRESULT (*QueryInterface)(struct IApplicationTileInformation*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IApplicationTileInformation*); // +0x8(0x8)
        ULONG (*Release)(struct IApplicationTileInformation*); // +0x10(0x8)
        HRESULT (*Initialize)(struct IApplicationTileInformation*, WCHAR*, WCHAR*, WCHAR*, WCHAR*, int); // +0x18(0x8)
        HRESULT (*InitializeInstallationCompleteTile)(struct IApplicationTileInformation*, WCHAR*, HRESULT); // +0x20(0x8)
        HRESULT (*InitializeWithPropertyStore)(struct IApplicationTileInformation*, struct IPropertyStore*); // +0x28(0x8)
        HRESULT (*GetApplicationId)(struct IApplicationTileInformation*, WORD**); // +0x30(0x8)
        HRESULT (*VerifyInformation)(struct IApplicationTileInformation*); // +0x38(0x8)
        HRESULT (*Revert)(struct IApplicationTileInformation*); // +0x40(0x8)
        HRESULT (*Commit)(struct IApplicationTileInformation*); // +0x48(0x8)
        HRESULT (*GetExtensionDomElement)(struct IApplicationTileInformation*, struct IXMLDOMElement**); // +0x50(0x8)
    };
    struct IAppResolverNotify // 0x8
    {
        struct IAppResolverNotifyVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppResolverNotifyVtbl // 0x30
    {
        HRESULT (*QueryInterface)(struct IAppResolverNotify*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppResolverNotify*); // +0x8(0x8)
        ULONG (*Release)(struct IAppResolverNotify*); // +0x10(0x8)
        HRESULT (*RegisterNotification)(struct IAppResolverNotify*, DWORD, long, struct _ITEMIDLIST*, int); // +0x18(0x8)
        HRESULT (*UnregisterNotification)(struct IAppResolverNotify*, DWORD); // +0x20(0x8)
        HRESULT (*AddHotkey)(struct IAppResolverNotify*, WORD, struct _ITEMIDLIST*, struct _ITEMIDLIST*, int); // +0x28(0x8)
    };
    struct IAppsFolderItemState // 0x8
    {
        struct IAppsFolderItemStateVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppsFolderItemStateVtbl // 0x38
    {
        HRESULT (*QueryInterface)(struct IAppsFolderItemState*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppsFolderItemState*); // +0x8(0x8)
        ULONG (*Release)(struct IAppsFolderItemState*); // +0x10(0x8)
        HRESULT (*MoveItem)(struct IAppsFolderItemState*, struct IShellItem*, struct IShellItem*, enum APP_ITEM_STATE_MODIFY_FLAGS); // +0x18(0x8)
        HRESULT (*ChangeItemView)(struct IAppsFolderItemState*, struct IShellItem*, DWORD); // +0x20(0x8)
        HRESULT (*ChangeItemTileState)(struct IAppsFolderItemState*, struct IShellItem*, DWORD); // +0x28(0x8)
        HRESULT (*Commit)(struct IAppsFolderItemState*); // +0x30(0x8)
    };
    struct IAppSpaceImage // 0x8
    {
        struct IAppSpaceImageVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppSpaceImageUpdate // 0x8
    {
        struct IAppSpaceImageUpdateVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppSpaceImageUpdateVtbl // 0x28
    {
        HRESULT (*QueryInterface)(struct IAppSpaceImageUpdate*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpaceImageUpdate*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpaceImageUpdate*); // +0x10(0x8)
        HRESULT (*SetBitmap)(struct IAppSpaceImageUpdate*, struct ISharedBitmap*); // +0x18(0x8)
        HRESULT (*UpdatePath)(struct IAppSpaceImageUpdate*, WCHAR*, enum TILE_IMAGE_BASE_PATH); // +0x20(0x8)
    };
    struct IAppSpaceImageVtbl // 0x48
    {
        HRESULT (*QueryInterface)(struct IAppSpaceImage*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpaceImage*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpaceImage*); // +0x10(0x8)
        DWORD (*GetID)(struct IAppSpaceImage*); // +0x18(0x8)
        enum TILE_IMAGE_BASE_PATH (*GetImageBase)(struct IAppSpaceImage*); // +0x20(0x8)
        HRESULT (*GetPath)(struct IAppSpaceImage*, enum TILE_IMAGE_BASE_PATH*, int*, WORD**); // +0x28(0x8)
        HRESULT (*GetBitmap)(struct IAppSpaceImage*, struct ISharedBitmap**); // +0x30(0x8)
        HRESULT (*GetOpacity)(struct IAppSpaceImage*, BYTE*); // +0x38(0x8)
        HRESULT (*GetAccessibilityText)(struct IAppSpaceImage*, WORD**); // +0x40(0x8)
    };
    struct IAppSpaceLoadSink // 0x8
    {
        struct IAppSpaceLoadSinkVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppSpaceLoadSinkVtbl // 0x28
    {
        HRESULT (*QueryInterface)(struct IAppSpaceLoadSink*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpaceLoadSink*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpaceLoadSink*); // +0x10(0x8)
        HRESULT (*OnLoadSuccess)(struct IAppSpaceLoadSink*, struct IAppSpace*, WCHAR*, int); // +0x18(0x8)
        HRESULT (*OnLoadFailure)(struct IAppSpaceLoadSink*, WCHAR*, DWORD, int, HRESULT); // +0x20(0x8)
    };
    struct IAppSpaceRegion // 0x8
    {
        struct IAppSpaceRegionVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppSpaceRegionVtbl // 0x28
    {
        HRESULT (*QueryInterface)(struct IAppSpaceRegion*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpaceRegion*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpaceRegion*); // +0x10(0x8)
        DWORD (*GetID)(struct IAppSpaceRegion*); // +0x18(0x8)
        HRESULT (*GetColor)(struct IAppSpaceRegion*, ULONG*, BYTE*); // +0x20(0x8)
    };
    struct IAppSpaceText // 0x8
    {
        struct IAppSpaceTextVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppSpaceTextVtbl // 0x40
    {
        HRESULT (*QueryInterface)(struct IAppSpaceText*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpaceText*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpaceText*); // +0x10(0x8)
        DWORD (*GetID)(struct IAppSpaceText*); // +0x18(0x8)
        HRESULT (*GetLanguage)(struct IAppSpaceText*, WORD**); // +0x20(0x8)
        HRESULT (*GetDWriteTextLayout)(struct IAppSpaceText*, WCHAR*, DWORD, DWORD, DWORD, DWORD, DWORD, struct _GUID*, void**); // +0x28(0x8)
        HRESULT (*GetAccessibilityText)(struct IAppSpaceText*, WORD**); // +0x30(0x8)
        HRESULT (*GetForegroundColor)(struct IAppSpaceText*, ULONG*); // +0x38(0x8)
    };
    struct IAppSpaceVtbl // 0x78
    {
        HRESULT (*QueryInterface)(struct IAppSpace*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpace*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpace*); // +0x10(0x8)
        HRESULT (*GetTemplateName)(struct IAppSpace*, WORD**); // +0x18(0x8)
        HRESULT (*GetLaunchParameters)(struct IAppSpace*, WORD**); // +0x20(0x8)
        HRESULT (*GetNotificationID)(struct IAppSpace*, DWORD*); // +0x28(0x8)
        HRESULT (*GetImageCount)(struct IAppSpace*, DWORD*); // +0x30(0x8)
        HRESULT (*GetTextCount)(struct IAppSpace*, DWORD*); // +0x38(0x8)
        HRESULT (*GetRegionCount)(struct IAppSpace*, DWORD*); // +0x40(0x8)
        HRESULT (*GetImage)(struct IAppSpace*, DWORD, struct IAppSpaceImage**); // +0x48(0x8)
        HRESULT (*GetText)(struct IAppSpace*, DWORD, struct IAppSpaceText**); // +0x50(0x8)
        HRESULT (*GetRegion)(struct IAppSpace*, DWORD, struct IAppSpaceRegion**); // +0x58(0x8)
        HRESULT (*GetBackgroundColor)(struct IAppSpace*, ULONG*); // +0x60(0x8)
        HRESULT (*GetExpiry)(struct IAppSpace*, struct _FILETIME*); // +0x68(0x8)
        HRESULT (*GetCloudDPIAndTheme)(struct IAppSpace*, DWORD*, enum TILE_THEME_SELECTOR*); // +0x70(0x8)
    };
    struct IAppSpaceXMLParser // 0x8
    {
        struct IAppSpaceXMLParserVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppSpaceXMLParserVtbl // 0x30
    {
        HRESULT (*QueryInterface)(struct IAppSpaceXMLParser*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppSpaceXMLParser*); // +0x8(0x8)
        ULONG (*Release)(struct IAppSpaceXMLParser*); // +0x10(0x8)
        HRESULT (*Initialize)(struct IAppSpaceXMLParser*, WCHAR*, enum TILE_DUI_TEMPLATE, enum TILE_LAYOUT_SIZE, DWORD, enum TILE_THEME_SELECTOR, DWORD, enum TILE_THEME_SELECTOR, ULONG, ULONG); // +0x18(0x8)
        HRESULT (*ParseXML)(struct IAppSpaceXMLParser*, DWORD, struct IStream*, struct _FILETIME, struct IAppSpace**); // +0x20(0x8)
        HRESULT (*GetErrorLocation)(struct IAppSpaceXMLParser*, DWORD*, DWORD*); // +0x28(0x8)
    };
    struct IAppUpdate // 0x8
    {
        struct IAppUpdateVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IAppUpdateVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct IAppUpdate*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IAppUpdate*); // +0x8(0x8)
        ULONG (*Release)(struct IAppUpdate*); // +0x10(0x8)
        HRESULT (*GetAppUpdateInfo)(struct IAppUpdate*, struct APPUPDATEINFO*); // +0x18(0x8)
    };
    struct IFlyoutVtbl // 0x38
    {
        HRESULT (*QueryInterface)(struct IFlyout*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IFlyout*); // +0x8(0x8)
        ULONG (*Release)(struct IFlyout*); // +0x10(0x8)
        HRESULT (*ShowFlyout)(struct IFlyout*, enum TRAYORIENTATION, struct tagRECT*); // +0x18(0x8)
        HRESULT (*HideFlyout)(struct IFlyout*); // +0x20(0x8)
        HRESULT (*ShowTooltip)(struct IFlyout*, enum TRAYORIENTATION, struct tagRECT*); // +0x28(0x8)
        HRESULT (*HideTooltip)(struct IFlyout*); // +0x30(0x8)
    };
    struct IFlyoutWindowActivationContextPriv // 0x8
    {
        struct IFlyoutWindowActivationContextPrivVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IFlyoutWindowActivationContextPrivVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct IFlyoutWindowActivationContextPriv*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IFlyoutWindowActivationContextPriv*); // +0x8(0x8)
        ULONG (*Release)(struct IFlyoutWindowActivationContextPriv*); // +0x10(0x8)
        HRESULT (*SetHostedWindow)(struct IFlyoutWindowActivationContextPriv*, struct HWND__*, struct IInputObject*); // +0x18(0x8)
    };
    struct IHostedWindowActivationContextPriv // 0x8
    {
        struct IHostedWindowActivationContextPrivVtbl* lpVtbl; // +0x0(0x8)
    };
    struct IHostedWindowActivationContextPrivVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct IHostedWindowActivationContextPriv*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct IHostedWindowActivationContextPriv*); // +0x8(0x8)
        ULONG (*Release)(struct IHostedWindowActivationContextPriv*); // +0x10(0x8)
        HRESULT (*SetHostedWindow)(struct IHostedWindowActivationContextPriv*, struct HWND__*, struct IInputObject*); // +0x18(0x8)
    };
    
    Tiles, Keystone ? Downspace ? Tickle ?
    Code:
    struct ITileCacheAccessorVtbl // 0x28
    {
        HRESULT (*QueryInterface)(struct ITileCacheAccessor*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCacheAccessor*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCacheAccessor*); // +0x10(0x8)
        HRESULT (*GetWriter)(struct ITileCacheAccessor*, struct _GUID*, void**); // +0x18(0x8)
        HRESULT (*GetReader)(struct ITileCacheAccessor*, struct _GUID*, void**); // +0x20(0x8)
    };
    struct ITileCacheAppSpaceVtbl // 0xe8
    {
        HRESULT (*QueryInterface)(struct ITileCacheAppSpace*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCacheAppSpace*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCacheAppSpace*); // +0x10(0x8)
        DWORD (*GetVersion)(struct ITileCacheAppSpace*); // +0x18(0x8)
        DWORD (*GetDPI)(struct ITileCacheAppSpace*); // +0x20(0x8)
        HRESULT (*GetFilePath)(struct ITileCacheAppSpace*, WORD**); // +0x28(0x8)
        HRESULT (*PerformReorder)(struct ITileCacheAppSpace*, struct _GUID*, void**); // +0x30(0x8)
        HRESULT (*GetEntryID)(struct ITileCacheAppSpace*, WCHAR*, DWORD*); // +0x38(0x8)
        HRESULT (*GetOriginalThemeAndDPI)(struct ITileCacheAppSpace*, DWORD, enum TILE_THEME_SELECTOR*, DWORD*); // +0x40(0x8)
        HRESULT (*ValidateEntry)(struct ITileCacheAppSpace*, DWORD); // +0x48(0x8)
        HRESULT (*InvalidateEntry)(struct ITileCacheAppSpace*, DWORD); // +0x50(0x8)
        HRESULT (*HasValidData)(struct ITileCacheAppSpace*, DWORD, int*); // +0x58(0x8)
        HRESULT (*GetRawHeader)(struct ITileCacheAppSpace*, DWORD, BYTE**, DWORD*); // +0x60(0x8)
        HRESULT (*GetRawData)(struct ITileCacheAppSpace*, DWORD, BYTE**, DWORD*); // +0x68(0x8)
        HRESULT (*SetRawData)(struct ITileCacheAppSpace*, DWORD, BYTE*, DWORD); // +0x70(0x8)
        HRESULT (*PreLoad)(struct ITileCacheAppSpace*, DWORD, DWORD*); // +0x78(0x8)
        HRESULT (*PurgeNotificationData)(struct ITileCacheAppSpace*, DWORD); // +0x80(0x8)
        HRESULT (*AddEntry)(struct ITileCacheAppSpace*, WCHAR*, DWORD*); // +0x88(0x8)
        HRESULT (*SetAltText)(struct ITileCacheAppSpace*, DWORD, WCHAR*); // +0x90(0x8)
        HRESULT (*GetAltText)(struct ITileCacheAppSpace*, DWORD, WORD**); // +0x98(0x8)
        HRESULT (*SetLaunchParameter)(struct ITileCacheAppSpace*, DWORD, WCHAR*); // +0xa0(0x8)
        HRESULT (*GetLaunchParameter)(struct ITileCacheAppSpace*, DWORD, WORD**); // +0xa8(0x8)
        HRESULT (*GetBitmap)(struct ITileCacheAppSpace*, DWORD, DWORD*, DWORD*, struct HBITMAP__**, int*); // +0xb0(0x8)
        HRESULT (*SetDefaultAppSpace)(struct ITileCacheAppSpace*, DWORD, int); // +0xb8(0x8)
        HRESULT (*GetDefaultAppSpace)(struct ITileCacheAppSpace*, DWORD, int*); // +0xc0(0x8)
        HRESULT (*SetNotificationID)(struct ITileCacheAppSpace*, DWORD, DWORD); // +0xc8(0x8)
        HRESULT (*GetNotificationID)(struct ITileCacheAppSpace*, DWORD, DWORD*); // +0xd0(0x8)
        HRESULT (*SetExpiryTime)(struct ITileCacheAppSpace*, DWORD, struct _FILETIME); // +0xd8(0x8)
        HRESULT (*GetExpiryTime)(struct ITileCacheAppSpace*, DWORD, struct _FILETIME*); // +0xe0(0x8)
    };
    
    struct ITileCacheCleanupVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct ITileCacheCleanup*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCacheCleanup*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCacheCleanup*); // +0x10(0x8)
        HRESULT (*DeleteCacheFile)(struct ITileCacheCleanup*); // +0x18(0x8)
    };
    struct ITileCacheKeystoneVtbl // 0x108
    {
        HRESULT (*QueryInterface)(struct ITileCacheKeystone*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCacheKeystone*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCacheKeystone*); // +0x10(0x8)
        DWORD (*GetVersion)(struct ITileCacheKeystone*); // +0x18(0x8)
        DWORD (*GetDPI)(struct ITileCacheKeystone*); // +0x20(0x8)
        HRESULT (*GetFilePath)(struct ITileCacheKeystone*, WORD**); // +0x28(0x8)
        HRESULT (*PerformReorder)(struct ITileCacheKeystone*, struct _GUID*, void**); // +0x30(0x8)
        HRESULT (*GetEntryID)(struct ITileCacheKeystone*, WCHAR*, DWORD*); // +0x38(0x8)
        HRESULT (*GetOriginalThemeAndDPI)(struct ITileCacheKeystone*, DWORD, enum TILE_THEME_SELECTOR*, DWORD*); // +0x40(0x8)
        HRESULT (*ValidateEntry)(struct ITileCacheKeystone*, DWORD); // +0x48(0x8)
        HRESULT (*InvalidateEntry)(struct ITileCacheKeystone*, DWORD); // +0x50(0x8)
        HRESULT (*HasValidData)(struct ITileCacheKeystone*, DWORD, int*); // +0x58(0x8)
        HRESULT (*GetRawHeader)(struct ITileCacheKeystone*, DWORD, BYTE**, DWORD*); // +0x60(0x8)
        HRESULT (*GetRawData)(struct ITileCacheKeystone*, DWORD, BYTE**, DWORD*); // +0x68(0x8)
        HRESULT (*SetRawData)(struct ITileCacheKeystone*, DWORD, BYTE*, DWORD); // +0x70(0x8)
        HRESULT (*PreLoad)(struct ITileCacheKeystone*, DWORD, DWORD*); // +0x78(0x8)
        HRESULT (*PurgeNotificationData)(struct ITileCacheKeystone*, DWORD); // +0x80(0x8)
        HRESULT (*AddDesktopEntry)(struct ITileCacheKeystone*, WCHAR*, DWORD*); // +0x88(0x8)
        HRESULT (*AddImmersiveEntry)(struct ITileCacheKeystone*, WCHAR*, DWORD*); // +0x90(0x8)
        HRESULT (*AddImmersiveEntryWithOverlay)(struct ITileCacheKeystone*, WCHAR*, DWORD*); // +0x98(0x8)
        HRESULT (*EntryIsSizedForOverlay)(struct ITileCacheKeystone*, DWORD, int*); // +0xa0(0x8)
        HRESULT (*SetAltText)(struct ITileCacheKeystone*, DWORD, WCHAR*); // +0xa8(0x8)
        HRESULT (*GetAltText)(struct ITileCacheKeystone*, DWORD, WORD**); // +0xb0(0x8)
        HRESULT (*GetLogoBitmap)(struct ITileCacheKeystone*, DWORD, DWORD*, DWORD*, struct HBITMAP__**, int*); // +0xb8(0x8)
        HRESULT (*GetOverlayBitmap)(struct ITileCacheKeystone*, DWORD, DWORD*, DWORD*, struct HBITMAP__**, int*); // +0xc0(0x8)
        HRESULT (*SetKeystoneColors)(struct ITileCacheKeystone*, DWORD, ULONG, ULONG); // +0xc8(0x8)
        HRESULT (*GetKeystoneColors)(struct ITileCacheKeystone*, DWORD, ULONG*, ULONG*); // +0xd0(0x8)
        HRESULT (*SetBadgeData)(struct ITileCacheKeystone*, DWORD, enum KEYSTONE_BADGE_TYPE, DWORD, DWORD); // +0xd8(0x8)
        HRESULT (*GetBadgeData)(struct ITileCacheKeystone*, DWORD, enum KEYSTONE_BADGE_TYPE*, DWORD*, DWORD*); // +0xe0(0x8)
        HRESULT (*SetExpiryTime)(struct ITileCacheKeystone*, DWORD, struct _FILETIME); // +0xe8(0x8)
        HRESULT (*GetExpiryTime)(struct ITileCacheKeystone*, DWORD, struct _FILETIME*); // +0xf0(0x8)
        HRESULT (*ValidateLogo)(struct ITileCacheKeystone*, DWORD); // +0xf8(0x8)
        HRESULT (*ValidateOverlay)(struct ITileCacheKeystone*, DWORD); // +0x100(0x8)
    };
    struct ITileCacheManagerVtbl // 0x68
    {
        HRESULT (*QueryInterface)(struct ITileCacheManager*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCacheManager*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCacheManager*); // +0x10(0x8)
        int (*GetCacheEnabled)(struct ITileCacheManager*); // +0x18(0x8)
        HRESULT (*SetCacheEnabled)(struct ITileCacheManager*, int); // +0x20(0x8)
        HRESULT (*GetAppSpaceCacheWriter)(struct ITileCacheManager*, struct ITileCacheAppSpace**); // +0x28(0x8)
        HRESULT (*GetAppSpaceCacheReader)(struct ITileCacheManager*, struct ITileCacheAppSpace**); // +0x30(0x8)
        HRESULT (*GetDefaultAppSpaceCacheWriter)(struct ITileCacheManager*, struct ITileCacheAppSpace**); // +0x38(0x8)
        HRESULT (*GetDefaultAppSpaceCacheReader)(struct ITileCacheManager*, struct ITileCacheAppSpace**); // +0x40(0x8)
        HRESULT (*GetKeystoneCacheWriter)(struct ITileCacheManager*, struct ITileCacheKeystone**); // +0x48(0x8)
        HRESULT (*GetKeystoneCacheReader)(struct ITileCacheManager*, struct ITileCacheKeystone**); // +0x50(0x8)
        HRESULT (*GetTickleCacheWriter)(struct ITileCacheManager*, struct ITileCacheTickle**); // +0x58(0x8)
        HRESULT (*GetTickleCacheReader)(struct ITileCacheManager*, struct ITileCacheTickle**); // +0x60(0x8)
    };
    struct ITileCachePreLoadSinkVtbl // 0x28
    {
        HRESULT (*QueryInterface)(struct ITileCachePreLoadSink*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCachePreLoadSink*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCachePreLoadSink*); // +0x10(0x8)
        HRESULT (*CachePreLoadResult)(struct ITileCachePreLoadSink*, DWORD, struct TILE_CACHE_RESULT*, enum TILE_SUBSCRIPTION_OPTIONS); // +0x18(0x8)
        HRESULT (*UpdateTileForTickleResult)(struct ITileCachePreLoadSink*, WCHAR*); // +0x20(0x8)
    };
    struct ITileCacheTickleVtbl // 0x118
    {
        HRESULT (*QueryInterface)(struct ITileCacheTickle*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCacheTickle*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCacheTickle*); // +0x10(0x8)
        DWORD (*GetVersion)(struct ITileCacheTickle*); // +0x18(0x8)
        DWORD (*GetDPI)(struct ITileCacheTickle*); // +0x20(0x8)
        HRESULT (*GetFilePath)(struct ITileCacheTickle*, WORD**); // +0x28(0x8)
        HRESULT (*PerformReorder)(struct ITileCacheTickle*, struct _GUID*, void**); // +0x30(0x8)
        HRESULT (*GetEntryID)(struct ITileCacheTickle*, WCHAR*, DWORD*); // +0x38(0x8)
        HRESULT (*GetOriginalThemeAndDPI)(struct ITileCacheTickle*, DWORD, enum TILE_THEME_SELECTOR*, DWORD*); // +0x40(0x8)
        HRESULT (*ValidateEntry)(struct ITileCacheTickle*, DWORD); // +0x48(0x8)
        HRESULT (*InvalidateEntry)(struct ITileCacheTickle*, DWORD); // +0x50(0x8)
        HRESULT (*HasValidData)(struct ITileCacheTickle*, DWORD, int*); // +0x58(0x8)
        HRESULT (*GetRawHeader)(struct ITileCacheTickle*, DWORD, BYTE**, DWORD*); // +0x60(0x8)
        HRESULT (*GetRawData)(struct ITileCacheTickle*, DWORD, BYTE**, DWORD*); // +0x68(0x8)
        HRESULT (*SetRawData)(struct ITileCacheTickle*, DWORD, BYTE*, DWORD); // +0x70(0x8)
        HRESULT (*PreLoad)(struct ITileCacheTickle*, DWORD, DWORD*); // +0x78(0x8)
        HRESULT (*PurgeNotificationData)(struct ITileCacheTickle*, DWORD); // +0x80(0x8)
        HRESULT (*AddEntry)(struct ITileCacheTickle*, WCHAR*, DWORD*); // +0x88(0x8)
        HRESULT (*SetAltText)(struct ITileCacheTickle*, DWORD, DWORD, WCHAR*); // +0x90(0x8)
        HRESULT (*GetAltText)(struct ITileCacheTickle*, DWORD, DWORD, WORD**); // +0x98(0x8)
        HRESULT (*SetLaunchParameter)(struct ITileCacheTickle*, DWORD, DWORD, WCHAR*); // +0xa0(0x8)
        HRESULT (*GetLaunchParameter)(struct ITileCacheTickle*, DWORD, DWORD, WORD**); // +0xa8(0x8)
        HRESULT (*GetBitmap)(struct ITileCacheTickle*, DWORD, DWORD, DWORD*, DWORD*, struct HBITMAP__**, int*); // +0xb0(0x8)
        HRESULT (*SetNotificationID)(struct ITileCacheTickle*, DWORD, DWORD, DWORD); // +0xb8(0x8)
        HRESULT (*GetNotificationID)(struct ITileCacheTickle*, DWORD, DWORD, DWORD*); // +0xc0(0x8)
        HRESULT (*SetExpiryTime)(struct ITileCacheTickle*, DWORD, DWORD, struct _FILETIME); // +0xc8(0x8)
        HRESULT (*GetExpiryTime)(struct ITileCacheTickle*, DWORD, DWORD, struct _FILETIME*); // +0xd0(0x8)
        HRESULT (*ValidateIndex)(struct ITileCacheTickle*, DWORD, DWORD); // +0xd8(0x8)
        HRESULT (*InvalidateIndex)(struct ITileCacheTickle*, DWORD, DWORD); // +0xe0(0x8)
        HRESULT (*GetCurrentTickleIndex)(struct ITileCacheTickle*, DWORD, DWORD*); // +0xe8(0x8)
        HRESULT (*HasNextToShow)(struct ITileCacheTickle*, DWORD, int*); // +0xf0(0x8)
        HRESULT (*GetNextToShow)(struct ITileCacheTickle*, DWORD, DWORD*); // +0xf8(0x8)
        HRESULT (*GetNextToReplace)(struct ITileCacheTickle*, DWORD, DWORD*); // +0x100(0x8)
        HRESULT (*SetFreezeAutoTickle)(struct ITileCacheTickle*, DWORD, int); // +0x108(0x8)
        HRESULT (*GetFreezeAutoTickle)(struct ITileCacheTickle*, DWORD, int*); // +0x110(0x8)
    };
    struct ITileCacheVtbl // 0x88
    {
        HRESULT (*QueryInterface)(struct ITileCache*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileCache*); // +0x8(0x8)
        ULONG (*Release)(struct ITileCache*); // +0x10(0x8)
        DWORD (*GetVersion)(struct ITileCache*); // +0x18(0x8)
        DWORD (*GetDPI)(struct ITileCache*); // +0x20(0x8)
        HRESULT (*GetFilePath)(struct ITileCache*, WORD**); // +0x28(0x8)
        HRESULT (*PerformReorder)(struct ITileCache*, struct _GUID*, void**); // +0x30(0x8)
        HRESULT (*GetEntryID)(struct ITileCache*, WCHAR*, DWORD*); // +0x38(0x8)
        HRESULT (*GetOriginalThemeAndDPI)(struct ITileCache*, DWORD, enum TILE_THEME_SELECTOR*, DWORD*); // +0x40(0x8)
        HRESULT (*ValidateEntry)(struct ITileCache*, DWORD); // +0x48(0x8)
        HRESULT (*InvalidateEntry)(struct ITileCache*, DWORD); // +0x50(0x8)
        HRESULT (*HasValidData)(struct ITileCache*, DWORD, int*); // +0x58(0x8)
        HRESULT (*GetRawHeader)(struct ITileCache*, DWORD, BYTE**, DWORD*); // +0x60(0x8)
        HRESULT (*GetRawData)(struct ITileCache*, DWORD, BYTE**, DWORD*); // +0x68(0x8)
        HRESULT (*SetRawData)(struct ITileCache*, DWORD, BYTE*, DWORD); // +0x70(0x8)
        HRESULT (*PreLoad)(struct ITileCache*, DWORD, DWORD*); // +0x78(0x8)
        HRESULT (*PurgeNotificationData)(struct ITileCache*, DWORD); // +0x80(0x8)
    };
    struct ITileKeystoneMetadataVtbl // 0x40
    {
        HRESULT (*QueryInterface)(struct ITileKeystoneMetadata*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileKeystoneMetadata*); // +0x8(0x8)
        ULONG (*Release)(struct ITileKeystoneMetadata*); // +0x10(0x8)
        HRESULT (*GetAppID)(struct ITileKeystoneMetadata*, WORD**); // +0x18(0x8)
        HRESULT (*GetNotificationID)(struct ITileKeystoneMetadata*, DWORD*); // +0x20(0x8)
        HRESULT (*GetBadgeType)(struct ITileKeystoneMetadata*, enum KEYSTONE_BADGE_TYPE*); // +0x28(0x8)
        HRESULT (*GetBadgeNumber)(struct ITileKeystoneMetadata*, DWORD*); // +0x30(0x8)
        HRESULT (*GetBadgeOverlay)(struct ITileKeystoneMetadata*, WORD**, int*, WORD**); // +0x38(0x8)
    };
    struct ITileKeystoneXMLParserVtbl // 0x30
    {
        HRESULT (*QueryInterface)(struct ITileKeystoneXMLParser*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileKeystoneXMLParser*); // +0x8(0x8)
        ULONG (*Release)(struct ITileKeystoneXMLParser*); // +0x10(0x8)
        HRESULT (*Initialize)(struct ITileKeystoneXMLParser*, DWORD, enum TILE_THEME_SELECTOR); // +0x18(0x8)
        HRESULT (*ParseXML)(struct ITileKeystoneXMLParser*, WCHAR*, DWORD, struct IStream*, struct ITileKeystoneMetadata**); // +0x20(0x8)
        HRESULT (*GetErrorLocation)(struct ITileKeystoneXMLParser*, DWORD*, DWORD*); // +0x28(0x8)
    };
    struct ITileNotificationMonitorVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct ITileNotificationMonitor*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileNotificationMonitor*); // +0x8(0x8)
        ULONG (*Release)(struct ITileNotificationMonitor*); // +0x10(0x8)
        HRESULT (*SetResourceSelectors)(struct ITileNotificationMonitor*, DWORD, enum TILE_THEME_SELECTOR); // +0x18(0x8)
    };
    struct ITileRenderingDataBaseVtbl // 0x38
    {
        HRESULT (*QueryInterface)(struct ITileRenderingDataBase*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileRenderingDataBase*); // +0x8(0x8)
        ULONG (*Release)(struct ITileRenderingDataBase*); // +0x10(0x8)
        HRESULT (*GetAppId)(struct ITileRenderingDataBase*, WORD**); // +0x18(0x8)
        HRESULT (*GetShellItem)(struct ITileRenderingDataBase*, struct _GUID*, void**); // +0x20(0x8)
        HRESULT (*GetDisplayName)(struct ITileRenderingDataBase*, WORD**); // +0x28(0x8)
        HRESULT (*GetTileLayoutSize)(struct ITileRenderingDataBase*, enum TILE_LAYOUT_SIZE*); // +0x30(0x8)
    };
    struct ITileRenderingDataSinkVtbl // 0x38
    {
        HRESULT (*QueryInterface)(struct ITileRenderingDataSink*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileRenderingDataSink*); // +0x8(0x8)
        ULONG (*Release)(struct ITileRenderingDataSink*); // +0x10(0x8)
        HRESULT (*OnTileDataAvailable)(struct ITileRenderingDataSink*, struct ITileRenderingDataBase*); // +0x18(0x8)
        HRESULT (*OnTileRemoved)(struct ITileRenderingDataSink*, WCHAR*); // +0x20(0x8)
        HRESULT (*OnTileError)(struct ITileRenderingDataSink*, WCHAR*, HRESULT); // +0x28(0x8)
        HRESULT (*OnItemError)(struct ITileRenderingDataSink*, struct IShellItem*, HRESULT); // +0x30(0x8)
    };
    struct ITileRenderingDataVtbl // 0xb8
    {
        HRESULT (*QueryInterface)(struct ITileRenderingData*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileRenderingData*); // +0x8(0x8)
        ULONG (*Release)(struct ITileRenderingData*); // +0x10(0x8)
        HRESULT (*GetAppId)(struct ITileRenderingData*, WORD**); // +0x18(0x8)
        HRESULT (*GetShellItem)(struct ITileRenderingData*, struct _GUID*, void**); // +0x20(0x8)
        HRESULT (*GetDisplayName)(struct ITileRenderingData*, WORD**); // +0x28(0x8)
        HRESULT (*GetTileLayoutSize)(struct ITileRenderingData*, enum TILE_LAYOUT_SIZE*); // +0x30(0x8)
        HRESULT (*GetTileTemplate)(struct ITileRenderingData*, enum TILE_DUI_TEMPLATE*); // +0x38(0x8)
        HRESULT (*GetTileZoom)(struct ITileRenderingData*, enum TILE_ZOOM_LEVEL*); // +0x40(0x8)
        HRESULT (*GetTileState)(struct ITileRenderingData*, enum TILE_STATE*); // +0x48(0x8)
        HRESULT (*GetResourceSelectors)(struct ITileRenderingData*, DWORD*, enum TILE_THEME_SELECTOR*); // +0x50(0x8)
        HRESULT (*GetKeystoneColors)(struct ITileRenderingData*, ULONG*, ULONG*); // +0x58(0x8)
        HRESULT (*GetKeystoneBitmap)(struct ITileRenderingData*, struct ISharedBitmap**); // +0x60(0x8)
        HRESULT (*GetKeystoneBadgeType)(struct ITileRenderingData*, enum KEYSTONE_BADGE_TYPE*); // +0x68(0x8)
        HRESULT (*GetKeystoneBadgeOverlay)(struct ITileRenderingData*, struct ISharedBitmap**); // +0x70(0x8)
        HRESULT (*GetKeystoneBadgeOverlayAltText)(struct ITileRenderingData*, WORD**); // +0x78(0x8)
        HRESULT (*GetKeystoneBadgeValue)(struct ITileRenderingData*, DWORD*); // +0x80(0x8)
        HRESULT (*GetKeystoneNotificationID)(struct ITileRenderingData*, DWORD*); // +0x88(0x8)
        HRESULT (*GetKeystoneExpiry)(struct ITileRenderingData*, struct _FILETIME*); // +0x90(0x8)
        HRESULT (*GetInstallProgress)(struct ITileRenderingData*, DWORD*); // +0x98(0x8)
        HRESULT (*GetAppSpace)(struct ITileRenderingData*, struct IAppSpace**); // +0xa0(0x8)
        HRESULT (*GetAppSpaceNotificationID)(struct ITileRenderingData*, DWORD*); // +0xa8(0x8)
        int (*CanRenderAppSpace)(struct ITileRenderingData*); // +0xb0(0x8)
    };
    struct ITileViewInfoVtbl // 0x20
    {
        HRESULT (*QueryInterface)(struct ITileViewInfo*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITileViewInfo*); // +0x8(0x8)
        ULONG (*Release)(struct ITileViewInfo*); // +0x10(0x8)
        HRESULT (*SetTileWidth)(struct ITileViewInfo*, int); // +0x18(0x8)
    };
    struct TILE_CACHE_RESULT // 0x20
    {
        WCHAR* pszAppID; // +0x0(0x8)
        DWORD uKeystoneNotificationID; // +0x8(0x4)
        DWORD uAppSpaceNotificationID; // +0xc(0x4)
        int fKeystoneLogoCached; // +0x10(0x4)
        int fKeystoneBadgeCached; // +0x14(0x4)
        int fUseCachedAppSpace; // +0x18(0x4)
        int fUseCachedDefaultAppSpace; // +0x1c(0x4)
    };
    
    Desktop tile vs Immersive tile ? Toast tile and ListView tile ? Install tile ? FILESYSTEMTILE tile ???
    Code:
    enum TILE_DUI_TEMPLATE
    { 
        TILE_UNKNOWN = 0x0;
        TILE_DESKTOP = 0x1;
        TILE_IMMERSIVE = 0x2;
        TILE_TOAST = 0x3;
        TILE_LISTVIEW = 0x4;
        TILE_INSTALL = 0x5;
        TILE_FILESYSTEMTILE = 0x6;
        TILE_APPX_KEYSTONE_DOWNSPACE = 0x7;
        TILE_DUI_TEMPLATE_END = 0x8;
    };
    enum TILE_IMAGE_BASE_PATH
    { 
        TILE_IMAGE_URL = 0x0;
        TILE_IMAGE_PACKAGE = 0x1;
        TILE_IMAGE_APPDATA = 0x2;
        TILE_IMAGE_LOCAL_URL_CACHE = 0x3;
        TILE_IMAGE_END = 0x4;
    };
    enum TILE_LAYOUT_SIZE
    { 
        TLS_NOT_IN_LAYOUT = 0x0;
        TLS_SMALL = 0x0;
        TLS_MEDIUM = 0x1;
        TLS_END = 0x2;
    };
    enum TILE_STATE
    { 
        TS_DEFAULT = 0x0;
        TS_APPSPACE_HIDDEN = 0x1;
        TS_LOADING_COMPLETE = 0x2;
        TS_CACHED_KEYSTONE_LOGO = 0x4;
        TS_NOTIFICATION_APPSPACE = 0x8;
        TS_CACHED_APPSPACE = 0x10;
        TS_CACHED_DEFAULT_APPSPACE = 0x20;
        TS_CACHED_TICKLE = 0x40;
        TS_EXCLUSIVE_APPSPACE_FLAGS = 0x78;
        TS_TICKLE_ENABLED = 0x80;
        TS_NOTIFICATION_BADGE = 0x100;
        TS_CACHED_KEYSTONE_BADGE = 0x200;
        TS_EXCLUSIVE_KEYSTONE_FLAGS = 0x300;
    };
    enum TILE_SUBSCRIPTION_OPTIONS
    { 
        TSO_NONE = 0x0;
        TSO_DEFAULT_APPSPACE = 0x1;
        TSO_BADGE_NOTIFICATIONS = 0x2;
        TSO_APPSPACE_NOTIFICATIONS = 0x4;
        TSO_ALL_NOTIFICATIONS = 0x7;
    };
    struct TILE_SUBSCRIPTION_REQUEST // 0x20
    {
        WORD* pszAppID; // +0x0(0x8)
        struct IShellItem* pShellItem; // +0x8(0x8)
        struct IItem* pIItem; // +0x10(0x8)
        DWORD uPriority; // +0x18(0x4)
    };
    enum TILE_THEME_SELECTOR
    { 
        TILE_THEME_DEFAULT = 0x0;
        TILE_THEME_HIGH_CONTRAST_BLACK = 0x1;
        TILE_THEME_HIGH_CONTRAST_WHITE = 0x2;
        TILE_THEME_END = 0x3;
    };
    enum TILE_ZOOM_LEVEL
    { 
        TILE_ZOOM_100 = 0x0;
        TILE_ZOOM_25 = 0x1;
    };
    
    TouchViewController
    Code:
    struct ITouchViewControllerVtbl // 0x68
    {
        HRESULT (*QueryInterface)(struct ITouchViewController*, struct _GUID*, void**); // +0x0(0x8)
        ULONG (*AddRef)(struct ITouchViewController*); // +0x8(0x8)
        ULONG (*Release)(struct ITouchViewController*); // +0x10(0x8)
        HRESULT (*OnItemActivated)(struct ITouchViewController*, struct IShellItem*, enum TOUCHVIEW_VIEW_RESPONSE*); // +0x18(0x8)
        HRESULT (*OnSelectAll)(struct ITouchViewController*); // +0x20(0x8)
        HRESULT (*GetViewMode)(struct ITouchViewController*, enum TOUCHVIEW_VIEW_MODE*); // +0x28(0x8)
        HRESULT (*GetSelectionMode)(struct ITouchViewController*, enum TOUCHVIEW_SELECTION_MODE*); // +0x30(0x8)
        HRESULT (*GetViewRect)(struct ITouchViewController*, struct tagRECT*); // +0x38(0x8)
        HRESULT (*SetControl)(struct ITouchViewController*, struct IUnknown*); // +0x40(0x8)
        HRESULT (*GetResultLimit)(struct ITouchViewController*, DWORD*); // +0x48(0x8)
        HRESULT (*GetBackgroundContextMenu)(struct ITouchViewController*, struct IUnknown**); // +0x50(0x8)
        HRESULT (*GetDisplayedFileExtensions)(struct ITouchViewController*, struct _GUID*, void**); // +0x58(0x8)
        HRESULT (*OnViewCountDone)(struct ITouchViewController*); // +0x60(0x8)
    };
    
    WeakReferece
    Code:
    struct IWeakReference : public IUnknown // 0x8
    {
        virtual HRESULT Resolve(struct _GUID&, struct IInspectable**) = 0;
        void IWeakReference(struct IWeakReference&);
        void IWeakReference(void);
        struct IWeakReference& operator=(struct IWeakReference&);
    };
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  2. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    Aha, I was curious if this Direct Composition thing could mean the end of HWNDs but it looks like not. While visuals can contain dxgi surfaces and even GDI bitmaps the only compostion target available appears to be HWND based.
     
  3. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    MSBuild from .NET 4.5 contains a task named WinMDExp. As far as I can tell its job is to invoke a tool named winmdexp.exe. Its output is a .winmd file but it's not clear what the input is.

    It appears that the input is a .pdb file but that would be a first, I don't think I ever saw a build tool that produces something from .pdb files, they're tipically only used by the debugger.
     
  4. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #144 NaiveUser, Aug 22, 2011
    Last edited by a moderator: Apr 20, 2017
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  5. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    Didn't occur to me to check the .targets file, there the inputs are obvious :)

    I wonder why the C# compiler doesn't generate a .winmd file directly, probably you can make a single .winmd file from multiple .NET assemblies.

    And a sidenote: It appears that neither ntbuild or msbuild contain any reference to redhawk/slr. Hmm...
     
  6. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #146 NaiveUser, Aug 22, 2011
    Last edited: Aug 22, 2011
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  7. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    He he, that really is some detective work you did there! :)
     
  9. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #149 NaiveUser, Aug 22, 2011
    Last edited by a moderator: Apr 20, 2017
    talking about internal libraries, there is an unbcl.dll in Windows\System32\migwiz\ folder since Vista,
    unbcl stands for "Unmanaged BCL", it has exports like:
    Code:
    const UnBCL::ICollection<unsigned char>::`vbtable'
    const UnBCL::ICollection<unsigned short>::`vbtable'
    const UnBCL::ICollection<int>::`vbtable'
    const UnBCL::ICollection<class UnBCL::Object *>::`vbtable'
    const UnBCL::ICollection<class UnBCL::String *>::`vbtable'
    const UnBCL::ICollection<class UnBCL::DictionaryEntry<class UnBCL::String *,class UnBCL::String *> >::`vbtable'
    const UnBCL::IComparer<class UnBCL::String *>::`vbtable'
    const UnBCL::IDictionary<class UnBCL::String *,class UnBCL::String *>::`vbtable'{for `UnBCL::IDictionary<class UnBCL::String *,class UnBCL::String *>'}
    const UnBCL::IDictionary<class UnBCL::String *,class UnBCL::String *>::`vbtable'{for `UnBCL::ICollection<class UnBCL::DictionaryEntry<class UnBCL::String *,class UnBCL::String *> >'}
    const UnBCL::IEnumerator<class UnBCL::String *>::`vbtable'
    const UnBCL::IEnumerator<unsigned short const *>::`vbtable'
    const UnBCL::IList<unsigned char>::`vbtable'{for `UnBCL::IList<unsigned char>'}
    const UnBCL::IList<unsigned char>::`vbtable'{for `UnBCL::ICollection<unsigned char>'}
    const UnBCL::IList<unsigned short>::`vbtable'{for `UnBCL::IList<unsigned short>'}
    ...
    void UnBCL::Array<class UnBCL::String *>::set_AutoDelete(int)
    void UnBCL::ArrayList<unsigned short>::set_AutoDelete(int)
    void UnBCL::ArrayList<class UnBCL::String *>::set_AutoDelete(int)
    void UnBCL::Hashtable<class UnBCL::String *,class UnBCL::String *>::set_AutoDeleteKey(int)
    void UnBCL::Hashtable<class UnBCL::String *,class UnBCL::String *>::set_AutoDeleteValue(int)
    void UnBCL::ArrayList<unsigned short>::set_Capacity(int)
    void UnBCL::ArrayList<class UnBCL::String *>::set_Capacity(int)
    void UnBCL::MemoryStream::set_Capacity(int)
    void UnBCL::StringBuilder::set_Chars(int,unsigned short)
    void UnBCL::SerializationStream::set_Context(class UnBCL::Object *)
    void UnBCL::Stream::set_Counter(class UnBCL::StreamCounter *)
    void UnBCL::ProcessStartInfo::set_FileName(class UnBCL::String const *)
    void UnBCL::Exception::set_HResult(long)
    void UnBCL::WaitHandle::set_Handle(void *)
    void UnBCL::XmlNode::set_InnerText(class UnBCL::String *)
    ......
    class UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> > & UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> >::operator=(class UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> > const &)
    UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> >::SmartPtr<class UnBCL::Array<class UnBCL::String *> >(class UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> > const &)
    UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> >::SmartPtr<class UnBCL::Array<class UnBCL::String *> >(class UnBCL::Array<class UnBCL::String *> *)
    UnBCL::SmartPtr<class UnBCL::Array<class UnBCL::String *> >::SmartPtr<class UnBCL::Array<class UnBCL::String *> >(void)
    const UnBCL::SmartPtr<class UnBCL::Array<unsigned char> >::`vftable'
    void UnBCL::SmartPtr<class UnBCL::Array<unsigned char> >::Assign(class UnBCL::SmartPtr<class UnBCL::Array<unsigned char> > const &)
    void UnBCL::SmartPtr<class UnBCL::Array<unsigned char> >::Assign(class UnBCL::Array<unsigned char> *)
    void UnBCL::SmartPtr<class UnBCL::Array<unsigned char> >::DeAssign(void)
    class UnBCL::SmartPtr<class UnBCL::Array<unsigned char> > & UnBCL::SmartPtr<class UnBCL::Array<unsigned char> >::Nullify(void)
    bool UnBCL::SmartPtr<class UnBCL::Array<unsigned char> >::operator!(void)
    ......
    const UnBCL::HeapMemoryManager::`vftable'
    void * UnBCL::HeapMemoryManager::Alloc(unsigned long)
    void * UnBCL::HeapMemoryManager::AllocDbg(char const *,int,unsigned long)
    unsigned int UnBCL::HeapMemoryManager::Dump(struct ILogHandler *)
    unsigned int UnBCL::HeapMemoryManager::DumpDelta(struct ILogHandler *)
    void UnBCL::HeapMemoryManager::EnableDelayedDeallocation(int)
    void UnBCL::HeapMemoryManager::Free(void *)
    UnBCL::HeapMemoryManager::HeapMemoryManager(class UnBCL::HeapMemoryManager const &)
    UnBCL::HeapMemoryManager::HeapMemoryManager(void)
    void UnBCL::HeapMemoryManager::InternalFree(void *)
    void UnBCL::HeapMemoryManager::InternalValidate(void *)
    int UnBCL::HeapMemoryManager::IsTrackingEnabled(void)
    unsigned int UnBCL::HeapMemoryManager::NumBlocksAllocated(void)
    class UnBCL::HeapMemoryManager & UnBCL::HeapMemoryManager::operator=(class UnBCL::HeapMemoryManager const &)
    void * UnBCL::HeapMemoryManager::ReAlloc(void *,unsigned long)
    void * UnBCL::HeapMemoryManager::ReAllocDbg(char const *,int,void *,unsigned long)
    void UnBCL::HeapMemoryManager::SetRef(void)
    void UnBCL::HeapMemoryManager::Validate(void)
    UnBCL::HeapMemoryManager::~HeapMemoryManager(void)
    ......
    sounds cool huh ? it is used only by the migwiz component.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  10. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #150 NaiveUser, Aug 22, 2011
    Last edited by a moderator: Apr 20, 2017
    Hmmm... I just played with bartok.exe a little bit in the Singularity/Verve source tree. two findings:

    1, Redhawk. This is an excerpt of the usage help of bartok, there is /RedharkMdil and /RedharkBaseClassLibrary.
    Code:
        /TargetMdil=<bool> (currently False)
            Target MDIL rather than native code
        /TargetMdilEHPerBB=<bool> (currently False)
            When targeting MDIL, emit separate EH records for each basic block
        /TargetMdilBartokRuntime=<bool> (currently False)
            When targeting MDIL, assume that libraries include the Bartok runtime
        /ClrMdil=<bool> (currently False)
            Target/consume CLR-MDIL rather than Bartok-MDIL (not complete)
        /RedhawkMdil=<bool> (currently False)
            Target Redhawk-MDIL rather than Bartok-MDIL (currently implies ClrMdil
            as well)
        /RedhawkBaseClassLibrary=<bool> (currently False)
            Generate MDIL for a Redhawk base class library (include well-known
            types table in the CTL)
        /MdilV2=<bool> (currently False)
            Use version 2 of the MDIL instruction encoding (automatic/required for
            x64)
    
    2, Midori. the pdb/source paths in the Verve build of bartok.exe/bartok.pdb looks like this:
    Code:
    c:\midori-singrdk1\private\saferdk\bartok\obj\LILC-DEBUG-X86-X86\bartok.pdb
     c:\midori-singrdk1\private\saferdk\bartok\src\compiler\Bartok.cs
    
    now Redhawk and Midori in the same post, I hope MaryJo Foley enjoy this. :)
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  11. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    AFAIR the UnBCL thing showed up in Vista days, I rememebr coming across it. But the verve/bartok/redhawk stuff is cool. I played with Singulary's Bartok a while ago but I didn't know about Verve.
     
  12. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    well, apparently I misunderstood the usage of MidlRT, maybe it should not take the output of rexpp, instead it will generate the idl file from other sources then calls midl to compile them,
    but apparently it does take .idl files as input, could it generate .idl from another .idl or what ??
    thats really weird.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  13. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    Hmm, what makes you think that? The traditional midl tool takes an idl file and produces a tlb files, it seems normal that MidlRT will take an idl file and produce a WinMD file. Especially since it calls CreatePE in MidlRtMd.dll.
     
  14. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #154 NaiveUser, Aug 24, 2011
    Last edited by a moderator: Apr 20, 2017
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  15. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #155 NaiveUser, Aug 24, 2011
    Last edited by a moderator: Apr 20, 2017
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  16. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #156 NaiveUser, Aug 26, 2011
    Last edited by a moderator: Apr 20, 2017
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  17. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #157 NaiveUser, Sep 1, 2011
    Last edited by a moderator: Apr 20, 2017
    well, apparently the coreclr.dll in Silverlight 5 RC runtime has some kind of 'awareness' (not 'support') of WinRT/AppX, might just because it is built from the new CLR code base.

    Code:
    IL_STUB_PInvoke
    IL_STUB_CLRtoCOM
    IL_STUB_CLRtoWinRT
    IL_STUB_ReversePInvoke
    IL_STUB_COMtoCLR
    IL_STUB_WinRTtoCLR
    
    WindowsRuntimeImportAttribute
    System.Runtime.InteropServices.WindowsRuntime
    
    System.Runtime.WindowsRuntime
    System.Runtime.WindowsRuntime.UI.Xaml
    System.Runtime.InteropServices.WindowsRuntime
    
    TestOnly_AppXAssemblyLoadCompat
    windowsRuntimeDeveloperMode
    
    the most interesting thing here is 'System.Runtime.WindowsRuntime.UI.Xaml', what is that ??? :ninja_hide:

    p.s. also, this coreclr.dll might be built by VC11.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  18. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #158 NaiveUser, Sep 1, 2011
    Last edited by a moderator: Apr 20, 2017
    well, here is some interesting stuff from the mscorlib.dll in Silverlight 5 RC

    Code:
    // System.Resources.ResourceManager
    private void SetAppXConfiguration()
    {
    this._bUsingModernResourceManagement = false;
    }
    
    protected ResourceManager()
    {
    this.Init();
    this.SetAppXConfiguration();
    if (!this._bUsingModernResourceManagement)
    {
    ResourceManager.ResourceManagerMediator mediator = new ResourceManager.ResourceManagerMediator(this);
    this.resourceGroveler = new ManifestBasedResourceGroveler(mediator);
    }
    }
    
    Code:
    namespace System.Reflection
    {
    [ComVisible(false)]
    internal enum AssemblyContentType
    {
    Default,
    WindowsRuntime
    }
    }
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  19. NaiveUser

    NaiveUser MDL Senior Member

    Apr 14, 2011
    419
    523
    10
    #159 NaiveUser, Sep 1, 2011
    Last edited by a moderator: Apr 20, 2017
    those stuff above also presents in the mscorlib.dll inside Win8 7989, with some more:

    Code:
    // System.AppDomain
    [SecuritySafeCritical]
    internal bool IsImmersiveModel()
    {
    return AppDomain.IsImmersiveModel(this.GetNativeHandle());
    }
    
    [SecurityCritical, SuppressUnmanagedCodeSecurity]
    [DllImport("QCall", CharSet = CharSet.Unicode)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool IsImmersiveModel(AppDomainHandle domain);
    
    [SecuritySafeCritical]
    internal bool IsStrictAppXMode()
    {
    return this.IsImmersiveModel() && !this.IsAssemblyLoadingCompatEnabled();
    }
    
    // System.AppDomain
    [SecurityCritical, SuppressUnmanagedCodeSecurity]
    [DllImport("QCall", CharSet = CharSet.Unicode)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool nIsAppXDevMode();
    
    [SecuritySafeCritical, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    internal bool IsAppXDevMode()
    {
    return AppDomain.nIsAppXDevMode();
    }
    
    // System.Resources.ResourceManager
    [SecuritySafeCritical]
    private void SetAppXConfiguration()
    {
    this._bUsingModernResourceManagement = false;
    this._bUsingSatelliteAssembliesUnderAppX = false;
    this._resourcesAssembly = (RuntimeAssembly)this.MainAssembly;
    if (this._resourcesAssembly == null)
    {
    this._resourcesAssembly = this.m_callingAssembly;
    }
    if (this._resourcesAssembly != null && this._resourcesAssembly != typeof(object).Assembly && ResourceManager.nIsAppXProcess())
    {
    string location = this._resourcesAssembly.Location;
    string text = null;
    int num = location.LastIndexOf('.');
    if (num != -1)
    {
    text = location.Remove(num) + ".PRI";
    }
    if (AppDomain.CurrentDomain.IsAppXDevMode())
    {
    this._bUsingSatelliteAssembliesUnderAppX = !File.Exists(text);
    }
    if (!this._bUsingSatelliteAssembliesUnderAppX)
    {
    this._bUsingModernResourceManagement = !ResourceManager.nIsAnyFrameworkAssembly(this._resourcesAssembly);
    if (this._bUsingModernResourceManagement)
    {
    this._PRIFilePath = text;
    }
    }
    }
    }
    
    private void InitializePRIonAppX()
    {
    ResourceManager.ThreadInstanceMembers threadInstanceMembers = this.getThreadInstanceMembers();
    if (!threadInstanceMembers._AttemptedToInitializePRIonAppX)
    {
    threadInstanceMembers._AttemptedToInitializePRIonAppX = true;
    if (this._PRIFilePath != null)
    {
    string location = this._resourcesAssembly.Location;
    int num = location.LastIndexOf('.');
    if (num != -1)
    {
    string pRIfile = location.Remove(num) + ".PRI";
    this.GetIRIandIRCForPRI(pRIfile);
    threadInstanceMembers._PRIonAppXInitialized = true;
    }
    }
    }
    if (this._PRIFilePath == null || !threadInstanceMembers._PRIonAppXInitialized)
    {
    throw new MissingManifestResourceException(Environment.GetResourceString("MissingManifestResource_NoPRIfile"));
    }
    }
    
    public virtual string GetString(string name, CultureInfo culture)
    {
    if (name == null)
    {
    throw new ArgumentNullException("name");
    }
    if (this._bUsingModernResourceManagement)
    {
    this.InitializePRIonAppX();
    return this.GetStringFromPRI(name, this.BaseNameField, (culture == null) ? null : culture.Name, this._neutralResourcesCulture.Name);
    }
    if (culture == null)
    {
    culture = CultureInfo.CurrentUICulture;
    }
    if (FrameworkEventSource.IsInitialized)
    {
    FrameworkEventSource.Log.ResourceManagerLookupStarted(this.BaseNameField, this.MainAssembly, culture.Name);
    }
    ResourceFallbackManager resourceFallbackManager = new ResourceFallbackManager(culture, this._neutralResourcesCulture, true);
    ResourceSet resourceSet = null;
    foreach (CultureInfo current in resourceFallbackManager)
    {
    ResourceSet resourceSet2 = this.InternalGetResourceSet(current, true, true);
    if (resourceSet2 == null)
    {
    break;
    }
    if (resourceSet2 != resourceSet)
    {
    string @string = resourceSet2.GetString(name, this._ignoreCase);
    if (@string != null)
    {
    string result = @string;
    return result;
    }
    resourceSet = resourceSet2;
    }
    }
    if (FrameworkEventSource.IsInitialized)
    {
    FrameworkEventSource.Log.ResourceManagerLookupFailed(this.BaseNameField, this.MainAssembly, culture.Name);
    }
    return null;
    }
    
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  20. bored_neo

    bored_neo MDL Junior Member

    Jun 3, 2011
    53
    26
    0
    This should put an end to the "only HTML+JS" mess :), .NET is obviously aware of all this appx/immersive stuff. But I'm left wondering what exactly "immersive" means, it seems to be more than an UI concept.