6 Appendix A: Full IDL

For ease of implementation the full IDL is provided below, where "ms-dtyp.idl" refers to the IDL found in [MS-DTYP] Appendix A and "ms-oaut.idl" refers to the IDL found in [MS-OAUT] Appendix A. The syntax uses the IDL syntax extensions defined in [MS-RPCE] sections 2.2.4. For example, as noted in [MS-RPCE] section 2.2.4.8, a pointer_default declaration is not required and pointer_default(unique) is assumed.

  
import "ms-dtyp.idl";
import "ms-oaut.idl";
 
[
    v1_enum
]
typedef  enum tagDownloadPriority
{
dpLow       = 1,
dpNormal    = 2,
dpHigh      = 3,
dpExtraHigh = 4,
} DownloadPriority;
 
[
    v1_enum
]
typedef  enum tagAutoSelectionMode
{
asLetWindowsUpdateDecide    = 0,
asAutoSelectIfDownloaded    = 1,
asNeverAutoSelect           = 2,
asAlwaysAutoSelect          = 3,
} AutoSelectionMode;
 
[
    v1_enum
]
typedef  enum tagAutoDownloadMode
{
adLetWindowsUpdateDecide = 0,
adNeverAutoDownload      = 1,
adAlwaysAutoDownload     = 2,
} AutoDownloadMode;
 
[
    v1_enum
]
typedef  enum tagInstallationImpact
{
iiNormal                    = 0,
iiMinor                     = 1,
iiRequiresExclusiveHandling = 2,
} InstallationImpact;
 
[
    v1_enum
]
typedef  enum tagInstallationRebootBehavior
{
irbNeverReboots         = 0,
irbAlwaysRequiresReboot = 1,
irbCanRequestReboot     = 2,
} InstallationRebootBehavior;
 
[
    v1_enum
]
typedef  enum tagOperationResultCode
{
orcNotStarted           = 0,
orcInProgress           = 1,
orcSucceeded            = 2,
orcSucceededWithErrors  = 3,
orcFailed               = 4,
orcAborted              = 5,
} OperationResultCode;
 
[
    v1_enum
]
typedef  enum tagServerSelection
{
ssDefault       = 0,
ssManagedServer = 1,
ssWindowsUpdate = 2,
ssOthers        = 3,
} ServerSelection;
 
[
    v1_enum
]
typedef  enum tagUpdateType
{
utSoftware  = 1,
utDriver    = 2,
} UpdateType;
 
[
    v1_enum
]
typedef  enum tagUpdateOperation
{
uoInstallation = 1,
uoUninstallation = 2,
} UpdateOperation;
 
[
    v1_enum
]
typedef  enum tagDeploymentAction
{
daNone              = 0,
daInstallation      = 1,
daUninstallation    = 2,
daDetection         = 3,
} DeploymentAction;
 
[
    v1_enum
]
typedef  enum tagUpdateExceptionContext
{
uecGeneral          = 1,
uecWindowsDriver    = 2,
uecWindowsInstaller = 3,
} UpdateExceptionContext;
 
[
    v1_enum
]
typedef  enum tagUpdateServiceRegistrationState
{
usrsNotRegistered = 1,
usrsRegistrationPending = 2,
usrsRegistered = 3,
} UpdateServiceRegistrationState;
 
[
    v1_enum
]
typedef  enum tagSearchScope
{
searchScopeDefault = 0,
searchScopeMachineOnly = 1,
searchScopeCurrentUserOnly = 2,
searchScopeMachineAndCurrentUser = 3,
searchScopeMachineAndAllUsers = 4,
searchScopeAllUsers = 5
}SearchScope;
 
typedef  enum tagAddServiceFlag
{
    
    asfAllowPendingRegistration = 0x00000001,
    
    asfAllowOnlineRegistration  = 0x00000002,
    
    asfRegisterServiceWithAU    = 0x00000004,
} AddServiceFlag;
 
