#pragma region Application Family

cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)")

import "ocidl.idl";
import "objidl.idl";
import "Oleidl.idl";

[
object,
uuid(D3E9E342-5DEB-43B6-849E-6913B85D503A),
]
interface IEditionUpgradeHelper : IUnknown
{
    HRESULT
    CanUpgrade(
        [out]                   BOOL*                       isAllowed
    );

    HRESULT
    UpdateOperatingSystem(
        [in, string]            LPCWSTR                     contentId
    );

    HRESULT
    ShowProductKeyUI(
        void
    );

    HRESULT
    GetOsProductContentId(
        [out, string]          LPWSTR*                      contentId
    );

    HRESULT
    GetGenuineLocalStatus(
        [out]                   BOOL*                       isGenuine
    );


};

[
    object,
	uuid(FF19CBCF-9455-4937-B872-6B7929A460AF),
    dual,
	nonextensible,
    oleautomation,
	helpstring("IEditionUpgradeBroker Interface"),
	pointer_default(unique)
]
interface IEditionUpgradeBroker: IUnknown
{
    HRESULT
    InitializeParentWindow(
        [in]                    OLE_HANDLE                  parentHandle
    );

    HRESULT
    UpdateOperatingSystem(
        [in, string]            BSTR                        parameter
    );

    HRESULT
    ShowProductKeyUI(
        void
    );

    HRESULT
    CanUpgrade(
        void
    );

};


[
uuid(09C6A793-92DC-4D27-A11D-3921C9314DED),
version(1.0),
]
library EditionUpgradeHelperLib
{
    [
    uuid(01776DF3-B9AF-4E50-9B1C-56E93116D704),
    ]
    coclass EditionUpgradeHelper
    {
        [default] interface IEditionUpgradeHelper;
    }

    [
        uuid(C4270827-4F39-45DF-9288-12FF6B85A921),
    ]
    coclass EditionUpgradeBroker
    {
        [default] interface IEditionUpgradeBroker;
    }
    
};
cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */")
#pragma endregion