typedef  enum tagUpdateServiceOption
{
     usoNonVolatileService = 0x00000001,
} UpdateServiceOption;
typedef DECIMAL DECIMAL;
 
 
interface ICategoryCollection;
interface IUpdateCollection;
interface IUpdate;
interface IUpdateServiceManager2;
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(eff90582-2ddc-480f-a06d-60f3fbc362c3),
    pointer_default(unique),
]
interface IStringCollection : IDispatch
{
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] BSTR* retval);
    [
        id(DISPID_VALUE),
        propput,
    ]
    HRESULT Item(
                [in] LONG index,
                [in] BSTR value);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT ReadOnly(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020003)
    ]
    HRESULT Add(
                [in] BSTR value,
                [out, retval] LONG* retval);
 
    [
        id(0x60020004)
    ]
    HRESULT Clear( );
 
    [
        id(0x60020005),
        
    ]
    HRESULT Copy(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x60020006)
    ]
    HRESULT Insert(
                [in] LONG index,
                [in] BSTR value);
 
    [
        id(0x60020007)
    ]
    HRESULT RemoveAt(
                [in] LONG index);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(85713fa1-7796-4fa2-be3b-e2d6124dd373),
    pointer_default(unique)
]
interface IWindowsUpdateAgentInfo : IDispatch
{
    [
        id(0x60020001)
    ]
    HRESULT GetInfo( 
               [in] VARIANT varInfoIdentifier,  
               [out, retval] VARIANT* retval);
}
 
[
    
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(E7A4D634-7942-4DD9-A111-82228BA33901),
    pointer_default(unique)
]
interface IAutomaticUpdatesResults : IDispatch
{
    [
        id(0x60020001),
        propget
    ]
    HRESULT LastSearchSuccessDate(
                [out, retval] VARIANT* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT LastInstallationSuccessDate(
                [out, retval] VARIANT* retval);
}
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(673425bf-c082-4c7c-bdfd-569464b8e0ce),
    pointer_default(unique)
]
interface IAutomaticUpdates : IDispatch
{
    [
        id(0x60020001),
    ]
    HRESULT DetectNow();
 
HRESULT Opnum9NotUsedOnWire();
HRESULT Opnum10NotUsedOnWire();
HRESULT Opnum11NotUsedOnWire();
HRESULT Opnum12NotUsedOnWire();
HRESULT Opnum13NotUsedOnWire();
HRESULT Opnum14NotUsedOnWire();
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(4A2F5C31-CFD9-410E-B7FB-29A653973A0F),
    pointer_default(unique)
]
interface IAutomaticUpdates2 : IAutomaticUpdates
{
    [
        id(0x60030001),
        propget
    ]
    HRESULT Results(
                [out, retval] IAutomaticUpdatesResults** retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(46297823-9940-4c09-aed9-cd3ea6d05968),
    pointer_default(unique)
]
interface IUpdateIdentity : IDispatch
{
    [
        id(0x60020002),
        propget
    ]
    HRESULT RevisionNumber(
                [out, retval] LONG* retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT UpdateID(
                [out, retval] BSTR* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(7c907864-346c-4aeb-8f3f-57da289f969f),
    pointer_default(unique),
]
interface IImageInformation : IDispatch
{
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT AltText(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT Height(
                [out, retval] LONG* retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT Source(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT Width(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(81ddc1b8-9d35-47a6-b471-5b80f519223b),
    pointer_default(unique),
]
interface ICategory : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Name(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT CategoryID(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT Children(
                [out, retval] ICategoryCollection** retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT Description(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT Image(
                [out, retval] IImageInformation** retval);
 
    [
        id(0x60020005),
        propget
    ]
    HRESULT Order(
                [out, retval] LONG* retval);
 
    [
        id(0x60020006),
        propget
    ]
    HRESULT Parent(
                [out, retval] ICategory** retval);
 
    [
        id(0x60020007),
        propget
    ]
    HRESULT Type(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020008),
        propget
    ]
    HRESULT Updates(
                [out, retval] IUpdateCollection** retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(3a56bfb8-576c-43f7-9335-fe4838fd7e37),
    pointer_default(unique),
]
interface ICategoryCollection : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] ICategory** retval);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(d9a59339-e245-4dbd-9686-4d5763e39624),
    pointer_default(unique),
]
interface IInstallationBehavior : IDispatch
{
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT CanRequestUserInput(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT Impact(
                [out, retval] InstallationImpact* retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT RebootBehavior(
                [out, retval] InstallationRebootBehavior* retval);
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT RequiresNetworkConnectivity(
                [out, retval] VARIANT_BOOL* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(54a2cb2d-9a0c-48b6-8a50-9abb69ee2d02),
    pointer_default(unique),
]
interface IUpdateDownloadContent : IDispatch
{
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT DownloadUrl(
                [out, retval] BSTR* retval);
}
 
[
    
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(c97ad11b-f257-420b-9d9f-377f733f6f68),
    pointer_default(unique),
]
interface IUpdateDownloadContent2 : IUpdateDownloadContent
{
 
    [
        id(0x60030001),
        propget
    ]
    HRESULT IsDeltaCompressedContent(
                [out, retval] VARIANT_BOOL* retval);
}
 
[
    
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(bc5513c8-b3b8-4bf7-a4d4-361c0d8c88ba),
    pointer_default(unique),
]
interface IUpdateDownloadContentCollection : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] IUpdateDownloadContent** retval);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(6a92b07a-d821-4682-b423-5c805022cc4d),
    pointer_default(unique),
]
interface IUpdate : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Title(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT AutoSelectOnWebSites(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT BundledUpdates(
                [out, retval] IUpdateCollection** retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT CanRequireSource(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT Categories(
                [out, retval] ICategoryCollection** retval);
 
    [
        id(0x60020005),
        propget
    ]
    HRESULT Deadline(
                [out, retval] VARIANT* retval);
 
    [
        id(0x60020006),
        propget
    ]
    HRESULT DeltaCompressedContentAvailable(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020007),
        propget
    ]
    HRESULT DeltaCompressedContentPreferred(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020008),
        propget
    ]
    HRESULT Description(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020009),
        propget
    ]
    HRESULT EulaAccepted(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x6002000a),
        propget
    ]
    HRESULT EulaText(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000b),
        propget
    ]
    HRESULT HandlerID(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000c),
        propget
    ]
    HRESULT Identity(
                [out, retval] IUpdateIdentity** retval);
 
    [
        id(0x6002000d),
        propget
    ]
    HRESULT Image(
                [out, retval] IImageInformation** retval);
 
    [
        id(0x6002000e),
        propget
    ]
    HRESULT InstallationBehavior(
                [out, retval] IInstallationBehavior** retval);
 
    [
        id(0x6002000f),
        propget
    ]
    HRESULT IsBeta(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020010),
        propget
    ]
    HRESULT IsDownloaded(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020011),
        propget
    ]
    HRESULT IsHidden(
                [out, retval] VARIANT_BOOL* retval);
 
    HRESULT Opnum26NotUsedOnWire();
 
    [
        id(0x60020012),
        propget
    ]
    HRESULT IsInstalled(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020013),
        propget
    ]
    HRESULT IsMandatory(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020014),
        propget
    ]
    HRESULT IsUninstallable(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020015),
        propget
    ]
    HRESULT Languages(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x60020016),
        propget
    ]
    HRESULT LastDeploymentChangeTime(
                [out, retval] DATE* retval);
 
    [
        id(0x60020017),
        propget
    ]
    HRESULT MaxDownloadSize(
                [out, retval] DECIMAL* retval);
 
    [
        id(0x60020018),
        propget
    ]
    HRESULT MinDownloadSize(
                [out, retval] DECIMAL* retval);
 
    [
        id(0x60020019),
        propget
    ]
    HRESULT MoreInfoUrls(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x6002001a),
        propget
    ]
    HRESULT MsrcSeverity(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002001b),
        propget
    ]
    HRESULT RecommendedCpuSpeed(
                [out, retval] LONG* retval);
 
    [
        id(0x6002001c),
        propget
    ]
    HRESULT RecommendedHardDiskSpace(
                [out, retval] LONG* retval);
 
    [
        id(0x6002001d),
        propget
    ]
    HRESULT RecommendedMemory(
                [out, retval] LONG* retval);
 
    [
        id(0x6002001e),
        propget
    ]
    HRESULT ReleaseNotes(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002001f),
        propget
    ]
    HRESULT SecurityBulletinIDs(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x60020021),
        propget
    ]
    HRESULT SupersededUpdateIDs(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x60020022),
        propget
    ]
    HRESULT SupportUrl(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020023),
        propget
    ]
    HRESULT Type(
                [out, retval] UpdateType* retval);
 
    [
        id(0x60020024),
        propget
    ]
    HRESULT UninstallationNotes(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020025),
        propget
    ]
    HRESULT UninstallationBehavior(
                [out, retval] IInstallationBehavior** retval);
 
    [
        id(0x60020026),
        propget
    ]
    HRESULT UninstallationSteps(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x60020028),
        propget
    ]
    HRESULT KBArticleIDs(
                [out, retval] IStringCollection** retval);
 
HRESULT Opnum48NotUsedOnWire();
 
 
    [
        id(0x60020029),
        propget
    ]
    HRESULT DeploymentAction(
                [out, retval] DeploymentAction* retval);
 
HRESULT Opnum50NotUsedOnWire();
 
    [
        id(0x6002002b),
        propget
    ]
    HRESULT DownloadPriority(
                [out, retval] DownloadPriority* retval);
 
    [
        id(0x6002002c),
        propget
    ]
    HRESULT DownloadContents(
                [out, retval] IUpdateDownloadContentCollection** retval);
}
 
[
   
   object,
   oleautomation,
   dual,
   nonextensible,
   uuid(b383cd1a-5ce9-4504-9f63-764b1236f191),
   pointer_default(unique),
]
interface IWindowsDriverUpdate : IUpdate
{
    [
        id(0x60030001),
        propget
    ]
    HRESULT DriverClass(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030002),
        propget
    ]
    HRESULT DriverHardwareID(
                [out, retval] BSTR* retval);
    [
        id(0x60030003),
        propget
    ]
    HRESULT DriverManufacturer(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030004),
        propget
    ]
    HRESULT DriverModel(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030005),
        propget
    ]
    HRESULT DriverProvider(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030006),
        propget
    ]
    HRESULT DriverVerDate(
                [out, retval] DATE* retval);
 
    [
        id(0x60030007),
        propget
    ]
    HRESULT DeviceProblemNumber(
                [out, retval] LONG* retval);
 
    [
        id(0x60030008),
        propget
    ]
    HRESULT DeviceStatus(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(144fe9b0-d23d-4a8b-8634-fb4457533b7a),
    pointer_default(unique),
]
interface IUpdate2 : IUpdate
{
    [
        id(0x60030001),
        propget
    ]
    HRESULT RebootRequired(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60030003),
        propget
    ]
    HRESULT IsPresent([out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60030004),
        propget
    ]
    HRESULT CveIDs(
                [out, retval] IStringCollection** retval);
 
HRESULT Opnum56NotUsedOnWire();
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(112EDA6B-95B3-476F-9D90-AEE82C6B8181),
    pointer_default(unique),
]
interface IUpdate3 : IUpdate2
{
    [
        id(0x60040001),
        propget        
    ]
    HRESULT BrowseOnly(
                [out, retval] VARIANT_BOOL* retval);
 
}
 
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(27e94b0d-5139-49a2-9a61-93522dc54652),
    pointer_default(unique),
]
interface IUpdate4 : IUpdate3
{
    [
        id(0x60050001),
        propget
    ]
    HRESULT PerUser( [out, retval] VARIANT_BOOL* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(C1C2F21A-D2F4-4902-B5C6-8A081C19A890),
    pointer_default(unique),
]
interface IUpdate5 : IUpdate4
{
    [
        id(0x60060001),
        propget
    ]
    HRESULT AutoSelection(
                [out, retval] AutoSelectionMode* retval);
 
    [
        id(0x60060002),
        propget
    ]
    HRESULT AutoDownload(
                [out, retval] AutoDownloadMode* retval);
 
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(ED8BFE40-A60B-42ea-9652-817DFCFA23EC),
    pointer_default(unique),
]
interface IWindowsDriverUpdateEntry : IDispatch
{
 
    [
        id(0x60030001),
        propget
    ]
    HRESULT DriverClass(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030002),
        propget
    ]            
    HRESULT DriverHardwareID(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030003),
        propget
    ]            
    HRESULT DriverManufacturer(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030004),
        propget
    ]            
    HRESULT DriverModel(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030005),
        propget
    ]            
    HRESULT DriverProvider(
                [out, retval] BSTR* retval);
 
    [
        id(0x60030006),
        propget
    ]            
    HRESULT DriverVerDate(
                [out, retval] DATE* retval);
 
    [
        id(0x60030007),
        propget
    ]            
    HRESULT DeviceProblemNumber(
                [out, retval] LONG* retval);
 
    [
        id(0x60030008),
        propget
    ]            
    HRESULT DeviceStatus(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(0D521700-A372-4bef-828B-3D00C10ADEBD),
    pointer_default(unique),
]
 
interface IWindowsDriverUpdateEntryCollection : IDispatch
{
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] IWindowsDriverUpdateEntry ** retval);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]    
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]     
    HRESULT Count(
                [out, retval] LONG* retval);    
}
 
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(615c4269-7a48-43bd-96b7-bf6ca27d6c3e),
    pointer_default(unique),
]
interface IWindowsDriverUpdate2 : IWindowsDriverUpdate
{
    [
        id(0x60040001),
        propget
    ]
    HRESULT RebootRequired(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60040003),
        propget
    ]
    HRESULT IsPresent([out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60040004),
        propget
    ]
    HRESULT CveIDs(
                [out, retval] IStringCollection** retval);
 
    HRESULT Opnum64NotUsedOnWire();
}
 
[
    helpstring("IWindowsDriverUpdate3 Interface"),
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(49EBD502-4A96-41BD-9E3E-4C5057F4250C),
    pointer_default(unique)
]
interface IWindowsDriverUpdate3 : IWindowsDriverUpdate2
{
    [
        id(0x60050001),
        propget
    ]
    HRESULT BrowseOnly(
                [out, retval] VARIANT_BOOL* retval);
 
}
 
[
    helpstring("IWindowsDriverUpdate4 Interface"),
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(004C6A2B-0C19-4c69-9F5C-A269B2560DB9),
    pointer_default(unique),
]
interface IWindowsDriverUpdate4 : IWindowsDriverUpdate3
{
    [
        id(0x60060001),
        propget
    ]
    HRESULT WindowsDriverUpdateEntries(
                [out, retval] IWindowsDriverUpdateEntryCollection** retval);
 
    [
        id(0x60060002),
        propget
    ]
    HRESULT PerUser(
                [out, retval] VARIANT_BOOL* retval);
}
 
[
    helpstring("IWindowsDriverUpdate5 Interface"),
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(70CF5C82-8642-42bb-9DBC-0CFD263C6C4F),
    pointer_default(unique),
]
interface IWindowsDriverUpdate5 : IWindowsDriverUpdate4
{
    [
        id(0x60070001),
        propget
    ]
    HRESULT AutoSelection(
                [out, retval] AutoSelectionMode* retval);
 
    [
        id(0x60070002),
        propget
    ]
    HRESULT AutoDownload(
                [out, retval] AutoDownloadMode* retval);
}
[
    
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(07f7438c-7709-4ca5-b518-91279288134e),
    pointer_default(unique)
]
interface IUpdateCollection : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] IUpdate** retval);
    [
        id(DISPID_VALUE),
        propput       
    ]
    HRESULT Item(
                [in] LONG index,
                [in] IUpdate* value);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget      
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT ReadOnly(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020003),
    ]
    HRESULT Add(
                [in] IUpdate* value,
                [out, retval] LONG* retval);
 
    [
        id(0x60020004),
    ]
    HRESULT Clear( );
 
    HRESULT Opnum15NotUsedOnWire();
 
    [
        id(0x60020006),
    ]
    HRESULT Insert(
                [in] LONG index,
                [in] IUpdate* value);
 
    [
        id(0x60020007),
    ]
    HRESULT RemoveAt(
                [in] LONG index);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(a376dd5e-09d4-427f-af7c-fed5b6e1c1d6),
    pointer_default(unique),
]
interface IUpdateException : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Message(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT HResult(
                [out, retval] LONG* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT Context(
                [out, retval] UpdateExceptionContext* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(503626a3-8e14-4729-9355-0fe664bd2321),
    pointer_default(unique),
]
interface IUpdateExceptionCollection : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] IUpdateException** retval);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(d40cff62-e08c-4498-941a-01e25f0fd33c),
    pointer_default(unique),
]
interface ISearchResult : IDispatch
{
    [
        id(0x60020001),
        propget
    ]
    HRESULT ResultCode(
                [out, retval] OperationResultCode* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT RootCategories(
                [out, retval] ICategoryCollection** retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT Updates(
                [out, retval] IUpdateCollection** retval);
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT Warnings(
                [out, retval] IUpdateExceptionCollection** retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(be56a644-af0e-4e0e-a311-c1d8e695cbff),
    pointer_default(unique),
]
interface IUpdateHistoryEntry : IDispatch
{
    [
        id(0x60020001),
        propget
    ]
    HRESULT Operation( 
                [out, retval] UpdateOperation* retval );
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT ResultCode( 
                [out, retval] OperationResultCode* retval );
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT HResult( 
                [out, retval] LONG* retval );
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT Date(
                [out, retval] DATE* retval);
 
    [
        id(0x60020005),
        propget
    ]
    HRESULT UpdateIdentity(
                [out, retval] IUpdateIdentity** retval);
 
    [
        id(0x60020006),
        propget
    ]
    HRESULT Title(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020007),
        propget
    ]
    HRESULT Description(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020008),
        propget
    ]
    HRESULT UnmappedResultCode(
                [out, retval] LONG* retval);
 
    [
        id(0x60020009),
        propget
    ]
    HRESULT ClientApplicationID(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000a),
        propget
    ]
    HRESULT ServerSelection(
                [out, retval] ServerSelection* retval );
 
    [
        id(0x6002000b),
        propget
    ]
    HRESULT ServiceID(
                [out, retval] BSTR* retval );
    
    [
        id(0x6002000c),
        propget
    ]
    HRESULT UninstallationSteps(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x6002000d),
        propget
    ]
    HRESULT UninstallationNotes(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000e),
        propget
    ]
    HRESULT SupportUrl(
                [out, retval] BSTR* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(c2bfb780-4539-4132-ab8c-0a8772013ab6),
    pointer_default(unique),
]
interface IUpdateHistoryEntry2 : IUpdateHistoryEntry
{
 
    [
        id(0x60030001),
        propget
    ]
    HRESULT Categories(
                [out, retval] ICategoryCollection** retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(a7f04f3c-a290-435b-aadf-a116c3357a5c),
    pointer_default(unique),
]
interface IUpdateHistoryEntryCollection : IDispatch
{
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] IUpdateHistoryEntry** retval);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(8f45abf1-f9ae-4b95-a933-f0f66e5056ea),
    pointer_default(unique),
]
interface IUpdateSearcher : IDispatch
{
    [
        id(0x60020001),
        propget
    ]
    HRESULT CanAutomaticallyUpgradeService(
                [out, retval] VARIANT_BOOL* retval);
    [
        id(0x60020001),
        propput,
    ]
    HRESULT CanAutomaticallyUpgradeService(
                [in] VARIANT_BOOL value);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT ClientApplicationID(
                [out, retval] BSTR* retval);
    [
        id(0x60020003),
        propput,
    ]
    HRESULT ClientApplicationID(
                [in] BSTR value);
 
    [
        id(0x60020004),
        propget
    ]
    HRESULT IncludePotentiallySupersededUpdates(
                [out, retval] VARIANT_BOOL* retval);
    [
        id(0x60020004),
        propput,
    ]
    HRESULT IncludePotentiallySupersededUpdates(
                [in] VARIANT_BOOL value);
 
    [
        id(0x60020007),
        propget
    ]
    HRESULT ServerSelection(
                [out, retval] ServerSelection* retval);
    [
        id(0x60020007),
        propput,
    ]
    HRESULT ServerSelection(
                [in] ServerSelection value);
 
HRESULT Opnum16NotUsedOnWire();
 
HRESULT Opnum17NotUsedOnWire();
 
    [
        id(0x6002000a),
    ]
    HRESULT EscapeString(
                [in] BSTR unescaped,
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000b),
    ]
    HRESULT QueryHistory(
                [in] LONG startIndex,
                [in] LONG count,
                [out, retval] IUpdateHistoryEntryCollection** retval);
 
    [
        id(0x6002000c),
    ]
    HRESULT Search(
                [in] BSTR criteria,
                [out, retval] ISearchResult** retval);
 
 
    [
        id(0x6002000d),
        propget
    ]
    HRESULT Online(
                [out, retval] VARIANT_BOOL* retval);
    [
        id(0x6002000d),
        propput,
    ]
    HRESULT Online(
                [in] VARIANT_BOOL value);
 
    [
        id(0x6002000e),
    ]
    HRESULT GetTotalHistoryCount(
                [out, retval] LONG* retval);
 
    [
        id(0x6002000f),
        propget
    ]
    HRESULT ServiceID(
                [out, retval] BSTR* retval);
    
    [
        id(0x6002000f),
        propput
    ]
    HRESULT ServiceID(
                [in] BSTR value);
};
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(4cbdcb2d-1589-4beb-bd1c-3e582ff0add0),
    pointer_default(unique)
]
interface IUpdateSearcher2 : IUpdateSearcher
{
 
    [
        id(0x60030001),
        propget
    ]
    HRESULT IgnoreDownloadPriority(
                [out, retval] VARIANT_BOOL* retval);
    
    [
        id(0x60030001),
        propput
    ]
    HRESULT IgnoreDownloadPriority(
                [in] VARIANT_BOOL value);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(04C6895D-EAF2-4034-97F3-311DE9BE413A),
    pointer_default(unique)
]
interface IUpdateSearcher3 : IUpdateSearcher2
{
 
    [
        id(0x60040001),
        propget
    ]
    HRESULT SearchScope(
                [out, retval] SearchScope* retval);
    
    [
        id(0x60040001),
        propput,
    ]
    HRESULT SearchScope(
                [in] SearchScope value);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(816858a4-260d-4260-933a-2585f1abc76b),
    pointer_default(unique),
]
interface IUpdateSession : IDispatch
{
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT ClientApplicationID(
                [out, retval] BSTR* retval);
    [
        id(0x60020001),
        propput
    ]
    HRESULT ClientApplicationID(
                [in] BSTR value);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT ReadOnly(
                [out, retval] VARIANT_BOOL* retval);
 
HRESULT Opnum11NotUsedOnWire();
 
HRESULT Opnum12NotUsedOnWire();
 
    [
        id(0x60020004)
    ]
    HRESULT CreateUpdateSearcher(
                [out, retval] IUpdateSearcher** retval);
 
HRESULT Opnum14NotUsedOnWire();
 
HRESULT Opnum15NotUsedOnWire();
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(91caf7b0-eb23-49ed-9937-c52d817f46f7),
    pointer_default(unique)
]
interface IUpdateSession2 : IUpdateSession
{
    [
        id(0x60030001),
        propget
    ]
    HRESULT UserLocale(
                [out, retval] LCID* retval);
 
    [
        id(0x60030001),
        propput
    ]
    HRESULT UserLocale(
                [in] LCID lcid);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(918EFD1E-B5D8-4c90-8540-AEB9BDC56F9D),
    pointer_default(unique)
]
interface IUpdateSession3 : IUpdateSession2
{
    [
        id(0x60040001)
    ]
    HRESULT CreateUpdateServiceManager(
                [out, retval] IUpdateServiceManager2** retval);
 
    [
        id(0x60040002)
    ]
    HRESULT QueryHistory(
                [in] BSTR criteria,
                [in] LONG startIndex,
                [in] LONG count,
                [out, retval] IUpdateHistoryEntryCollection** retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(76b3b17e-aed6-4da5-85f0-83587f81abe3),
    pointer_default(unique)
]
interface IUpdateService : IDispatch
{
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Name(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT ContentValidationCert(
                [out, retval] VARIANT* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT ExpirationDate(
                [out, retval] DATE* retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT IsManaged(
                [out, retval] VARIANT_BOOL* retval);
    [
        id(0x60020004),
        propget
    ]
    HRESULT IsRegisteredWithAU(
                [out, retval] VARIANT_BOOL* retval);
    [
        id(0x60020005),
        propget
    ]
    HRESULT IssueDate(
                [out, retval] DATE* retval);
 
    [
        id(0x60020006),
        propget
    ]
    HRESULT OffersWindowsUpdates(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020007),
        propget
    ]
    HRESULT RedirectUrls(
                [out, retval] IStringCollection** retval);
 
    [
        id(0x60020008),
        propget
    ]
    HRESULT ServiceID(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000A),
        propget
    ]
    HRESULT IsScanPackageService(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x6002000B),
        propget
    ]
    HRESULT CanRegisterWithAU(
                [out, retval] VARIANT_BOOL* retval);
 
 
    [
        id(0x6002000C),
        propget
    ]
    HRESULT ServiceUrl(
                [out, retval] BSTR* retval);
 
    [
        id(0x6002000D),
        propget
    ]
    HRESULT SetupPrefix(
                [out, retval] BSTR* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(1518b460-6518-4172-940f-c75883b24ceb),
    pointer_default(unique)
]
interface IUpdateService2 : IUpdateService
{
 
    [
        id(0x60030001),
        propget
    ]
    HRESULT IsDefaultAUService(
                [out, retval] VARIANT_BOOL* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(9b0353aa-0e52-44ff-b8b0-1f7fa0437f88),
    pointer_default(unique)
]
interface IUpdateServiceCollection : IDispatch
{
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT Item(
                [in] LONG index,
                [out, retval] IUpdateService** retval);
 
    [
        id(DISPID_NEWENUM),
        propget
    ]
    HRESULT _NewEnum(
                [out, retval] IUnknown** retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT Count(
                [out, retval] LONG* retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(dde02280-12b3-4e0b-937b-6747f6acb286),
    pointer_default(unique)
]
interface IUpdateServiceRegistration : IDispatch
{
 
    [
        id(DISPID_VALUE),
        propget
    ]
    HRESULT RegistrationState(
                [out, retval] UpdateServiceRegistrationState* retval);
 
    [
        id(0x60020001),
        propget
    ]
    HRESULT ServiceID(
                [out, retval] BSTR* retval);
 
    [
        id(0x60020002),
        propget
    ]
    HRESULT IsPendingRegistrationWithAU(
                [out, retval] VARIANT_BOOL* retval);
 
    [
        id(0x60020003),
        propget
    ]
    HRESULT Service(
                [out, retval] IUpdateService2** retval);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(23857e3c-02ba-44a3-9423-b1c900805f37),
    pointer_default(unique)
]
interface IUpdateServiceManager : IDispatch
{
    [
        id(0x60020001),
        propget
    ]
    HRESULT Services(
                [out, retval] IUpdateServiceCollection** retval);
 
HRESULT Opnum9NotUsedOnWire();
 
    [
        id(0x60020003)
    ]
    HRESULT RegisterServiceWithAU(
                [in]          BSTR serviceID);
 
    [
        id(0x60020004)
    ]
    HRESULT RemoveService(
                [in]          BSTR serviceID);
 
HRESULT Opnum12NotUsedOnWire();
 
    [
        id(0x60020006)
    ]
    HRESULT AddScanPackageService(
                [in] BSTR serviceName,
                [in] BSTR scanFileLocation,
                [in, defaultvalue(0)] LONG flags,
                [out, retval] IUpdateService **ppService);
 
    [
        id(0x60010007)
    ]
    HRESULT SetOption (
               [in] BSTR    optionName,
               [in] VARIANT optionValue);
}
 
[
    object,
    oleautomation,
    dual,
    nonextensible,
    uuid(0bb8531d-7e8d-424f-986c-a0b8f60a3e7b),
    pointer_default(unique)
]
interface IUpdateServiceManager2 : IUpdateServiceManager
{
    [
        id(0x60030001),
        propget
    ]
    HRESULT ClientApplicationID(
                [out, retval] BSTR* retval);
    [
        id(0x60030001),
        propput
    ]
    HRESULT ClientApplicationID(
                [in] BSTR value);
 
    [
        id(0x60030002)
    ]
    HRESULT QueryServiceRegistration(
                [in]          BSTR serviceID,
                [out, retval] IUpdateServiceRegistration** retval);
 
    [
        id(0x60030003)
    ]
    HRESULT AddService2(
                [in]          BSTR serviceID,
                [in]          LONG flags,
                [in]          BSTR authorizationCabPath,
                [out, retval] IUpdateServiceRegistration** retval);
}