commit eac708fbdc1522d4f4ea0b1d5626b737429ac372 Author: Useful Stuffs <157041205+usefulstuffs@users.noreply.github.com> Date: Sun Feb 11 12:51:01 2024 +0100 Add files via upload diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LegacyUpdate.sln b/LegacyUpdate.sln new file mode 100644 index 0000000..7b5cdbf --- /dev/null +++ b/LegacyUpdate.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32929.385 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LegacyUpdate", "LegacyUpdate\LegacyUpdate.vcxproj", "{95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug-VC08|Win32 = Debug-VC08|Win32 + Debug-VC08|x64 = Debug-VC08|x64 + Debug-VC17|Win32 = Debug-VC17|Win32 + Debug-VC17|x64 = Debug-VC17|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC08|Win32.ActiveCfg = Debug-VC08|Win32 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC08|Win32.Build.0 = Debug-VC08|Win32 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC08|x64.ActiveCfg = Debug-VC17|x64 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC08|x64.Build.0 = Debug-VC17|x64 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC17|Win32.ActiveCfg = Debug-VC17|Win32 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC17|Win32.Build.0 = Debug-VC17|Win32 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC17|x64.ActiveCfg = Debug-VC17|x64 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Debug-VC17|x64.Build.0 = Debug-VC17|x64 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Release|Win32.ActiveCfg = Release|Win32 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Release|Win32.Build.0 = Release|Win32 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Release|x64.ActiveCfg = Release|x64 + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E11EF986-8512-4F69-B67C-C40CCB81052A} + EndGlobalSection +EndGlobal diff --git a/LegacyUpdate/Compat.cpp b/LegacyUpdate/Compat.cpp new file mode 100644 index 0000000..0d601d2 --- /dev/null +++ b/LegacyUpdate/Compat.cpp @@ -0,0 +1,39 @@ +#include "stdafx.h" +#include +#include "Utils.h" + +typedef BOOL (WINAPI *_Wow64DisableWow64FsRedirection)(PVOID *OldValue); +typedef BOOL (WINAPI *_Wow64RevertWow64FsRedirection)(PVOID OldValue); +typedef BOOL (WINAPI *_GetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD); + +// XP+ +_Wow64DisableWow64FsRedirection $Wow64DisableWow64FsRedirection = (_Wow64DisableWow64FsRedirection)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "Wow64DisableWow64FsRedirection"); +_Wow64RevertWow64FsRedirection $Wow64RevertWow64FsRedirection = (_Wow64RevertWow64FsRedirection)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "Wow64RevertWow64FsRedirection"); + +// Vista+ +_GetProductInfo $GetProductInfo = (_GetProductInfo)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "GetProductInfo"); + +BOOL GetVistaProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType) { + if ($GetProductInfo) { + return $GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion, dwSpMinorVersion, pdwReturnedProductType); + } else { + *pdwReturnedProductType = PRODUCT_UNDEFINED; + return FALSE; + } +} + +BOOL DisableWow64FsRedirection(PVOID *OldValue) { + if ($Wow64DisableWow64FsRedirection) { + return $Wow64DisableWow64FsRedirection(OldValue); + } else { + return TRUE; + } +} + +BOOL RevertWow64FsRedirection(PVOID OldValue) { + if ($Wow64RevertWow64FsRedirection) { + return $Wow64RevertWow64FsRedirection(OldValue); + } else { + return TRUE; + } +} diff --git a/LegacyUpdate/Compat.h b/LegacyUpdate/Compat.h new file mode 100644 index 0000000..fb6e816 --- /dev/null +++ b/LegacyUpdate/Compat.h @@ -0,0 +1,6 @@ +#pragma once + +BOOL GetVistaProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType); + +BOOL DisableWow64FsRedirection(PVOID *OldValue); +BOOL RevertWow64FsRedirection(PVOID OldValue); diff --git a/LegacyUpdate/CplTasks.xml b/LegacyUpdate/CplTasks.xml new file mode 100644 index 0000000..c9b4626 --- /dev/null +++ b/LegacyUpdate/CplTasks.xml @@ -0,0 +1,18 @@ + + + + + @"%ProgramFiles%\Legacy Update\LegacyUpdate.dll",-3 + legacy update;legacyupdate;update;windows;microsoft;driver;security;software; + %windir%\system32\rundll32.exe "%ProgramFiles%\Legacy Update\LegacyUpdate.dll",LaunchUpdateSite + + + + + + + + + + + diff --git a/LegacyUpdate/ElevationHelper.cpp b/LegacyUpdate/ElevationHelper.cpp new file mode 100644 index 0000000..f8ea24e --- /dev/null +++ b/LegacyUpdate/ElevationHelper.cpp @@ -0,0 +1,74 @@ +// ElevationHelper.cpp : Implementation of CElevationHelper +#include "stdafx.h" +#include "ElevationHelper.h" +#include "Utils.h" +#include + +const BSTR permittedProgIDs[] = { + L"Microsoft.Update.", + NULL +}; +const int permittedProgIDsMax = 1; + +BOOL ProgIDIsPermitted(PWSTR progID) { + if (progID == NULL) { + return FALSE; + } + + for (int i = 0; i < permittedProgIDsMax; i++) { + if (wcsncmp(progID, permittedProgIDs[i], wcslen(permittedProgIDs[i])) == 0) { + return TRUE; + } + } + return FALSE; +} + +STDMETHODIMP CoCreateInstanceAsAdmin(HWND hwnd, __in REFCLSID rclsid, __in REFIID riid, __deref_out void **ppv) { + WCHAR clsidString[45]; + StringFromGUID2(rclsid, clsidString, ARRAYSIZE(clsidString)); + + WCHAR monikerName[75]; + HRESULT hr = StringCchPrintf(monikerName, ARRAYSIZE(monikerName), L"Elevation:Administrator!new:%s", clsidString); + if (!SUCCEEDED(hr)) { + return hr; + } + + BIND_OPTS3 bindOpts; + memset(&bindOpts, 0, sizeof(bindOpts)); + bindOpts.cbStruct = sizeof(bindOpts); + bindOpts.hwnd = hwnd; + bindOpts.dwClassContext = CLSCTX_LOCAL_SERVER; + return CoGetObject(monikerName, &bindOpts, riid, ppv); +} + +HRESULT CElevationHelper::CreateObject(BSTR progID, IDispatch **retval) { + if (progID == NULL) { + return E_INVALIDARG; + } + + HRESULT hr = S_OK; + CComPtr object; + if (!ProgIDIsPermitted(progID)) { + hr = E_ACCESSDENIED; + goto end; + } + + CLSID clsid; + hr = CLSIDFromProgID(progID, &clsid); + if (!SUCCEEDED(hr)) { + goto end; + } + + hr = object.CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER); + if (!SUCCEEDED(hr)) { + goto end; + } + + *retval = object.Detach(); + +end: + if (!SUCCEEDED(hr)) { + TRACE("CreateObject(%ls) failed: %ls\n", progID, GetMessageForHresult(hr)); + } + return hr; +} diff --git a/LegacyUpdate/ElevationHelper.h b/LegacyUpdate/ElevationHelper.h new file mode 100644 index 0000000..e81bb26 --- /dev/null +++ b/LegacyUpdate/ElevationHelper.h @@ -0,0 +1,44 @@ +#pragma once + +// ElevationHelper.h : Declaration of the CElevationHelper class. + +#include +#include "resource.h" +#include "LegacyUpdate_i.h" + +BOOL ProgIDIsPermitted(PWSTR progID); +STDMETHODIMP CoCreateInstanceAsAdmin(HWND hwnd, __in REFCLSID rclsid, __in REFIID riid, __deref_out void **ppv); + +// CElevationHelper +class ATL_NO_VTABLE CElevationHelper : + public CComObjectRootEx, + public CComCoClass, + public ISupportErrorInfo, + public IDispatchImpl { + +public: + CElevationHelper() {} + + DECLARE_REGISTRY_RESOURCEID(IDR_ELEVATIONHELPER) + + BEGIN_COM_MAP(CElevationHelper) + COM_INTERFACE_ENTRY(IElevationHelper) + COM_INTERFACE_ENTRY(IDispatch) + COM_INTERFACE_ENTRY(ISupportErrorInfo) + END_COM_MAP() + + // ISupportsErrorInfo + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid) { + return IsEqualGUID(riid, IID_IElevationHelper) ? S_OK : S_FALSE; + } + + // IElevationHelper + DECLARE_PROTECT_FINAL_CONSTRUCT() + + HRESULT FinalConstruct() { return S_OK; } + void FinalRelease() {} + + STDMETHODIMP CreateObject(BSTR progID, IDispatch **retval); +}; + +OBJECT_ENTRY_AUTO(__uuidof(ElevationHelper), CElevationHelper) diff --git a/LegacyUpdate/ElevationHelper.rgs b/LegacyUpdate/ElevationHelper.rgs new file mode 100644 index 0000000..696e2a9 --- /dev/null +++ b/LegacyUpdate/ElevationHelper.rgs @@ -0,0 +1,32 @@ +HKCR +{ + LegacyUpdate.ElevationHelper.1 = s 'Legacy Update Elevation Helper' + { + CLSID = s '{84F517AD-6438-478F-BEA8-F0B808DC257F}' + } + LegacyUpdate.ElevationHelper = s 'Legacy Update Elevation Helper' + { + CurVer = s 'LegacyUpdate.ElevationHelper.1' + } + NoRemove CLSID + { + ForceRemove {84F517AD-6438-478F-BEA8-F0B808DC257F} = s 'Legacy Update Elevation Helper' + { + ProgID = s 'LegacyUpdate.ElevationHelper.1' + VersionIndependentProgID = s 'LegacyUpdate.ElevationHelper' + InprocServer32 = s '%MODULE%' + { + val ThreadingModel = s 'Apartment' + } + val AppID = s '%APPID%' + val LocalizedString = s '@%MODULE%,-2' + TypeLib = s '{05D22F33-C7C3-4C90-BDD9-CEDC86EA8FBE}' + Version = s '1.0' + Elevation + { + val Enabled = d '1' + val IconReference = s '@%MODULE%,-201' + } + } + } +} diff --git a/LegacyUpdate/LaunchUpdateSite.cpp b/LegacyUpdate/LaunchUpdateSite.cpp new file mode 100644 index 0000000..129e8ac --- /dev/null +++ b/LegacyUpdate/LaunchUpdateSite.cpp @@ -0,0 +1,174 @@ +#include "stdafx.h" +#include +#include +#include +#include +#include +#include "Utils.h" +#include "LegacyUpdate_i.h" +#include "dllmain.h" + +const LPCSTR UpdateSiteHostname = "legacyupdate.net"; +const LPWSTR UpdateSiteURLHttp = L"http://legacyupdate.net/windowsupdate/v6/"; +const LPWSTR UpdateSiteURLHttps = L"https://legacyupdate.net/windowsupdate/v6/"; +const LPWSTR UpdateSiteFirstRunFlag = L"?firstrun=true"; + +static BOOL CanUseSSLConnection() { + // Get the Windows Update website URL set by Legacy Update setup + LPWSTR data; + DWORD size; + HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate", L"URL", NULL, &data, &size); + if (!SUCCEEDED(hr)) { + goto end; + } + + // Return based on the URL value + if (StrCmpW(data, UpdateSiteURLHttps) == 0) { + return TRUE; + } else if (StrCmpW(data, UpdateSiteURLHttp) == 0) { + return FALSE; + } + +end: + // Fallback: Use SSL only on Vista and up + OSVERSIONINFOEX *versionInfo = GetVersionInfo(); + return versionInfo->dwMajorVersion > 5; +} + +// Function signature required by Rundll32.exe. +void CALLBACK LaunchUpdateSite(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) { + HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + CComPtr browser; + CComVariant url; + CComVariant flags(0); + CComVariant nullVariant; + if (!SUCCEEDED(hr)) { + goto end; + } + + // If running on 2k/XP, make sure we're elevated. If not, show Run As prompt. + if (GetVersionInfo()->dwMajorVersion < 6 && !IsUserAnAdmin()) { + LPWSTR filename; + DWORD filenameSize; + GetOwnFileName(&filename, &filenameSize); + WCHAR args[MAX_PATH + 20]; + StringCchPrintfW(args, filenameSize + 20, L"\"%ls\",LaunchUpdateSite", filename); + + // Ignore C4311 and C4302, which is for typecasts. It is due to ShellExec and should be safe to bypass. + #pragma warning(disable: 4311 4302) + int execResult = (int)ShellExecute(NULL, L"runas", L"rundll32.exe", args, NULL, SW_SHOWDEFAULT); + #pragma warning(default: 4311 4302) + + // Access denied happens when the user clicks No/Cancel. + if (execResult <= 32 && execResult != SE_ERR_ACCESSDENIED) { + hr = E_FAIL; + } + goto end; + } + + // Spawn an IE window via the COM interface. This ensures the page opens in IE (ShellExecute uses + // default browser), and avoids hardcoding a path to iexplore.exe. Also conveniently allows testing + // on Windows 11 (iexplore.exe redirects to Edge, but COM still works). Same strategy as used by + // Wupdmgr.exe and Muweb.dll,LaunchMUSite. + hr = browser.CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER); + if (hr == REGDB_E_CLASSNOTREG) { + // Handle case where the user has uninstalled Internet Explorer using Programs and Features. + OSVERSIONINFOEX *versionInfo = GetVersionInfo(); + + // Windows 8+: Directly prompt to reinstall IE using Fondue.exe. + SYSTEM_INFO systemInfo; + GetSystemInfo(&systemInfo); + LPWSTR archSuffix = systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ? L"amd64" : L"x86"; + + WCHAR fondueArgs[256]; + StringCchPrintfW(fondueArgs, 256, L"/enable-feature:Internet-Explorer-Optional-%ls", archSuffix); + #pragma warning(disable: 4311 4302) + int execResult = (int)ShellExecute(NULL, L"open", L"fondue.exe", fondueArgs, NULL, SW_SHOWDEFAULT); + #pragma warning(default: 4311 4302) + + if (execResult <= 32) { + // Tell the user what they need to do, then open the Optional Features dialog. + WCHAR message[4096]; + LoadString(g_hInstance, IDS_IENOTINSTALLED, message, ARRAYSIZE(message)); + MessageBox(hwnd, message, L"Legacy Update", MB_OK | MB_ICONEXCLAMATION); + ShellExecute(NULL, L"open", L"OptionalFeatures.exe", NULL, NULL, SW_SHOWDEFAULT); + } + hr = S_OK; + goto end; + } else if (!SUCCEEDED(hr)) { + goto end; + } + + // Can we connect with https? WinInet will throw an error if not. + LPWSTR siteURL = CanUseSSLConnection() ? UpdateSiteURLHttps : UpdateSiteURLHttp; + + // Is this a first run launch? Append first run flag if so. + if (strcmp(lpszCmdLine, "firstrun") == 0) { + WCHAR newSiteURL[256]; + StringCchPrintfW(newSiteURL, 256, L"%s%s", siteURL, UpdateSiteFirstRunFlag); + siteURL = newSiteURL; + } + + url = siteURL; + hr = browser->Navigate2(&url, &flags, &nullVariant, &nullVariant, &nullVariant); + if (!SUCCEEDED(hr)) { + goto end; + } + + HWND ieHwnd; + hr = browser->get_HWND((SHANDLE_PTR *)&ieHwnd); + if (!SUCCEEDED(hr)) { + goto end; + } + + // Are we on a small display? If so, resize and maximise the window. + HMONITOR monitor = MonitorFromWindow(ieHwnd, MONITOR_DEFAULTTONEAREST); + MONITORINFO monitorInfo; + monitorInfo.cbSize = sizeof(MONITORINFO); + + if (GetMonitorInfo(monitor, &monitorInfo) > 0) { + LONG workWidth = monitorInfo.rcWork.right - monitorInfo.rcWork.left; + LONG workHeight = monitorInfo.rcWork.bottom - monitorInfo.rcWork.top; + + LONG width, height; + browser->get_Width(&width); + browser->get_Height(&height); + + if (width < 800) { + width = min(800, workWidth); + browser->put_Width(width); + } + if (height < 600) { + height = min(600, workHeight); + browser->put_Height(height); + } + + LONG left, top; + browser->get_Left(&left); + browser->get_Top(&top); + + if (left + width > workWidth) { + browser->put_Left(0); + } + if (top + height > workHeight) { + browser->put_Top(0); + } + + if (workWidth <= 1152) { + ShowWindow(ieHwnd, SW_MAXIMIZE); + } + } + + browser->put_Visible(TRUE); + + // Focus the window, since it seems to not always get focus as it should. + SetForegroundWindow(ieHwnd); + +end: + if (!SUCCEEDED(hr)) { + MessageBox(NULL, GetMessageForHresult(hr), L"Legacy Update", MB_OK | MB_ICONEXCLAMATION); + } + + browser = NULL; + CoUninitialize(); +} diff --git a/LegacyUpdate/LaunchUpdateSite.h b/LegacyUpdate/LaunchUpdateSite.h new file mode 100644 index 0000000..cfe1335 --- /dev/null +++ b/LegacyUpdate/LaunchUpdateSite.h @@ -0,0 +1,3 @@ +#pragma once + +void CALLBACK LaunchUpdateSite(HWND hwnd, HINSTANCE hinstance, LPSTR lpszCmdLine, int nCmdShow); \ No newline at end of file diff --git a/LegacyUpdate/LegacyUpdate.def b/LegacyUpdate/LegacyUpdate.def new file mode 100644 index 0000000..30ba241 --- /dev/null +++ b/LegacyUpdate/LegacyUpdate.def @@ -0,0 +1,8 @@ +; LegacyUpdate.def : Declares the module parameters. + +EXPORTS + DllCanUnloadNow PRIVATE + DllGetClassObject PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE + LaunchUpdateSite PRIVATE diff --git a/LegacyUpdate/LegacyUpdate.idl b/LegacyUpdate/LegacyUpdate.idl new file mode 100644 index 0000000..f75306c --- /dev/null +++ b/LegacyUpdate/LegacyUpdate.idl @@ -0,0 +1,123 @@ +// LegacyUpdate.idl : IDL source for LegacyUpdate +// + +// This file will be processed by the MIDL tool to +// produce the type library (LegacyUpdate.tlb) and marshalling code. + +#include +#include +import "oaidl.idl"; +import "ocidl.idl"; + +typedef enum { + e_majorVer = 0, + e_minorVer = 1, + e_buildNumber = 2, + e_platform = 3, + e_SPMajor = 4, + e_SPMinor = 5, + e_productSuite = 6, + e_productType = 7, + e_systemMetric = 8, + e_SPVersionString = 9, + e_controlVersionString = 10, + e_VistaProductType = 11, + e_productName = 12, + e_displayVersion = 13, + e_maxOSVersionFieldValue = 13 +} OSVersionField; + +typedef enum { + e_nonAdmin = 0, + e_admin = 2, + e_elevated = 3 +} UserType; + +[ + object, + uuid(C33085BB-C3E1-4D27-A214-AF01953DF5E5), + dual, + nonextensible, + helpstring("ILegacyUpdateCtrl Interface"), + pointer_default(unique) +] +interface ILegacyUpdateCtrl : IDispatch { + [id(1)] HRESULT CheckControl([out, retval] VARIANT_BOOL *retval); + [id(2)] HRESULT MessageForHresult(LONG inHresult, [out, retval] BSTR *retval); + [id(3)] HRESULT GetOSVersionInfo(OSVersionField osField, LONG systemMetric, [out, retval] VARIANT *retval); + [id(14)] HRESULT RequestElevation(void); + [id(4)] HRESULT CreateObject(BSTR progID, [out, retval] IDispatch **retval); + [id(5)] HRESULT GetUserType([out, retval] UserType *retval); + [id(8)] HRESULT RebootIfRequired(void); + [id(9)] HRESULT ViewWindowsUpdateLog(void); + [id(13)] HRESULT OpenWindowsUpdateSettings(void); + + [id(6), propget] HRESULT IsRebootRequired([out, retval] VARIANT_BOOL *retval); + [id(7), propget] HRESULT IsWindowsUpdateDisabled([out, retval] VARIANT_BOOL *retval); + [id(10), propget] HRESULT IsUsingWsusServer([out, retval] VARIANT_BOOL *retval); + [id(11), propget] HRESULT WsusServerUrl([out, retval] BSTR *retval); + [id(12), propget] HRESULT WsusStatusServerUrl([out, retval] BSTR *retval); +}; + +[ + object, + uuid(4524BFBF-70BD-4EAC-AD33-6BADA4FB0638), + dual, + nonextensible, + pointer_default(unique) +] +interface IProgressBarControl : IDispatch +{ + [id(1), propget] HRESULT Value([out, retval] SHORT *retval); + [id(1), propput] HRESULT Value([in] SHORT newVal); +}; + +[ + object, + uuid(3236E684-0E4B-4780-9F31-F1983F5AB78D), + dual, + nonextensible, + pointer_default(unique), + oleautomation +] +interface IElevationHelper : IDispatch +{ + [id(1)] HRESULT CreateObject(BSTR progID, [out, retval] IDispatch **retval); +}; + +[ + uuid(05D22F33-C7C3-4C90-BDD9-CEDC86EA8FBE), + version(1.0), + helpstring("Legacy Update Control") +] +library LegacyUpdateLib { + importlib(STDOLE_TLB); + + [ + uuid(AD28E0DF-5F5A-40B5-9432-85EFD97D1F9F), + control, + helpstring("LegacyUpdateCtrl Class") + ] + coclass LegacyUpdateCtrl { + [default] interface ILegacyUpdateCtrl; + }; + + [ + uuid(7B875A2F-2DFB-4D38-91F5-5C0BFB74C377), + control, + helpstring("ProgressBarControl Class") + ] + coclass ProgressBarControl + { + [default] interface IProgressBarControl; + }; + + [ + uuid(84F517AD-6438-478F-BEA8-F0B808DC257F), + helpstring("ElevationHelper Class") + ] + coclass ElevationHelper + { + [default] interface IElevationHelper; + }; +}; diff --git a/LegacyUpdate/LegacyUpdate.rc b/LegacyUpdate/LegacyUpdate.rc new file mode 100644 index 0000000..90e2e15 --- /dev/null +++ b/LegacyUpdate/LegacyUpdate.rc @@ -0,0 +1,153 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#ifndef APSTUDIO_INVOKED +#include "targetver.h" +#endif +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(65001) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#ifndef APSTUDIO_INVOKED\r\n" + "#include ""targetver.h""\r\n" + "#endif\r\n" + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "1 TYPELIB ""LegacyUpdate.tlb""\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,9,0,0 + PRODUCTVERSION 1,9,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Hashbang Productions" + VALUE "FileDescription", "Legacy Update" + VALUE "FileVersion", "1.9.0.0" + VALUE "InternalName", "LegacyUpdate.dll" + VALUE "LegalCopyright", "© Hashbang Productions. All rights reserved." + VALUE "OriginalFilename", "LegacyUpdate.dll" + VALUE "ProductName", "Legacy Update" + VALUE "ProductVersion", "1.9.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON1 ICON "icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// REGISTRY +// + +IDR_LEGACYUPDATEOCX REGISTRY "LegacyUpdate.rgs" + +IDR_LEGACYUPDATECTRL REGISTRY "LegacyUpdateCtrl.rgs" + +IDR_PROGRESSBARCONTROL REGISTRY "ProgressBarControl.rgs" + +IDR_ELEVATIONHELPER REGISTRY "ElevationHelper.rgs" + + +///////////////////////////////////////////////////////////////////////////// +// +// XML +// + +IDR_CPLTASKS XML "CplTasks.xml" + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_LEGACYUPDATEOCX "Legacy Update Control" + IDS_LEGACYUPDATE "Legacy Update" + IDS_CHECKFORUPDATES "Check for updates" + IDS_CHECKFORUPDATES_ALT "Check for software and driver updates via Legacy Update." + IDS_IENOTINSTALLED "Internet Explorer is not installed. Use Optional Features in Control Panel to install it before using Legacy Update." +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +1 TYPELIB "LegacyUpdate.tlb" + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/LegacyUpdate/LegacyUpdate.rgs b/LegacyUpdate/LegacyUpdate.rgs new file mode 100644 index 0000000..6d2f147 --- /dev/null +++ b/LegacyUpdate/LegacyUpdate.rgs @@ -0,0 +1,14 @@ +HKCR +{ + NoRemove AppID + { + '%APPID%' = s 'Legacy Update Control' + { + val DllSurrogate = s '' + } + 'LegacyUpdate.dll' + { + val AppID = s '%APPID%' + } + } +} diff --git a/LegacyUpdate/LegacyUpdate.vcxproj b/LegacyUpdate/LegacyUpdate.vcxproj new file mode 100644 index 0000000..af43476 --- /dev/null +++ b/LegacyUpdate/LegacyUpdate.vcxproj @@ -0,0 +1,493 @@ + + + + + Debug-VC08 + x64 + + + Debug-VC17 + Win32 + + + Debug-VC08 + Win32 + + + Debug-VC17 + x64 + + + Release + Win32 + + + Release + x64 + + + + {95F3E1A1-5DDA-4C4D-B52B-981D46E6C98B} + LegacyUpdate + AtlProj + 7.0 + + + + DynamicLibrary + true + Unicode + v90 + Dynamic + + + DynamicLibrary + true + Unicode + v90 + Dynamic + + + DynamicLibrary + true + Unicode + v141_xp + + + DynamicLibrary + true + Unicode + v141_xp + + + DynamicLibrary + false + true + Unicode + v90 + Static + Static + + + DynamicLibrary + false + true + Unicode + v141_xp + Static + Static + + + + + + + + + + + + + + + + + + + + + + + + + true + .dll + $(SolutionDir)\shared;$(IncludePath) + + + true + .dll + $(SolutionDir)\shared;$(IncludePath) + + + true + .dll + $(SolutionDir)\shared;$(IncludePath) + + + true + .dll + $(SolutionDir)\shared;$(IncludePath) + + + false + .dll + $(SolutionDir)\shared;$(IncludePath) + + + false + .dll + $(SolutionDir)\shared;$(IncludePath) + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions) + true + + + + Windows + true + .\LegacyUpdate.def + $(OutDir)$(ProjectName).dll + + + _DEBUG;%(PreprocessorDefinitions) + false + Win32 + true + $(IntDir)LegacyUpdate.tlb + LegacyUpdate_i.h + + + LegacyUpdate_i.c + LegacyUpdate_p.c + true + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + cmd /c start "" taskkill /im iexplore.exe + + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions) + true + + + + Windows + true + .\LegacyUpdate.def + $(OutDir)$(ProjectName).dll + + + _DEBUG;%(PreprocessorDefinitions) + false + true + $(IntDir)LegacyUpdate.tlb + LegacyUpdate_i.h + + + LegacyUpdate_i.c + LegacyUpdate_p.c + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + cmd /c start "" taskkill /im iexplore.exe + + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions) + true + + + + Windows + true + .\LegacyUpdate.def + $(OutDir)$(ProjectName).dll + + + _DEBUG;%(PreprocessorDefinitions) + false + Win32 + true + $(IntDir)LegacyUpdate.tlb + LegacyUpdate_i.h + + + LegacyUpdate_i.c + LegacyUpdate_p.c + true + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + cmd /c start "" taskkill /im iexplore.exe + + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions) + true + + + + Windows + true + .\LegacyUpdate.def + $(OutDir)$(ProjectName).dll + + + _DEBUG;%(PreprocessorDefinitions) + false + true + $(IntDir)LegacyUpdate.tlb + LegacyUpdate_i.h + + + LegacyUpdate_i.c + LegacyUpdate_p.c + + + 0x0409 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + cmd /c start "" taskkill /im iexplore.exe + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;NDEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions) + true + + + + Windows + true + true + true + .\LegacyUpdate.def + $(OutDir)$(ProjectName).dll + + + + + _DEBUG;%(PreprocessorDefinitions) + false + Win32 + true + $(IntDir)LegacyUpdate.tlb + LegacyUpdate_i.h + + + LegacyUpdate_i.c + LegacyUpdate_p.c + true + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + cmd /c start "" taskkill /im iexplore.exe + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;NDEBUG;_USRDLL;_MERGE_PROXYSTUB;%(PreprocessorDefinitions) + true + + + + Windows + true + true + true + .\LegacyUpdate.def + $(OutDir)$(ProjectName).dll + + + + + _DEBUG;%(PreprocessorDefinitions) + false + true + $(IntDir)LegacyUpdate.tlb + LegacyUpdate_i.h + + + LegacyUpdate_i.c + LegacyUpdate_p.c + + + 0x0409 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + true + + + + + + + + + + + + + Create + Create + Create + Create + Create + Create + + + + + + + + false + false + + + + + false + false + + + + + false + false + + + + + + + false + false + + + + + false + false + + + + + false + false + + + + + + + false + false + + + + + false + false + + + + + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LegacyUpdate/LegacyUpdate.vcxproj.filters b/LegacyUpdate/LegacyUpdate.vcxproj.filters new file mode 100644 index 0000000..2c8792c --- /dev/null +++ b/LegacyUpdate/LegacyUpdate.vcxproj.filters @@ -0,0 +1,136 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {7f88225c-35ff-498e-a402-49bc456952b5} + + + + + Source Files + + + Resource Files + + + Resource Files + + + Resource Files + + + Resource Files + + + + Resource Files + + + Resource Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Shared + + + Shared + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Shared + + + Shared + + + + + Resource Files + + + + + Source Files + + + \ No newline at end of file diff --git a/LegacyUpdate/LegacyUpdateCtrl.cpp b/LegacyUpdate/LegacyUpdateCtrl.cpp new file mode 100644 index 0000000..ca3cb6b --- /dev/null +++ b/LegacyUpdate/LegacyUpdateCtrl.cpp @@ -0,0 +1,435 @@ +// LegacyUpdateCtrl.cpp : Implementation of the CLegacyUpdateCtrl ActiveX Control class. + +#include "stdafx.h" +#include "LegacyUpdateCtrl.h" +#include "Utils.h" +#include "Compat.h" +#include "ElevationHelper.h" +#include +#include +#include +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +const BSTR permittedHosts[] = { + L"legacyupdate.net", + L"test.legacyupdate.net", + NULL +}; +const int permittedHostsMax = 2; + +// CLegacyUpdateCtrl message handlers + +IHTMLDocument2 *CLegacyUpdateCtrl::GetHTMLDocument() { + CComPtr clientSite; + HRESULT hr = GetClientSite(&clientSite); + if (!SUCCEEDED(hr) || clientSite == NULL) { + TRACE("GetDocument() failed: %ls\n", GetMessageForHresult(hr)); + return NULL; + } + + CComPtr container; + hr = clientSite->GetContainer(&container); + if (!SUCCEEDED(hr) || container == NULL) { + TRACE("GetDocument() failed: %ls\n", GetMessageForHresult(hr)); + return NULL; + } + + CComPtr document; + hr = container->QueryInterface(IID_IHTMLDocument2, (void**)&document); + if (!SUCCEEDED(hr) || document == NULL) { + TRACE("GetDocument() failed: %ls\n", GetMessageForHresult(hr)); + return NULL; + } + + return document.Detach(); +} + +HWND CLegacyUpdateCtrl::GetIEWindowHWND() { + CComPtr oleWindow; + HRESULT hr = QueryInterface(IID_IOleWindow, (void**)&oleWindow); + if (!SUCCEEDED(hr) || !oleWindow) { + goto end; + } + + HWND hwnd; + hr = oleWindow->GetWindow(&hwnd); + if (!SUCCEEDED(hr)) { + goto end; + } + + return hwnd; + +end: + if (!SUCCEEDED(hr)) { + TRACE("GetIEWindowHWND() failed: %ls\n", GetMessageForHresult(hr)); + } + return 0; +} + +BOOL CLegacyUpdateCtrl::IsPermitted(void) { + CComPtr document = GetHTMLDocument(); + if (document == NULL) { +#ifdef _DEBUG + // Allow debugging outside of IE (e.g. via PowerShell) + TRACE("GetHTMLDocument() failed - allowing anyway due to debug build\n"); + return TRUE; +#else + return FALSE; +#endif + } + + CComPtr location; + CComBSTR host; + HRESULT hr = document->get_location(&location); + if (!SUCCEEDED(hr) || location == NULL) { + goto end; + } + + hr = location->get_host(&host); + if (!SUCCEEDED(hr)) { + goto end; + } + + for (int i = 0; i < permittedHostsMax; i++) { + if (wcscmp(host, permittedHosts[i]) == 0) { + return TRUE; + } + } + +end: + if (!SUCCEEDED(hr)) { + TRACE("IsPermitted() failed: %ls\n", GetMessageForHresult(hr)); + } + return FALSE; +} + +#define DoIsPermittedCheck() \ + if (!IsPermitted()) { \ + return E_ACCESSDENIED; \ + } + +STDMETHODIMP CLegacyUpdateCtrl::CheckControl(VARIANT_BOOL *retval) { + DoIsPermittedCheck(); + + // Just return true so the site can confirm the control is working. + *retval = TRUE; + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::MessageForHresult(LONG inHresult, BSTR *retval) { + DoIsPermittedCheck(); + *retval = GetMessageForHresult(inHresult); + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::GetOSVersionInfo(OSVersionField osField, LONG systemMetric, VARIANT *retval) { + DoIsPermittedCheck(); + + VariantInit(retval); + retval->vt = VT_I4; + + OSVERSIONINFOEX *versionInfo = GetVersionInfo(); + + switch (osField) { + case e_majorVer: + retval->lVal = versionInfo->dwMajorVersion; + break; + + case e_minorVer: + retval->lVal = versionInfo->dwMinorVersion; + break; + + case e_buildNumber: + retval->lVal = versionInfo->dwBuildNumber; + break; + + case e_platform: + retval->lVal = versionInfo->dwPlatformId; + break; + + case e_SPMajor: + retval->lVal = versionInfo->wServicePackMajor; + break; + + case e_SPMinor: + retval->lVal = versionInfo->wServicePackMinor; + break; + + case e_productSuite: + retval->lVal = versionInfo->wSuiteMask; + break; + + case e_productType: + retval->lVal = versionInfo->wProductType; + break; + + case e_systemMetric: + retval->lVal = GetSystemMetrics(systemMetric); + break; + + case e_SPVersionString: { + LPWSTR data; + DWORD size; + HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"BuildLab", NULL, &data, &size); + if (SUCCEEDED(hr)) { + retval->vt = VT_BSTR; + retval->bstrVal = SysAllocStringLen(data, size - 1); + } else { + // BuildLab doesn't exist on Windows 2000. + retval->vt = VT_BSTR; + retval->bstrVal = SysAllocString(versionInfo->szCSDVersion); + } + break; + } + + case e_controlVersionString: { + LPWSTR data; + DWORD size; + HRESULT hr = GetOwnVersion(&data, &size); + if (!SUCCEEDED(hr)) { + return hr; + } + retval->vt = VT_BSTR; + retval->bstrVal = SysAllocStringLen(data, size - 1); + break; + } + + case e_VistaProductType: { + DWORD productType; + GetVistaProductInfo(versionInfo->dwMajorVersion, versionInfo->dwMinorVersion, versionInfo->wServicePackMajor, versionInfo->wServicePackMinor, &productType); + retval->vt = VT_UI4; + retval->ulVal = productType; + break; + } + + case e_productName: { + HRESULT hr = GetOSProductName(retval); + if (!SUCCEEDED(hr)) { + LPWSTR data; + DWORD size; + hr = GetRegistryString(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"ProductName", NULL, &data, &size); + if (SUCCEEDED(hr)) { + retval->vt = VT_BSTR; + retval->bstrVal = SysAllocStringLen(data, size - 1); + } else { + VariantClear(retval); + } + } + break; + } + + case e_displayVersion: { + LPWSTR data; + DWORD size; + HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", L"DisplayVersion", NULL, &data, &size); + if (SUCCEEDED(hr)) { + retval->vt = VT_BSTR; + retval->bstrVal = SysAllocStringLen(data, size - 1); + } else { + VariantClear(retval); + } + break; + } + } + + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::RequestElevation() { + DoIsPermittedCheck(); + + if (m_elevatedHelper != NULL || GetVersionInfo()->dwMajorVersion < 6) { + return S_OK; + } + + // https://learn.microsoft.com/en-us/windows/win32/com/the-com-elevation-moniker + HRESULT hr = CoCreateInstanceAsAdmin(GetIEWindowHWND(), CLSID_ElevationHelper, IID_IElevationHelper, (void**)&m_elevatedHelper); + if (!SUCCEEDED(hr)) { + TRACE("RequestElevation() failed: %ls\n", GetMessageForHresult(hr)); + } + return hr; +} + +STDMETHODIMP CLegacyUpdateCtrl::CreateObject(BSTR progID, IDispatch **retval) { + DoIsPermittedCheck(); + + HRESULT hr = S_OK; + CComPtr elevatedHelper; + if (progID == NULL) { + hr = E_INVALIDARG; + goto end; + } + + if (!ProgIDIsPermitted(progID)) { + hr = E_ACCESSDENIED; + goto end; + } + + elevatedHelper = m_elevatedHelper ? m_elevatedHelper : m_nonElevatedHelper; + if (elevatedHelper == NULL) { + // Use the helper directly, without elevation. It's the responsibility of the caller to ensure it + // is already running as admin on 2k/XP, or that it has requested elevation on Vista+. + m_nonElevatedHelper.CoCreateInstance(CLSID_ElevationHelper, NULL, CLSCTX_INPROC_SERVER); + if (!SUCCEEDED(hr)) { + goto end; + } + elevatedHelper = m_nonElevatedHelper; + } + + return elevatedHelper->CreateObject(progID, retval); + +end: + if (!SUCCEEDED(hr)) { + TRACE("CreateObject(%ls) failed: %ls\n", progID, GetMessageForHresult(hr)); + } + return hr; +} + +STDMETHODIMP CLegacyUpdateCtrl::GetUserType(UserType *retval) { + DoIsPermittedCheck(); + + if (IsUserAnAdmin()) { + // Entire process is elevated. + *retval = e_admin; + } else if (m_elevatedHelper != NULL) { + // Our control has successfully received elevation. + *retval = e_elevated; + } else { + // The control has no admin rights (although it may not have requested them yet). + *retval = e_nonAdmin; + } + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::get_IsRebootRequired(VARIANT_BOOL *retval) { + DoIsPermittedCheck(); + + HKEY subkey; + HRESULT hr = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update\\RebootRequired", 0, KEY_READ, &subkey); + *retval = subkey != NULL; + if (subkey != NULL) { + RegCloseKey(subkey); + } + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::get_IsWindowsUpdateDisabled(VARIANT_BOOL *retval) { + DoIsPermittedCheck(); + + DWORD noWU; + HRESULT hr = GetRegistryDword(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", L"NoWindowsUpdate", NULL, &noWU); + if (SUCCEEDED(hr) && noWU == 1) { + *retval = TRUE; + return S_OK; + } + + DWORD disableWUAccess; + hr = GetRegistryDword(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\WindowsUpdate", L"DisableWindowsUpdateAccess", NULL, &disableWUAccess); + if (SUCCEEDED(hr) && disableWUAccess == 1) { + *retval = TRUE; + return S_OK; + } + + *retval = FALSE; + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::RebootIfRequired(void) { + DoIsPermittedCheck(); + + VARIANT_BOOL isRebootRequired; + if (SUCCEEDED(get_IsRebootRequired(&isRebootRequired)) && isRebootRequired) { + Reboot(); + } + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::ViewWindowsUpdateLog(void) { + DoIsPermittedCheck(); + + WCHAR windir[MAX_PATH]; + HRESULT hr = SHGetFolderPath(0, CSIDL_WINDOWS, NULL, 0, windir); + if (!SUCCEEDED(hr)) { + TRACE(L"SHGetFolderPath() failed: %ls\n", GetMessageForHresult(hr)); + return hr; + } + + // Try Windows Server 2003 Resource Kit (or MSYS/Cygwin/etc) tail.exe, falling back to directly + // opening the file (most likely in Notepad). + // Ignore C4311 and C4302, which is for typecasts. It is due to ShellExec and should be safe to bypass. + #pragma warning(disable: 4311 4302) + if ((int)ShellExecute(NULL, L"open", L"tail.exe", L"-f WindowsUpdate.log", windir, SW_SHOWDEFAULT) > 32) { + return S_OK; + } + ShellExecute(NULL, L"open", L"WindowsUpdate.log", NULL, windir, SW_SHOWDEFAULT); + #pragma warning(default: 4311 4302) + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::OpenWindowsUpdateSettings(void) { + DoIsPermittedCheck(); + + // Some issues arise from the working directory being SysWOW64 rather than System32. Notably, + // Windows Vista - 8.1 don't have wuauclt.exe in SysWOW64. Disable WOW64 redirection temporarily + // to work around this. + PVOID oldValue; + BOOL isRedirected = DisableWow64FsRedirection(&oldValue); + + WCHAR systemDir[MAX_PATH]; + HRESULT hr = SHGetFolderPath(0, CSIDL_SYSTEM, NULL, 0, systemDir); + if (!SUCCEEDED(hr)) { + TRACE(L"SHGetFolderPath() failed: %ls\n", GetMessageForHresult(hr)); + return hr; + } + + DWORD majorVersion = GetVersionInfo()->dwMajorVersion; + if (majorVersion >= 10) { + // Windows 10+: Open Settings app + ShellExecute(NULL, NULL, L"ms-settings:windowsupdate-options", NULL, systemDir, SW_SHOWDEFAULT); + } else if (majorVersion >= 6) { + // Windows Vista, 7, 8: Open Windows Update control panel + ShellExecute(NULL, NULL, L"wuauclt.exe", L"/ShowOptions", systemDir, SW_SHOWDEFAULT); + } else { + // Windows 2000, XP: Open Automatic Updates control panel + ShellExecute(NULL, NULL, L"wuaucpl.cpl", NULL, systemDir, SW_SHOWDEFAULT); + } + + // Revert WOW64 redirection if we changed it. + if (isRedirected) { + RevertWow64FsRedirection(oldValue); + } + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::get_IsUsingWsusServer(VARIANT_BOOL *retval) { + DoIsPermittedCheck(); + + DWORD useWUServer; + HRESULT hr = GetRegistryDword(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU", L"UseWUServer", NULL, &useWUServer); + *retval = SUCCEEDED(hr) && useWUServer == 1; + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::get_WsusServerUrl(BSTR *retval) { + DoIsPermittedCheck(); + + LPWSTR data; + DWORD size; + HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", L"WUServer", NULL, &data, &size); + *retval = SUCCEEDED(hr) ? SysAllocStringLen(data, size - 1) : NULL; + return S_OK; +} + +STDMETHODIMP CLegacyUpdateCtrl::get_WsusStatusServerUrl(BSTR *retval) { + DoIsPermittedCheck(); + + LPWSTR data; + DWORD size; + HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate", L"WUStatusServer", NULL, &data, &size); + *retval = SUCCEEDED(hr) ? SysAllocStringLen(data, size - 1) : NULL; + return S_OK; +} diff --git a/LegacyUpdate/LegacyUpdateCtrl.h b/LegacyUpdate/LegacyUpdateCtrl.h new file mode 100644 index 0000000..8a53fb7 --- /dev/null +++ b/LegacyUpdate/LegacyUpdateCtrl.h @@ -0,0 +1,114 @@ +#pragma once + +// LegacyUpdateCtrl.h : Declaration of the CLegacyUpdateCtrl ActiveX Control class. + +// CLegacyUpdateCtrl : See LegacyUpdateCtrl.cpp for implementation. + +#include +#include +#include "resource.h" +#include "LegacyUpdate_i.h" + +// CLegacyUpdateCtrl +class ATL_NO_VTABLE CLegacyUpdateCtrl : + public CComObjectRootEx, + public IDispatchImpl, + public IPersistStreamInitImpl, + public IOleControlImpl, + public IOleObjectImpl, + public IOleInPlaceActiveObjectImpl, + public IViewObjectExImpl, + public IOleInPlaceObjectWindowlessImpl, + public ISupportErrorInfo, + public IObjectWithSiteImpl, + public IPersistStorageImpl, + public IQuickActivateImpl, + public IProvideClassInfo2Impl<&CLSID_LegacyUpdateCtrl, NULL, &LIBID_LegacyUpdateLib>, + public CComCoClass, + public CComControl { +private: + CComPtr m_elevatedHelper; + CComPtr m_nonElevatedHelper; + +public: + CLegacyUpdateCtrl() { + m_bWindowOnly = TRUE; + } + + DECLARE_OLEMISC_STATUS( + OLEMISC_INVISIBLEATRUNTIME | + OLEMISC_ACTIVATEWHENVISIBLE | + OLEMISC_SETCLIENTSITEFIRST | + OLEMISC_INSIDEOUT | + OLEMISC_CANTLINKINSIDE | + OLEMISC_RECOMPOSEONRESIZE + ) + + DECLARE_REGISTRY_RESOURCEID(IDR_LEGACYUPDATECTRL) + + BEGIN_COM_MAP(CLegacyUpdateCtrl) + COM_INTERFACE_ENTRY(ILegacyUpdateCtrl) + COM_INTERFACE_ENTRY(IDispatch) + COM_INTERFACE_ENTRY(IViewObjectEx) + COM_INTERFACE_ENTRY(IViewObject2) + COM_INTERFACE_ENTRY(IViewObject) + COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) + COM_INTERFACE_ENTRY(IOleInPlaceObject) + COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) + COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) + COM_INTERFACE_ENTRY(IOleControl) + COM_INTERFACE_ENTRY(IOleObject) + COM_INTERFACE_ENTRY(IPersistStreamInit) + COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit) + COM_INTERFACE_ENTRY(ISupportErrorInfo) + COM_INTERFACE_ENTRY(IQuickActivate) + COM_INTERFACE_ENTRY(IPersistStorage) + COM_INTERFACE_ENTRY(IProvideClassInfo) + COM_INTERFACE_ENTRY(IProvideClassInfo2) + END_COM_MAP() + + BEGIN_PROP_MAP(CLegacyUpdateCtrl) + END_PROP_MAP() + + BEGIN_MSG_MAP(CLegacyUpdateCtrl) + CHAIN_MSG_MAP(CComControl) + DEFAULT_REFLECTION_HANDLER() + END_MSG_MAP() + + // ISupportsErrorInfo + STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid) { + return IsEqualGUID(riid, IID_ILegacyUpdateCtrl) ? S_OK : S_FALSE; + } + + // IViewObjectEx + DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE) + + // ILegacyUpdateCtrl + DECLARE_PROTECT_FINAL_CONSTRUCT() + + HRESULT FinalConstruct() { return S_OK; } + void FinalRelease() {} + +private: + IHTMLDocument2 *GetHTMLDocument(); + HWND GetIEWindowHWND(); + BOOL IsPermitted(); + +public: + STDMETHODIMP CheckControl(VARIANT_BOOL *retval); + STDMETHODIMP MessageForHresult(LONG inHresult, BSTR *retval); + STDMETHODIMP GetOSVersionInfo(OSVersionField osField, LONG systemMetric, VARIANT *retval); + STDMETHODIMP RequestElevation(); + STDMETHODIMP CreateObject(BSTR progID, IDispatch **retval); + STDMETHODIMP GetUserType(UserType *retval); + STDMETHODIMP get_IsRebootRequired(VARIANT_BOOL *retval); + STDMETHODIMP get_IsWindowsUpdateDisabled(VARIANT_BOOL *retval); + STDMETHODIMP RebootIfRequired(void); + STDMETHODIMP ViewWindowsUpdateLog(void); + STDMETHODIMP OpenWindowsUpdateSettings(void); + STDMETHODIMP get_IsUsingWsusServer(VARIANT_BOOL *retval); + STDMETHODIMP get_WsusServerUrl(BSTR *retval); + STDMETHODIMP get_WsusStatusServerUrl(BSTR *retval); +}; + +OBJECT_ENTRY_AUTO(__uuidof(LegacyUpdateCtrl), CLegacyUpdateCtrl) diff --git a/LegacyUpdate/LegacyUpdateCtrl.rgs b/LegacyUpdate/LegacyUpdateCtrl.rgs new file mode 100644 index 0000000..7767067 --- /dev/null +++ b/LegacyUpdate/LegacyUpdateCtrl.rgs @@ -0,0 +1,37 @@ +HKCR +{ + LegacyUpdate.Control.1 = s 'LegacyUpdateCtrl Class' + { + CLSID = s '{AD28E0DF-5F5A-40B5-9432-85EFD97D1F9F}' + } + LegacyUpdate.Control = s 'LegacyUpdateCtrl Class' + { + CurVer = s 'LegacyUpdate.Control.1' + } + NoRemove CLSID + { + ForceRemove {AD28E0DF-5F5A-40B5-9432-85EFD97D1F9F} = s 'Legacy Update Control' + { + ProgID = s 'LegacyUpdate.Control.1' + VersionIndependentProgID = s 'LegacyUpdate.Control' + ForceRemove 'Programmable' + InprocServer32 = s '%MODULE%' + { + val ThreadingModel = s 'Apartment' + } + val AppID = s '%APPID%' + ForceRemove 'Control' + 'MiscStatus' = s '0' + { + '1' = s '%OLEMISC%' + } + 'TypeLib' = s '{05D22F33-C7C3-4C90-BDD9-CEDC86EA8FBE}' + 'Version' = s '1.0' + 'Implemented Categories' + { + '{7DD95801-9882-11CF-9FA9-00AA006C42C4}' + '{7DD95802-9882-11CF-9FA9-00AA006C42C4}' + } + } + } +} diff --git a/LegacyUpdate/Makefile b/LegacyUpdate/Makefile new file mode 100644 index 0000000..e93e85f --- /dev/null +++ b/LegacyUpdate/Makefile @@ -0,0 +1,17 @@ +ifeq ($(CI),1) + MSBUILDFLAGS += /p:PlatformToolset=v141_xp +endif + +all: + cmd.exe /c build.cmd $(MSBUILDFLAGS) + +ifeq ($(SIGN),1) + ../build/sign.sh \ + ../Release/LegacyUpdate.dll \ + ../x64/Release/LegacyUpdate.dll +endif + +clean: + @# Not needed, build.cmd cleans before it builds + +.PHONY: all clean diff --git a/LegacyUpdate/ProgressBarControl.cpp b/LegacyUpdate/ProgressBarControl.cpp new file mode 100644 index 0000000..f30757e --- /dev/null +++ b/LegacyUpdate/ProgressBarControl.cpp @@ -0,0 +1,65 @@ +// ProgressBarControl.cpp : Implementation of CProgressBarControl +#include "stdafx.h" +#include "ProgressBarControl.h" +#include + +#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") + +#ifndef PBS_MARQUEE +#define PBS_MARQUEE 0x08 +#endif + +#ifndef PBM_SETMARQUEE +#define PBM_SETMARQUEE (WM_USER + 10) +#endif + +LRESULT CProgressBarControl::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) { + RECT rc; + GetWindowRect(&rc); + rc.right -= rc.left; + rc.bottom -= rc.top; + rc.left = 0; + rc.top = 0; + m_ctl.Create(m_hWnd, rc, PROGRESS_CLASS, WS_CHILD | WS_VISIBLE, WS_EX_CLIENTEDGE); + put_Value(-1); + return 0; +} + +STDMETHODIMP CProgressBarControl::SetObjectRects(LPCRECT prcPos, LPCRECT prcClip) { + IOleInPlaceObjectWindowlessImpl::SetObjectRects(prcPos, prcClip); + ::SetWindowPos(m_ctl.m_hWnd, NULL, 0, 0, + prcPos->right - prcPos->left, + prcPos->bottom - prcPos->top, + SWP_NOZORDER | SWP_NOACTIVATE); + return S_OK; +} + +STDMETHODIMP CProgressBarControl::get_Value(SHORT *pValue) { + if (m_ctl.GetWindowLongPtr(GWL_STYLE) & PBS_MARQUEE) { + // Marquee - no value + *pValue = -1; + } else { + // Normal - return PBM_GETPOS + *pValue = (SHORT)m_ctl.SendMessage(PBM_GETPOS, 0, 0); + } + return S_OK; +} + +STDMETHODIMP CProgressBarControl::put_Value(SHORT value) { + if (value == -1) { + // Marquee style + m_ctl.SetWindowLongPtr(GWL_STYLE, m_ctl.GetWindowLongPtr(GWL_STYLE) | PBS_MARQUEE); + m_ctl.SendMessage(PBM_SETMARQUEE, TRUE, 100); + } else { + // Normal style + SHORT oldValue; + get_Value(&oldValue); + if (oldValue == -1) { + m_ctl.SetWindowLongPtr(GWL_STYLE, m_ctl.GetWindowLongPtr(GWL_STYLE) & ~PBS_MARQUEE); + m_ctl.SendMessage(PBM_SETRANGE, 0, MAKELPARAM(0, 100)); + } + + m_ctl.SendMessage(PBM_SETPOS, value, 0); + } + return S_OK; +} diff --git a/LegacyUpdate/ProgressBarControl.h b/LegacyUpdate/ProgressBarControl.h new file mode 100644 index 0000000..648e3e1 --- /dev/null +++ b/LegacyUpdate/ProgressBarControl.h @@ -0,0 +1,77 @@ +#pragma once + +// ProgressBarControl.h : Declaration of the CProgressBarControl class. + +#include +#include "resource.h" +#include "LegacyUpdate_i.h" + +// CProgressBarControl +class ATL_NO_VTABLE CProgressBarControl : + public CComObjectRootEx, + public IDispatchImpl, + public IOleControlImpl, + public IOleObjectImpl, + public IOleInPlaceActiveObjectImpl, + public IViewObjectExImpl, + public IOleInPlaceObjectWindowlessImpl, + public CComCoClass, + public CComControl +{ +public: + CContainedWindow m_ctl; + + CProgressBarControl() : m_ctl(L"msctls_progress32", this, 1) { + m_bWindowOnly = TRUE; + } + + DECLARE_OLEMISC_STATUS( + OLEMISC_RECOMPOSEONRESIZE | + OLEMISC_CANTLINKINSIDE | + OLEMISC_INSIDEOUT | + OLEMISC_ACTIVATEWHENVISIBLE | + OLEMISC_SETCLIENTSITEFIRST + ) + + DECLARE_REGISTRY_RESOURCEID(IDR_PROGRESSBARCONTROL) + + BEGIN_COM_MAP(CProgressBarControl) + COM_INTERFACE_ENTRY(IProgressBarControl) + COM_INTERFACE_ENTRY(IDispatch) + COM_INTERFACE_ENTRY(IViewObjectEx) + COM_INTERFACE_ENTRY(IViewObject2) + COM_INTERFACE_ENTRY(IViewObject) + COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) + COM_INTERFACE_ENTRY(IOleInPlaceObject) + COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) + COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) + COM_INTERFACE_ENTRY(IOleControl) + COM_INTERFACE_ENTRY(IOleObject) + END_COM_MAP() + + BEGIN_PROP_MAP(CProgressBarControl) + END_PROP_MAP() + + BEGIN_MSG_MAP(CProgressBarControl) + MESSAGE_HANDLER(WM_CREATE, OnCreate) + CHAIN_MSG_MAP(CComControl) + ALT_MSG_MAP(1) + END_MSG_MAP() + + // IViewObjectEx + DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE) + + // IProgressBarControl + DECLARE_PROTECT_FINAL_CONSTRUCT() + + HRESULT FinalConstruct() { return S_OK; } + void FinalRelease() {} + + LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); + STDMETHODIMP SetObjectRects(LPCRECT prcPos, LPCRECT prcClip); + + STDMETHODIMP get_Value(SHORT *pValue); + STDMETHODIMP put_Value(SHORT value); +}; + +OBJECT_ENTRY_AUTO(__uuidof(ProgressBarControl), CProgressBarControl) diff --git a/LegacyUpdate/ProgressBarControl.html b/LegacyUpdate/ProgressBarControl.html new file mode 100644 index 0000000..0d592ee --- /dev/null +++ b/LegacyUpdate/ProgressBarControl.html @@ -0,0 +1,48 @@ + + + + ATL test page for object ProgressBarControl + + + + +
+ +
+ +
-1
+ + + + + + + + diff --git a/LegacyUpdate/ProgressBarControl.rgs b/LegacyUpdate/ProgressBarControl.rgs new file mode 100644 index 0000000..3cc0a33 --- /dev/null +++ b/LegacyUpdate/ProgressBarControl.rgs @@ -0,0 +1,34 @@ +HKCR +{ + LegacyUpdate.ProgressBar.1 = s 'ProgressBarControl Class' + { + CLSID = s '{7B875A2F-2DFB-4D38-91F5-5C0BFB74C377}' + } + LegacyUpdate.ProgressBar = s 'ProgressBarControl Class' + { + CurVer = s 'LegacyUpdate.ProgressBar.1' + } + NoRemove CLSID + { + ForceRemove {7B875A2F-2DFB-4D38-91F5-5C0BFB74C377} = s 'Legacy Update Progress Bar Control' + { + ForceRemove Programmable + InprocServer32 = s '%MODULE%' + { + val ThreadingModel = s 'Apartment' + } + ForceRemove Control + MiscStatus = s '0' + { + '1' = s '%OLEMISC%' + } + TypeLib = s '{05D22F33-C7C3-4C90-BDD9-CEDC86EA8FBE}' + Version = s '1.0' + 'Implemented Categories' + { + '{7DD95801-9882-11CF-9FA9-00AA006C42C4}' + '{7DD95802-9882-11CF-9FA9-00AA006C42C4}' + } + } + } +} diff --git a/LegacyUpdate/Resource.h b/LegacyUpdate/Resource.h new file mode 100644 index 0000000..0c7bedd --- /dev/null +++ b/LegacyUpdate/Resource.h @@ -0,0 +1,26 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by LegacyUpdate.rc +// +#define IDS_LEGACYUPDATEOCX 1 +#define IDS_LEGACYUPDATE 2 +#define IDS_CHECKFORUPDATES 3 +#define IDS_CHECKFORUPDATES_ALT 4 +#define IDS_IENOTINSTALLED 5 +#define IDR_LEGACYUPDATEOCX 101 +#define IDR_LEGACYUPDATECTRL 102 +#define IDR_PROGRESSBARCONTROL 103 +#define IDR_ELEVATIONHELPER 104 +#define IDI_ICON1 201 +#define IDR_CPLTASKS 202 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 204 +#define _APS_NEXT_COMMAND_VALUE 32768 +#define _APS_NEXT_CONTROL_VALUE 201 +#define _APS_NEXT_SYMED_VALUE 105 +#endif +#endif diff --git a/LegacyUpdate/Utils.cpp b/LegacyUpdate/Utils.cpp new file mode 100644 index 0000000..fd7bd35 --- /dev/null +++ b/LegacyUpdate/Utils.cpp @@ -0,0 +1,177 @@ +#include "stdafx.h" +#include +#include +#include "WMI.h" + +#pragma comment(lib, "version.lib") +#pragma comment(lib, "advapi32.lib") + +// Defined as being Vista+, older versions ignore the flag. +#ifndef EWX_RESTARTAPPS +#define EWX_RESTARTAPPS 0x00000040 +#endif + +extern "C" IMAGE_DOS_HEADER __ImageBase; + +#define OwnModule ((HMODULE)&__ImageBase) + +static BOOL _loadedProductName = FALSE; +static CComVariant _productName; + +static BOOL _loadedOwnVersion = FALSE; +static LPWSTR _version; +static UINT _versionSize; + +void GetOwnFileName(LPWSTR *filename, LPDWORD size) { + *filename = (LPWSTR)malloc(MAX_PATH); + *size = GetModuleFileName(OwnModule, *filename, MAX_PATH); +} + +HRESULT GetOwnVersion(LPWSTR *version, LPDWORD size) { + if (!_loadedOwnVersion) { + LPWSTR filename; + DWORD filenameSize; + GetOwnFileName(&filename, &filenameSize); + + DWORD verHandle; + DWORD verInfoSize = GetFileVersionInfoSize(filename, &verHandle); + if (verInfoSize == 0) { + return AtlHresultFromLastError(); + } + + LPVOID verInfo = new BYTE[verInfoSize]; + if (!GetFileVersionInfo(filename, verHandle, verInfoSize, verInfo)) { + return AtlHresultFromLastError(); + } + + if (!VerQueryValue(verInfo, L"\\StringFileInfo\\040904B0\\ProductVersion", (LPVOID *)&_version, &_versionSize)) { + return AtlHresultFromLastError(); + } + } + + *version = _version; + *size = _versionSize; + return _version == NULL ? E_FAIL : NOERROR; +} + +HRESULT GetRegistryString(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, LPDWORD type, LPWSTR *data, LPDWORD size) { + HKEY subkey; + HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(key, subkeyPath, 0, KEY_READ, &subkey)); + if (!SUCCEEDED(hr)) { + goto end; + } + + if (data != NULL && size != NULL) { + DWORD length = 512 * sizeof(WCHAR); + LPWSTR buffer = (LPWSTR)malloc(length); + LSTATUS status; + do { + status = RegQueryValueEx(subkey, valueName, NULL, type, (BYTE *)buffer, &length); + if (status == ERROR_MORE_DATA) { + length += 256 * sizeof(WCHAR); + buffer = (LPWSTR)realloc(buffer, length); + } else if (status != ERROR_SUCCESS) { + hr = HRESULT_FROM_WIN32(status); + goto end; + } + } while (status == ERROR_MORE_DATA); + + *data = buffer; + *size = length / sizeof(WCHAR); + } + +end: + if (subkey != NULL) { + RegCloseKey(subkey); + } + if (!SUCCEEDED(hr)) { + if (data != NULL) { + *data = NULL; + } + if (size != NULL) { + *size = 0; + } + } + return hr; +} + +HRESULT GetRegistryDword(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, LPDWORD type, LPDWORD data) { + HKEY subkey; + HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(key, subkeyPath, 0, KEY_READ, &subkey)); + if (!SUCCEEDED(hr)) { + goto end; + } + + if (data != NULL) { + DWORD length = sizeof(DWORD); + hr = HRESULT_FROM_WIN32(RegQueryValueEx(subkey, valueName, NULL, type, (LPBYTE)data, &length)); + if (!SUCCEEDED(hr)) { + goto end; + } + } + +end: + if (subkey != NULL) { + RegCloseKey(subkey); + } + return hr; +} + +LPWSTR GetMessageForHresult(HRESULT hr) { + _com_error *error = new _com_error(hr); + CString message = error->ErrorMessage(); + BSTR outMessage = message.AllocSysString(); + return outMessage; +} + +HRESULT GetOSProductName(VARIANT *pProductName) { + if (_loadedProductName) { + VariantCopy(pProductName, &_productName); + return S_OK; + } + + VariantInit(&_productName); + _loadedProductName = true; + return QueryWMIProperty(L"SELECT Caption FROM Win32_OperatingSystem", L"Caption", &_productName); +} + +HRESULT Reboot() { + HRESULT hr = E_FAIL; + + // Make sure we have permission to shut down. + HANDLE token; + if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token)) { + LUID shutdownLuid; + if (LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &shutdownLuid) != 0) { + // Ask the system nicely to give us shutdown privilege. + TOKEN_PRIVILEGES privileges; + privileges.PrivilegeCount = 1; + privileges.Privileges[0].Luid = shutdownLuid; + privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + if (!AdjustTokenPrivileges(token, FALSE, &privileges, 0, NULL, NULL)) { + hr = AtlHresultFromLastError(); + TRACE("AdjustTokenPrivileges() failed: %ls\n", GetMessageForHresult(hr)); + } + } + } else { + hr = AtlHresultFromLastError(); + TRACE("OpenProcessToken() failed: %ls\n", GetMessageForHresult(hr)); + } + + // Reboot with reason "Operating System: Security fix (Unplanned)" + if (!InitiateSystemShutdownEx(NULL, NULL, 0, FALSE, TRUE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_SECURITYFIX)) { + hr = AtlHresultFromLastError(); + TRACE("InitiateSystemShutdownExW() failed: %ls\n", GetMessageForHresult(hr)); + + // Try ExitWindowsEx instead + // Win2k: Use ExitWindowsEx, which is only guaranteed to work for the current logged in user + if (!ExitWindowsEx(EWX_REBOOT | EWX_RESTARTAPPS | EWX_FORCEIFHUNG, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_SECURITYFIX)) { + hr = AtlHresultFromLastError(); + TRACE("ExitWindowsEx() failed: %ls\n", GetMessageForHresult(hr)); + } + } else { + hr = S_OK; + } + + return hr; +} diff --git a/LegacyUpdate/Utils.h b/LegacyUpdate/Utils.h new file mode 100644 index 0000000..6d623a1 --- /dev/null +++ b/LegacyUpdate/Utils.h @@ -0,0 +1,15 @@ +#pragma once + +OSVERSIONINFOEX *GetVersionInfo(); + +void GetOwnFileName(LPWSTR *filename, LPDWORD size); +HRESULT GetOwnVersion(LPWSTR *version, LPDWORD size); + +HRESULT GetRegistryString(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, LPDWORD type, LPWSTR *data, LPDWORD size); +HRESULT GetRegistryDword(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, LPDWORD type, LPDWORD data); + +LPWSTR GetMessageForHresult(HRESULT hresult); + +HRESULT GetOSProductName(VARIANT* pProductName); + +HRESULT Reboot(); diff --git a/LegacyUpdate/build.cmd b/LegacyUpdate/build.cmd new file mode 100644 index 0000000..98c7f91 --- /dev/null +++ b/LegacyUpdate/build.cmd @@ -0,0 +1,17 @@ +@echo off +setlocal enabledelayedexpansion +cd %~dp0\.. + +:: Clean +call build\getvc.cmd x86 +msbuild LegacyUpdate.sln /v:quiet /m /p:Configuration=Release /p:Platform=Win32 /t:clean +if "%errorlevel%" neq "0" exit /b %errorlevel% +msbuild LegacyUpdate.sln /v:quiet /m /p:Configuration=Release /p:Platform=x64 /t:clean +if "%errorlevel%" neq "0" exit /b %errorlevel% + +:: Build DLL +msbuild LegacyUpdate.sln /v:minimal /m /p:Configuration=Release /p:Platform=Win32 %* +if "%errorlevel%" neq "0" exit /b %errorlevel% +call build\getvc.cmd x64 +msbuild LegacyUpdate.sln /v:minimal /m /p:Configuration=Release /p:Platform=x64 %* +if "%errorlevel%" neq "0" exit /b %errorlevel% diff --git a/LegacyUpdate/dlldata.c b/LegacyUpdate/dlldata.c new file mode 100644 index 0000000..b94a58a --- /dev/null +++ b/LegacyUpdate/dlldata.c @@ -0,0 +1,38 @@ +/********************************************************* + DllData file -- generated by MIDL compiler + + DO NOT ALTER THIS FILE + + This file is regenerated by MIDL on every IDL file compile. + + To completely reconstruct this file, delete it and rerun MIDL + on all the IDL files in this DLL, specifying this file for the + /dlldata command line option + +*********************************************************/ + +#define PROXY_DELEGATION + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +EXTERN_PROXY_FILE( LegacyUpdate ) + + +PROXYFILE_LIST_START +/* Start of list */ + REFERENCE_PROXY_FILE( LegacyUpdate ), +/* End of list */ +PROXYFILE_LIST_END + + +DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID ) + +#ifdef __cplusplus +} /*extern "C" */ +#endif + +/* end of generated dlldata file */ diff --git a/LegacyUpdate/dlldatax.c b/LegacyUpdate/dlldatax.c new file mode 100644 index 0000000..74878f6 --- /dev/null +++ b/LegacyUpdate/dlldatax.c @@ -0,0 +1,18 @@ +// wrapper for dlldata.c + +#ifdef _MERGE_PROXYSTUB // merge proxy stub DLL + +#define REGISTER_PROXY_DLL //DllRegisterServer, etc. + +#define _WIN32_WINNT 0x0500 //for WinNT 4.0 or Win95 with DCOM +#define USE_STUBLESS_PROXY //defined only with MIDL switch /Oicf + +#pragma comment(lib, "rpcns4.lib") +#pragma comment(lib, "rpcrt4.lib") + +#define ENTRY_PREFIX Prx + +#include "dlldata.c" +#include "LegacyUpdate_p.c" + +#endif //_MERGE_PROXYSTUB diff --git a/LegacyUpdate/dlldatax.h b/LegacyUpdate/dlldatax.h new file mode 100644 index 0000000..e5375bb --- /dev/null +++ b/LegacyUpdate/dlldatax.h @@ -0,0 +1,11 @@ +#pragma once + +#ifdef _MERGE_PROXYSTUB +extern "C" { + BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved); + STDAPI PrxDllCanUnloadNow(void); + STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv); + STDAPI PrxDllRegisterServer(void); + STDAPI PrxDllUnregisterServer(void); +} +#endif diff --git a/LegacyUpdate/dllmain.cpp b/LegacyUpdate/dllmain.cpp new file mode 100644 index 0000000..78c4a7a --- /dev/null +++ b/LegacyUpdate/dllmain.cpp @@ -0,0 +1,108 @@ +// dllmain.cpp : Implementation of DLL Exports. + +#include "stdafx.h" +#include "resource.h" +#include "LegacyUpdate_i.h" +#include "dllmain.h" +#include "dlldatax.h" + +CLegacyUpdateModule _AtlModule; +HINSTANCE g_hInstance; + +// DLL Entry Point +extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { +#ifdef _MERGE_PROXYSTUB + if (!PrxDllMain(hInstance, dwReason, lpReserved)) + return FALSE; +#endif + + switch (dwReason) { + case DLL_PROCESS_ATTACH: + g_hInstance = hInstance; + break; + + case DLL_PROCESS_DETACH: + g_hInstance = NULL; + break; + } + + return _AtlModule.DllMain(dwReason, lpReserved); +} + + +// Used to determine whether the DLL can be unloaded by OLE +STDAPI DllCanUnloadNow(void) { +#ifdef _MERGE_PROXYSTUB + HRESULT hr = PrxDllCanUnloadNow(); + if (hr != S_OK) { + return hr; + } +#endif + return _AtlModule.DllCanUnloadNow(); +} + + +// Returns a class factory to create an object of the requested type +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { +#ifdef _MERGE_PROXYSTUB + if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK) { + return S_OK; + } +#endif + return _AtlModule.DllGetClassObject(rclsid, riid, ppv); +} + + +// DllRegisterServer - Adds entries to the system registry +STDAPI DllRegisterServer(void) { + // registers object, typelib and all interfaces in typelib + HRESULT hr = _AtlModule.DllRegisterServer(); +#ifdef _MERGE_PROXYSTUB + if (FAILED(hr)) { + return hr; + } + hr = PrxDllRegisterServer(); +#endif + return hr; +} + + +// DllUnregisterServer - Removes entries from the system registry +STDAPI DllUnregisterServer(void) { + HRESULT hr = _AtlModule.DllUnregisterServer(); +#ifdef _MERGE_PROXYSTUB + if (FAILED(hr)) { + return hr; + } + hr = PrxDllRegisterServer(); + if (FAILED(hr)) { + return hr; + } + hr = PrxDllUnregisterServer(); +#endif + return hr; +} + + +// DllInstall - Adds/Removes entries to the system registry per user per machine. +STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) { + HRESULT hr = E_FAIL; + static const wchar_t szUserSwitch[] = L"user"; + + if (pszCmdLine != NULL) { + if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0) { + AtlSetPerUserRegistration(true); + } + } + + if (bInstall) { + hr = DllRegisterServer(); + if (FAILED(hr)) { + DllUnregisterServer(); + } + } else { + hr = DllUnregisterServer(); + } + + return hr; +} diff --git a/LegacyUpdate/dllmain.h b/LegacyUpdate/dllmain.h new file mode 100644 index 0000000..da9103c --- /dev/null +++ b/LegacyUpdate/dllmain.h @@ -0,0 +1,10 @@ +// dllmain.h : Declaration of module class. + +class CLegacyUpdateModule : public CAtlDllModuleT { +public: + DECLARE_LIBID(LIBID_LegacyUpdateLib) + DECLARE_REGISTRY_APPID_RESOURCEID(IDR_LEGACYUPDATEOCX, "{D0A82CD0-B6F0-4101-83ED-DA47D0D04830}") +}; + +extern class CLegacyUpdateModule _AtlModule; +extern HINSTANCE g_hInstance; diff --git a/LegacyUpdate/icon.ico b/LegacyUpdate/icon.ico new file mode 100644 index 0000000..c313589 Binary files /dev/null and b/LegacyUpdate/icon.ico differ diff --git a/LegacyUpdate/stdafx.cpp b/LegacyUpdate/stdafx.cpp new file mode 100644 index 0000000..1edc2c9 --- /dev/null +++ b/LegacyUpdate/stdafx.cpp @@ -0,0 +1,5 @@ +// stdafx.cpp : source file that includes just the standard includes +// LegacyUpdate.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" diff --git a/LegacyUpdate/stdafx.h b/LegacyUpdate/stdafx.h new file mode 100644 index 0000000..f26d852 --- /dev/null +++ b/LegacyUpdate/stdafx.h @@ -0,0 +1,28 @@ +#pragma once + +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, +// but are changed infrequently + +#ifndef STRICT +#define STRICT +#endif + +#include "targetver.h" + +#define _ATL_APARTMENT_THREADED +#define _ATL_NO_AUTOMATIC_NAMESPACE + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit + +#define ISOLATION_AWARE_ENABLED 1 // Enable comctl 6.0 (visual styles) + +#include "resource.h" +#include +#include +#include +#include + +using namespace ATL; + +#define TRACE ATLTRACE diff --git a/LegacyUpdate/targetver.h b/LegacyUpdate/targetver.h new file mode 100644 index 0000000..36dec11 --- /dev/null +++ b/LegacyUpdate/targetver.h @@ -0,0 +1,11 @@ +#pragma once + +#if _MSC_VER > 1599 + // VC17: Windows XP + #define WINVER 0x0501 + #define _WIN32_WINNT 0x0501 +#else + // VC08: Windows 2000 RTM + #define WINVER 0x0500 + #define _WIN32_WINNT 0x0500 +#endif diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..089b774 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +export SIGN ?= 0 + +SUBPROJECTS = LegacyUpdate nsisplugin setup + +all: + set -e; \ + for i in $(SUBPROJECTS); do \ + $(MAKE) -C $$i; \ + done + +clean: + set -e; \ + for i in $(SUBPROJECTS); do \ + $(MAKE) -C $$i clean; \ + done + +.PHONY: all clean diff --git a/README.md b/README.md new file mode 100644 index 0000000..be62856 --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# [Legacy Update](http://legacyupdate.net/) + +[![wakatime](https://wakatime.com/badge/github/kirb/LegacyUpdate.svg)](https://wakatime.com/badge/github/kirb/LegacyUpdate) +[![Build](https://github.com/kirb/LegacyUpdate/actions/workflows/build.yml/badge.svg)](https://github.com/kirb/LegacyUpdate/actions/workflows/build.yml) + +Since Windows XP was discontinued in 2014, followed by Windows 7 in 2020, Microsoft’s support for their earlier OSes has significantly dwindled. As XP and earlier don’t officially support modern security improvements, such as the SHA256 hash algorithm required by modern SSL and Authenticode certificates [as of 2019](https://support.microsoft.com/en-us/topic/2019-sha-2-code-signing-support-requirement-for-windows-and-wsus-64d1c82d-31ee-c273-3930-69a4cde8e64f), much of the internet has become inaccessible to these devices. Adding insult to injury, Microsoft [actively removed](https://techcommunity.microsoft.com/t5/windows-it-pro-blog/sha-1-windows-content-to-be-retired-august-3-2020/ba-p/1544373) many downloads for XP and earlier versions in 2020. In effect, working with these OSes is now incredibly difficult. + +To address this, [**Legacy Update**](https://legacyupdate.net/) hosts a patched instance of the Windows Update website. This works because the original Windows Update website simply accesses an ActiveX control that connects to the Windows Update service running on your computer. + +> *If this website helped you to update your old PCs, please consider [leaving a tip](https://github.com/sponsors/kirb) to help me pay for the server costs. Thank you!* + +## Download +Download the latest version from the [Releases](https://github.com/kirb/LegacyUpdate/releases) page of this repo, or from [**legacyupdate.net**](https://legacyupdate.net/). + +You can also download the [latest nightly build](https://nightly.link/kirb/LegacyUpdate/workflows/build/main/artifact.zip), based on the current development work. Nightly builds are not guaranteed to be stable, and unlike release builds, require at least Windows 2000 SP4 or Windows XP SP2. You may also need to accept extra SmartScreen and other security warnings since these executables are unique to each build. If you’re not sure what to download, you probably want the [stable release](https://legacyupdate.net/). + +## The ActiveX Control +This repo hosts an ActiveX control used as a replica of the original one developed by Microsoft for the official Windows Update website. The original version of Legacy Update required using a proxy autoconfiguration file (.pac) and some additional configuration of IE security settings to intercept requests to the **update.microsoft.com** site, because the Microsoft Wuweb.dll control validates that it is being used on the official update.microsoft.com domain. With the custom Legacy Update ActiveX control, proxying is no longer required, because we have full control over the validation logic. This also allows adding additional convenient features not possible with JavaScript alone. + +### Building +The project can be built on Windows 10/11 with [WSL 2](https://aka.ms/wslinstall) installed. You’ll ideally want to also set up an XP VM for testing. + +You will need to install: + +* [Visual Studio](https://visualstudio.microsoft.com/vs/) - select the following individual components: + * Desktop development with C++ + * C++ Windows XP Support for VS 2017 (v141) tools + * C++ ATL for v141 build tools (x86 & x64) +* [Visual Studio 2008](https://my.visualstudio.com/Downloads?q=Visual%20Studio%20Express%202008%20with%20Service%20Pack%201&pgroup=) for compiling a build that works on XP RTM and 2000 SP4 - not required if you only want to build for XP SP2 and later +* [NSIS](https://nsis.sourceforge.io/) + +In the WSL environment, run the following command to install build dependencies. This command is for Ubuntu - if you use a different distro, you will need to find and install the equivalent packages from your package manager. + +```bash +sudo apt install make nsis nsis-pluginapi mingw-w64-i686-dev +``` + +You will also need to extract a copy of updroots.exe from [this update](http://download.windowsupdate.com/d/msdownload/update/software/secu/2015/03/rvkroots_3f2ce4676450c06f109b5b4e68bec252873ccc21.exe). You can do this manually using 7-Zip, placing the exe at `setup/updroots.exe`, or run the following in WSL: + +```bash +sudo apt install cabextract +curl -L http://download.windowsupdate.com/d/msdownload/update/software/secu/2015/03/rvkroots_3f2ce4676450c06f109b5b4e68bec252873ccc21.exe -o /tmp/rvkroots.exe +cabextract -d setup -F updroots.exe /tmp/rvkroots.exe +rm /tmp/rvkroots.exe +``` + +When opening the solution for the first time, Visual Studio will ask if you want to retarget it against the latest Windows SDK. Select No Upgrade. + +### Testing +For debugging, if running on XP with IE8, install [Utilu IE Collection](https://www.utilu.com/iecollection/). IE6/IE7 is much more useful for debugging the native code, because of its simplistic single-process model. Visual Studio is able to launch it and directly attach to the process the code is running in. + +To configure the debugger: + +1. Right click LegacyUpdate in the Solution Explorer → Properties +2. In the Debugging tab, set the Command field to: + * For system IE install: `$(ProgramW6432)\Internet Explorer\iexplore.exe` + * For Utilu IE6 RTM: `$(ProgramW6432)\Utilu IE Collection\IE600\iexplore.exe` + * For Utilu IE6 SP2: `$(ProgramW6432)\Utilu IE Collection\IE600XPSP2\iexplore.exe` + * For Utilu IE7: `$(ProgramW6432)\Utilu IE Collection\IE700\iexplore.exe` +3. Set the Command Arguments field to `http://legacyupdate.net/windowsupdate/v6/`, or any other URL you want to use for debugging +4. If running on XP, in the Debugger tab, set Register Output to Yes. + If running on Vista or later, this will throw a permission denied error due to UAC. You’ll need to manually register the control using `regsvr32 LegacyUpdate.dll` in an administrator command prompt. + +## Website source code +I haven’t yet open sourced the website. This is because the vast majority of it is Microsoft code - just with a handful of patches I’ve made to remove Microsoft trademark branding, switch it to the Legacy Update ActiveX control, and make some slight bug fixes/improvements. It doesn’t feel appropriate to put an open source license on something I don’t own. However, if you would like to review it, you can right click → View Source on the website and take a poke around, mainly in the JavaScript files. You might find [DebugBar](https://www.debugbar.com/download.php) and [CompanionJS](https://www.my-debugbar.com/wiki/CompanionJS/HomePage) (requires Visual Studio or standalone [Microsoft Script Debugger](https://web.archive.org/web/20131113042519/http://download.microsoft.com/download/7/7/d/77d8df05-6fbc-4718-a319-be14317a6811/scd10en.exe)) useful. + +I’ve tinkered with writing a [ground-up replacement](https://twitter.com/hbkirb/status/1584537446716350466) of the Microsoft-developed Windows Update website, which I’ll open source when I feel it’s ready for public use (there are currently a number of bugs and missing features). + +## Disclaimer +The existence of this project shouldn’t be taken as an endorsement to continue using unsupported OSes. You should stick to a supported OS such as Windows 10 or 11 (or, try Linux?!). However, this service exists anyway in recognition that using these OSes is sometimes necessary to run legacy hardware/software, or just interesting to play around with. + +This project is not affiliated with or endorsed by Microsoft. This software is provided “as is”, without warranty of any kind. We don’t believe anything should go wrong, but please ensure you have backups of any important data anyway. + +## License +Licensed under the Apache License, version 2.0. Refer to [LICENSE.md](https://github.com/kirb/LegacyUpdate/blob/main/LICENSE.md). + +The repository includes a compiled copy of my fork of [NSxfer](https://github.com/kirb/nsis-nsxfer), licensed under the [zlib/libpng license](https://github.com/kirb/nsis-nsxfer/blob/master/LICENSE). diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..1e2b1d2 --- /dev/null +++ b/build.cmd @@ -0,0 +1,21 @@ +@echo off +setlocal enabledelayedexpansion +cd %~dp0 + +set ProgramFiles32=%ProgramFiles% +if "%ProgramFiles(x86)%" neq "" set ProgramFiles32=%ProgramFiles(x86)% + +path %ProgramFiles32%\NSIS\Bin;%path% + +:: Make sure we have MakeNSIS +if not exist "%ProgramFiles32%\NSIS\Bin\makensis.exe" ( + echo NSIS not found. Refer to README.md. >&2 + exit /b 1 +) + +:: Build project +call LegacyUpdate\build.cmd + +:: Build NSIS +makensis setup\setup.nsi +if "%errorlevel%" neq "0" exit /b %errorlevel% diff --git a/build/getvc.cmd b/build/getvc.cmd new file mode 100644 index 0000000..cc2db4f --- /dev/null +++ b/build/getvc.cmd @@ -0,0 +1,23 @@ +@REM @echo off +setlocal enabledelayedexpansion + +set ProgramFiles32=%ProgramFiles% +if "%ProgramFiles(x86)%" neq "" set ProgramFiles32=%ProgramFiles(x86)% + +:: Find Visual Studio installation +if exist "%ProgramFiles32%\Microsoft Visual Studio\Installer\vswhere.exe" ( + :: Get modern Visual Studio install path + for /f "usebackq tokens=*" %%i in (`"%ProgramFiles32%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath`) do set VSPath=%%i + set "vcvarsall=!VSPath!\VC\Auxiliary\Build\vcvarsall.bat" + if "%errorlevel%" neq "0" exit /b %errorlevel% +) else if exist "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" ( + :: Visual Studio 2010 + set "vcvarsall=%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" + if "%errorlevel%" neq "0" exit /b %errorlevel% +) else ( + echo Visual Studio not found. Refer to README.md. >&2 + exit /b 1 +) + +endlocal & set "vcvarsall=%vcvarsall%" +call "%vcvarsall%" %* >nul diff --git a/build/sign.cmd b/build/sign.cmd new file mode 100644 index 0000000..238e176 --- /dev/null +++ b/build/sign.cmd @@ -0,0 +1,10 @@ +@echo off +setlocal enabledelayedexpansion + +:: Find Visual Studio installation +call %~dp0getvc.cmd x64 + +:: Sign +signtool sign /n "Hashbang Productions" /tr http://time.certum.pl/ /fd SHA1 /td SHA256 /v %* +signtool sign /n "Hashbang Productions" /tr http://time.certum.pl/ /fd SHA256 /td SHA256 /as /v %* +if "%errorlevel%" neq "0" exit /b %errorlevel% diff --git a/build/sign.sh b/build/sign.sh new file mode 100644 index 0000000..25c0dd8 --- /dev/null +++ b/build/sign.sh @@ -0,0 +1,9 @@ +#!/bin/bash +args=("$(wslpath -w "$(dirname "$0")/sign.cmd")") +for arg in "$@"; do + case "$arg" in + */*) args+=("$(wslpath -w "$arg")") ;; + *) args+=("$arg") ;; + esac +done +exec cmd.exe /c "${args[@]}" diff --git a/include/atlcomcli.h b/include/atlcomcli.h new file mode 100644 index 0000000..e765574 --- /dev/null +++ b/include/atlcomcli.h @@ -0,0 +1,959 @@ +/* + * ReactOS ATL + * + * Copyright 2009 Andrew Hill + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +#include "atlcore.h" + + +#ifdef _MSC_VER +// It is common to use this in ATL constructors. They only store this for later use, so the usage is safe. +#pragma warning(disable:4355) +#endif + +#ifndef _ATL_PACKING +#define _ATL_PACKING 8 +#endif + +#ifndef _ATL_FREE_THREADED +#ifndef _ATL_APARTMENT_THREADED +#ifndef _ATL_SINGLE_THREADED +#define _ATL_FREE_THREADED +#endif +#endif +#endif + +#ifndef ATLTRY +#define ATLTRY(x) x; +#endif + +#ifdef _ATL_DISABLE_NO_VTABLE +#define ATL_NO_VTABLE +#else +#define ATL_NO_VTABLE __declspec(novtable) +#endif + +namespace ATL +{ + +inline HRESULT AtlHresultFromLastError() throw() +{ + DWORD dwError = ::GetLastError(); + return HRESULT_FROM_WIN32(dwError); +} + +template +class _NoAddRefReleaseOnCComPtr : public T +{ + private: + virtual ULONG STDMETHODCALLTYPE AddRef() = 0; + virtual ULONG STDMETHODCALLTYPE Release() = 0; +}; + +// Begin code borrowed from Microsoft +//CComPtrBase provides the basis for all other smart pointers +//The other smartpointers add their own constructors and operators +template +class CComPtrBase +{ +protected: + CComPtrBase() throw() + { + p = NULL; + } + CComPtrBase(_Inout_opt_ T* lp) throw() + { + p = lp; + if (p != NULL) + p->AddRef(); + } + void Swap(CComPtrBase& other) + { + T* pTemp = p; + p = other.p; + other.p = pTemp; + } +public: + typedef T _PtrClass; + ~CComPtrBase() throw() + { + if (p) + p->Release(); + } + operator T*() const throw() + { + return p; + } + T& operator*() const + { + ATLENSURE(p!=NULL); + return *p; + } + //The assert on operator& usually indicates a bug. If this is really + //what is needed, however, take the address of the p member explicitly. + T** operator&() throw() + { + ATLASSERT(p==NULL); + return &p; + } + _NoAddRefReleaseOnCComPtr* operator->() const throw() + { + ATLASSERT(p!=NULL); + return (_NoAddRefReleaseOnCComPtr*)p; + } + bool operator!() const throw() + { + return (p == NULL); + } + bool operator<(_In_opt_ T* pT) const throw() + { + return p < pT; + } + bool operator!=(_In_opt_ T* pT) const + { + return !operator==(pT); + } + bool operator==(_In_opt_ T* pT) const throw() + { + return p == pT; + } + + // Release the interface and set to NULL + void Release() throw() + { + T* pTemp = p; + if (pTemp) + { + p = NULL; + pTemp->Release(); + } + } + // Compare two objects for equivalence + inline bool IsEqualObject(_Inout_opt_ IUnknown* pOther) throw(); + + // Attach to an existing interface (does not AddRef) + void Attach(_In_opt_ T* p2) throw() + { + if (p) + { + ULONG ref = p->Release(); + (ref); + // Attaching to the same object only works if duplicate references are being coalesced. Otherwise + // re-attaching will cause the pointer to be released and may cause a crash on a subsequent dereference. + ATLASSERT(ref != 0 || p2 != p); + } + p = p2; + } + // Detach the interface (does not Release) + T* Detach() throw() + { + T* pt = p; + p = NULL; + return pt; + } + _Check_return_ HRESULT CopyTo(_COM_Outptr_result_maybenull_ T** ppT) throw() + { + ATLASSERT(ppT != NULL); + if (ppT == NULL) + return E_POINTER; + *ppT = p; + if (p) + p->AddRef(); + return S_OK; + } + _Check_return_ HRESULT SetSite(_Inout_opt_ IUnknown* punkParent) throw() + { + return AtlSetChildSite(p, punkParent); + } + _Check_return_ HRESULT Advise( + _Inout_ IUnknown* pUnk, + _In_ const IID& iid, + _Out_ LPDWORD pdw) throw() + { + return AtlAdvise(p, pUnk, iid, pdw); + } + _Check_return_ HRESULT CoCreateInstance( + _In_ REFCLSID rclsid, + _Inout_opt_ LPUNKNOWN pUnkOuter = NULL, + _In_ DWORD dwClsContext = CLSCTX_ALL) throw() + { + ATLASSERT(p == NULL); + return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p); + } +#ifdef _ATL_USE_WINAPI_FAMILY_DESKTOP_APP + _Check_return_ HRESULT CoCreateInstance( + _In_z_ LPCOLESTR szProgID, + _Inout_opt_ LPUNKNOWN pUnkOuter = NULL, + _In_ DWORD dwClsContext = CLSCTX_ALL) throw() + { + CLSID clsid; + HRESULT hr = CLSIDFromProgID(szProgID, &clsid); + ATLASSERT(p == NULL); + if (SUCCEEDED(hr)) + hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(T), (void**)&p); + return hr; + } +#endif // _ATL_USE_WINAPI_FAMILY_DESKTOP_APP + template + _Check_return_ HRESULT QueryInterface(_Outptr_ Q** pp) const throw() + { + ATLASSERT(pp != NULL); + return p->QueryInterface(__uuidof(Q), (void**)pp); + } + T* p; +}; +// End code borrowed from Microsoft + +template +class CComPtr : + public CComPtrBase +{ +public: + T *p; +public: + CComPtr() + { + p = NULL; + } + + CComPtr(T *lp) + { + p = lp; + if (p != NULL) + p->AddRef(); + } + + CComPtr(const CComPtr &lp) + { + p = lp.p; + if (p != NULL) + p->AddRef(); + } + + ~CComPtr() + { + if (p != NULL) + p->Release(); + } + + T *operator = (T *lp) + { + T* pOld = p; + + p = lp; + if (p != NULL) + p->AddRef(); + + if (pOld != NULL) + pOld->Release(); + + return *this; + } + + T *operator = (const CComPtr &lp) + { + T* pOld = p; + + p = lp.p; + if (p != NULL) + p->AddRef(); + + if (pOld != NULL) + pOld->Release(); + + return *this; + } + + // We cannot enable this until gcc starts supporting __uuidof + // See CORE-12710 +#if 0 + template + T* operator=(const CComPtr& lp) + { + T* pOld = p; + + if (!lp.p || FAILED(lp.p->QueryInterface(__uuidof(T), (void**)(IUnknown**)&p))) + p = NULL; + + if (pOld != NULL) + pOld->Release(); + + return *this; + } +#endif + + void Release() + { + if (p != NULL) + { + p->Release(); + p = NULL; + } + } + + void Attach(T *lp) + { + if (p != NULL) + p->Release(); + p = lp; + } + + T *Detach() + { + T *saveP; + + saveP = p; + p = NULL; + return saveP; + } + + T **operator & () + { + ATLASSERT(p == NULL); + return &p; + } + + operator T * () + { + return p; + } + + _NoAddRefReleaseOnCComPtr *operator -> () const + { + ATLASSERT(p != NULL); + return (_NoAddRefReleaseOnCComPtr *)p; + } +}; + +// Begin code borrowed from Microsoft +//specialization for IDispatch +template <> +class CComPtr : + public CComPtrBase +{ +public: + CComPtr() throw() + { + } + CComPtr(_Inout_opt_ IDispatch* lp) throw() : + CComPtrBase(lp) + { + } + CComPtr(_Inout_ const CComPtr& lp) throw() : + CComPtrBase(lp.p) + { + } + IDispatch* operator=(_Inout_opt_ IDispatch* lp) throw() + { + if(*this!=lp) + { + CComPtr(lp).Swap(*this); + } + return *this; + } + IDispatch* operator=(_Inout_ const CComPtr& lp) throw() + { + if(*this!=lp) + { + CComPtr(lp).Swap(*this); + } + return *this; + } + CComPtr(_Inout_ CComPtr&& lp) throw() : + CComPtrBase() + { + this->p = lp.p; + lp.p = NULL; + } + IDispatch* operator=(_Inout_ CComPtr&& lp) throw() + { + CComPtr(static_cast(lp)).Swap(*this); + return *this; + } + _Check_return_ HRESULT GetPropertyByName( + _In_z_ LPCOLESTR lpsz, + _Out_ VARIANT* pVar) throw() + { + ATLASSERT(this->p); + ATLASSERT(pVar); + DISPID dwDispID; + HRESULT hr = GetIDOfName(lpsz, &dwDispID); + if (SUCCEEDED(hr)) + hr = GetProperty(dwDispID, pVar); + return hr; + } + _Check_return_ HRESULT GetProperty( + _In_ DISPID dwDispID, + _Out_ VARIANT* pVar) throw() + { + return GetProperty(this->p, dwDispID, pVar); + } + _Check_return_ HRESULT PutPropertyByName( + _In_z_ LPCOLESTR lpsz, + _In_ VARIANT* pVar) throw() + { + ATLASSERT(this->p); + ATLASSERT(pVar); + DISPID dwDispID; + HRESULT hr = GetIDOfName(lpsz, &dwDispID); + if (SUCCEEDED(hr)) + hr = PutProperty(dwDispID, pVar); + return hr; + } + _Check_return_ HRESULT PutProperty( + _In_ DISPID dwDispID, + _In_ VARIANT* pVar) throw() + { + return PutProperty(this->p, dwDispID, pVar); + } + _Check_return_ HRESULT GetIDOfName( + _In_z_ LPCOLESTR lpsz, + _Out_ DISPID* pdispid) throw() + { + return this->p->GetIDsOfNames(IID_NULL, const_cast(&lpsz), 1, LOCALE_USER_DEFAULT, pdispid); + } + // Invoke a method by DISPID with no parameters + _Check_return_ HRESULT Invoke0( + _In_ DISPID dispid, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + DISPPARAMS dispparams = { NULL, NULL, 0, 0}; + return this->p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, pvarRet, NULL, NULL); + } + // Invoke a method by name with no parameters + _Check_return_ HRESULT Invoke0( + _In_z_ LPCOLESTR lpszName, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + HRESULT hr; + DISPID dispid; + hr = GetIDOfName(lpszName, &dispid); + if (SUCCEEDED(hr)) + hr = Invoke0(dispid, pvarRet); + return hr; + } + // Invoke a method by DISPID with a single parameter + _Check_return_ HRESULT Invoke1( + _In_ DISPID dispid, + _In_ VARIANT* pvarParam1, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + DISPPARAMS dispparams = { pvarParam1, NULL, 1, 0}; + return this->p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, pvarRet, NULL, NULL); + } + // Invoke a method by name with a single parameter + _Check_return_ HRESULT Invoke1( + _In_z_ LPCOLESTR lpszName, + _In_ VARIANT* pvarParam1, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + DISPID dispid; + HRESULT hr = GetIDOfName(lpszName, &dispid); + if (SUCCEEDED(hr)) + hr = Invoke1(dispid, pvarParam1, pvarRet); + return hr; + } + // Invoke a method by DISPID with two parameters + _Check_return_ HRESULT Invoke2( + _In_ DISPID dispid, + _In_ VARIANT* pvarParam1, + _In_ VARIANT* pvarParam2, + _Out_opt_ VARIANT* pvarRet = NULL) throw(); + // Invoke a method by name with two parameters + _Check_return_ HRESULT Invoke2( + _In_z_ LPCOLESTR lpszName, + _In_ VARIANT* pvarParam1, + _In_ VARIANT* pvarParam2, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + DISPID dispid; + HRESULT hr = GetIDOfName(lpszName, &dispid); + if (SUCCEEDED(hr)) + hr = Invoke2(dispid, pvarParam1, pvarParam2, pvarRet); + return hr; + } + // Invoke a method by DISPID with N parameters + _Check_return_ HRESULT InvokeN( + _In_ DISPID dispid, + _In_ VARIANT* pvarParams, + _In_ int nParams, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + DISPPARAMS dispparams = {pvarParams, NULL, (unsigned int)nParams, 0}; + return this->p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparams, pvarRet, NULL, NULL); + } + // Invoke a method by name with Nparameters + _Check_return_ HRESULT InvokeN( + _In_z_ LPCOLESTR lpszName, + _In_ VARIANT* pvarParams, + _In_ int nParams, + _Out_opt_ VARIANT* pvarRet = NULL) throw() + { + HRESULT hr; + DISPID dispid; + hr = GetIDOfName(lpszName, &dispid); + if (SUCCEEDED(hr)) + hr = InvokeN(dispid, pvarParams, nParams, pvarRet); + return hr; + } + + _Check_return_ static HRESULT PutProperty( + _In_ IDispatch* pDispatch, + _In_ DISPID dwDispID, + _In_ VARIANT* pVar) throw() + { + ATLASSERT(pDispatch); + ATLASSERT(pVar != NULL); + if (pVar == NULL) + return E_POINTER; + + if (pDispatch == NULL) + return E_INVALIDARG; + + DISPPARAMS dispparams = {NULL, NULL, 1, 1}; + dispparams.rgvarg = pVar; + DISPID dispidPut = DISPID_PROPERTYPUT; + dispparams.rgdispidNamedArgs = &dispidPut; + + if (pVar->vt == VT_UNKNOWN || pVar->vt == VT_DISPATCH || + (pVar->vt & VT_ARRAY) || (pVar->vt & VT_BYREF)) + { + HRESULT hr = pDispatch->Invoke(dwDispID, IID_NULL, + LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUTREF, + &dispparams, NULL, NULL, NULL); + if (SUCCEEDED(hr)) + return hr; + } + return pDispatch->Invoke(dwDispID, IID_NULL, + LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, + &dispparams, NULL, NULL, NULL); + } + + _Check_return_ static HRESULT GetProperty( + _In_ IDispatch* pDispatch, + _In_ DISPID dwDispID, + _Out_ VARIANT* pVar) throw() + { + ATLASSERT(pDispatch); + ATLASSERT(pVar != NULL); + if (pVar == NULL) + return E_POINTER; + + if (pDispatch == NULL) + return E_INVALIDARG; + + DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; + return pDispatch->Invoke(dwDispID, IID_NULL, + LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, + &dispparamsNoArgs, pVar, NULL, NULL); + } +}; +// End code borrowed from Microsoft + + +//CComQIIDPtr is the gcc compatible version of CComQIPtr +#define I_ID(Itype) Itype,&IID_##Itype + +template +class CComQIIDPtr : + public CComPtr +{ +public: + // Let's tell GCC how to find a symbol. + using CComPtr::p; + + CComQIIDPtr() + { + } + CComQIIDPtr(_Inout_opt_ T* lp) : + CComPtr(lp) + { + } + CComQIIDPtr(_Inout_ const CComQIIDPtr& lp): + CComPtr(lp.p) + { + } + CComQIIDPtr(_Inout_opt_ IUnknown* lp) + { + if (lp != NULL) + { + if (FAILED(lp->QueryInterface(*piid, (void**)(IUnknown**)&p))) + p = NULL; + } + } + T *operator = (T *lp) + { + T* pOld = p; + + p = lp; + if (p != NULL) + p->AddRef(); + + if (pOld != NULL) + pOld->Release(); + + return *this; + } + + T *operator = (const CComQIIDPtr &lp) + { + T* pOld = p; + + p = lp.p; + if (p != NULL) + p->AddRef(); + + if (pOld != NULL) + pOld->Release(); + + return *this; + } + + T * operator=(IUnknown* lp) + { + T* pOld = p; + + if (!lp || FAILED(lp->QueryInterface(*piid, (void**)(IUnknown**)&p))) + p = NULL; + + if (pOld != NULL) + pOld->Release(); + + return *this; + } +}; + + +class CComBSTR +{ +public: + BSTR m_str; +public: + CComBSTR() : + m_str(NULL) + { + } + + CComBSTR(LPCOLESTR pSrc) + { + if (pSrc == NULL) + m_str = NULL; + else + m_str = ::SysAllocString(pSrc); + } + + CComBSTR(int length) + { + if (length == 0) + m_str = NULL; + else + m_str = ::SysAllocStringLen(NULL, length); + } + + CComBSTR(int length, LPCOLESTR pSrc) + { + if (length == 0) + m_str = NULL; + else + m_str = ::SysAllocStringLen(pSrc, length); + } + + CComBSTR(PCSTR pSrc) + { + if (pSrc) + { + int len = MultiByteToWideChar(CP_THREAD_ACP, 0, pSrc, -1, NULL, 0); + m_str = ::SysAllocStringLen(NULL, len - 1); + if (m_str) + { + int res = MultiByteToWideChar(CP_THREAD_ACP, 0, pSrc, -1, m_str, len); + ATLASSERT(res == len); + if (res != len) + { + ::SysFreeString(m_str); + m_str = NULL; + } + } + } + else + { + m_str = NULL; + } + } + + CComBSTR(const CComBSTR &other) + { + m_str = other.Copy(); + } + + CComBSTR(REFGUID guid) + { + OLECHAR szGuid[40]; + ::StringFromGUID2(guid, szGuid, 40); + m_str = ::SysAllocString(szGuid); + } + + ~CComBSTR() + { + ::SysFreeString(m_str); + m_str = NULL; + } + + operator BSTR () const + { + return m_str; + } + + BSTR *operator & () + { + return &m_str; + } + + CComBSTR &operator = (const CComBSTR &other) + { + ::SysFreeString(m_str); + m_str = other.Copy(); + return *this; + } + + void Attach(BSTR bstr) + { + ::SysFreeString(m_str); + m_str = bstr; + } + + BSTR Detach() + { + BSTR str = m_str; + m_str = NULL; + return str; + } + + BSTR Copy() const + { + if (!m_str) + return NULL; + return ::SysAllocStringLen(m_str, ::SysStringLen(m_str)); + } + + HRESULT CopyTo(BSTR *other) const + { + if (!other) + return E_POINTER; + *other = Copy(); + return S_OK; + } + + bool LoadString(HMODULE module, DWORD uID) + { + ::SysFreeString(m_str); + m_str = NULL; + const wchar_t *ptr = NULL; + int len = ::LoadStringW(module, uID, (PWSTR)&ptr, 0); + if (len) + m_str = ::SysAllocStringLen(ptr, len); + return m_str != NULL; + } + + unsigned int Length() const + { + return ::SysStringLen(m_str); + } + + unsigned int ByteLength() const + { + return ::SysStringByteLen(m_str); + } +}; + + +class CComVariant : public tagVARIANT +{ +public: + CComVariant() + { + ::VariantInit(this); + } + + CComVariant(const CComVariant& other) + { + V_VT(this) = VT_EMPTY; + Copy(&other); + } + + ~CComVariant() + { + Clear(); + } + + CComVariant(LPCOLESTR lpStr) + { + V_VT(this) = VT_BSTR; + V_BSTR(this) = ::SysAllocString(lpStr); + } + + CComVariant(LPCSTR lpStr) + { + V_VT(this) = VT_BSTR; + CComBSTR str(lpStr); + V_BSTR(this) = str.Detach(); + } + + CComVariant(bool value) + { + V_VT(this) = VT_BOOL; + V_BOOL(this) = value ? VARIANT_TRUE : VARIANT_FALSE; + } + + CComVariant(char value) + { + V_VT(this) = VT_I1; + V_I1(this) = value; + } + + CComVariant(BYTE value) + { + V_VT(this) = VT_UI1; + V_UI1(this) = value; + } + + CComVariant(short value) + { + V_VT(this) = VT_I2; + V_I2(this) = value; + } + + CComVariant(unsigned short value) + { + V_VT(this) = VT_UI2; + V_UI2(this) = value; + } + + CComVariant(int value, VARENUM type = VT_I4) + { + if (type == VT_I4 || type == VT_INT) + { + V_VT(this) = type; + V_I4(this) = value; + } + else + { + V_VT(this) = VT_ERROR; + V_ERROR(this) = E_INVALIDARG; + } + } + + CComVariant(unsigned int value, VARENUM type = VT_UI4) + { + if (type == VT_UI4 || type == VT_UINT) + { + V_VT(this) = type; + V_UI4(this) = value; + } + else + { + V_VT(this) = VT_ERROR; + V_ERROR(this) = E_INVALIDARG; + } + } + + CComVariant(long value, VARENUM type = VT_I4) + { + if (type == VT_I4 || type == VT_ERROR) + { + V_VT(this) = type; + V_I4(this) = value; + } + else + { + V_VT(this) = VT_ERROR; + V_ERROR(this) = E_INVALIDARG; + } + } + + CComVariant(unsigned long value) + { + V_VT(this) = VT_UI4; + V_UI4(this) = value; + } + + CComVariant(float value) + { + V_VT(this) = VT_R4; + V_R4(this) = value; + } + + CComVariant(double value, VARENUM type = VT_R8) + { + if (type == VT_R8 || type == VT_DATE) + { + V_VT(this) = type; + V_R8(this) = value; + } + else + { + V_VT(this) = VT_ERROR; + V_ERROR(this) = E_INVALIDARG; + } + } + + CComVariant(const LONGLONG& value) + { + V_VT(this) = VT_I8; + V_I8(this) = value; + } + + CComVariant(const ULONGLONG& value) + { + V_VT(this) = VT_UI8; + V_UI8(this) = value; + } + + CComVariant(const CY& value) + { + V_VT(this) = VT_CY; + V_I8(this) = value.int64; + } + + + HRESULT Clear() + { + return ::VariantClear(this); + } + + HRESULT Copy(_In_ const VARIANT* src) + { + return ::VariantCopy(this, const_cast(src)); + } + + HRESULT ChangeType(_In_ VARTYPE newType, _In_opt_ const LPVARIANT src = NULL) + { + const LPVARIANT lpSrc = src ? src : this; + return ::VariantChangeType(this, lpSrc, 0, newType); + } +}; + + + +}; // namespace ATL + +#ifndef _ATL_NO_AUTOMATIC_NAMESPACE +using namespace ATL; +#endif //!_ATL_NO_AUTOMATIC_NAMESPACE diff --git a/include/atlcore.h b/include/atlcore.h new file mode 100644 index 0000000..26f3ced --- /dev/null +++ b/include/atlcore.h @@ -0,0 +1,310 @@ +/* + * ReactOS ATL + * + * Copyright 2009 Andrew Hill + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +#include + +#ifdef __REACTOS__ + #define WIN32_NO_STATUS + #define _INC_WINDOWS + #define COM_NO_WINDOWS_H + #include + #include + #include + #include + #include +#else + #include +#endif +#include +#include +#include + +#ifndef ATLASSERT +#define ATLASSERT(expr) _ASSERTE(expr) +#endif // ATLASSERT + +namespace ATL +{ + +class CComCriticalSection +{ +public: + CRITICAL_SECTION m_sec; +public: + CComCriticalSection() + { + memset(&m_sec, 0, sizeof(CRITICAL_SECTION)); + } + + virtual ~CComCriticalSection() + { + } + + HRESULT Lock() + { + EnterCriticalSection(&m_sec); + return S_OK; + } + + HRESULT Unlock() + { + LeaveCriticalSection(&m_sec); + return S_OK; + } + + HRESULT Init() + { + InitializeCriticalSection(&m_sec); + return S_OK; + } + + HRESULT Term() + { + DeleteCriticalSection(&m_sec); + return S_OK; + } +}; + +class CComFakeCriticalSection +{ +public: + HRESULT Lock() + { + return S_OK; + } + + HRESULT Unlock() + { + return S_OK; + } + + HRESULT Init() + { + return S_OK; + } + + HRESULT Term() + { + return S_OK; + } +}; + +class CComAutoCriticalSection : public CComCriticalSection +{ +public: + CComAutoCriticalSection() + { + HRESULT hResult __MINGW_ATTRIB_UNUSED; + + hResult = CComCriticalSection::Init(); + ATLASSERT(SUCCEEDED(hResult)); + } + ~CComAutoCriticalSection() + { + CComCriticalSection::Term(); + } +}; + +class CComSafeDeleteCriticalSection : public CComCriticalSection +{ +private: + bool m_bInitialized; +public: + CComSafeDeleteCriticalSection() + { + m_bInitialized = false; + } + + ~CComSafeDeleteCriticalSection() + { + Term(); + } + + HRESULT Lock() + { + ATLASSERT(m_bInitialized); + return CComCriticalSection::Lock(); + } + + HRESULT Init() + { + HRESULT hResult; + + ATLASSERT(!m_bInitialized); + hResult = CComCriticalSection::Init(); + if (SUCCEEDED(hResult)) + m_bInitialized = true; + return hResult; + } + + HRESULT Term() + { + if (!m_bInitialized) + return S_OK; + m_bInitialized = false; + return CComCriticalSection::Term(); + } +}; + +class CComAutoDeleteCriticalSection : public CComSafeDeleteCriticalSection +{ +private: + // CComAutoDeleteCriticalSection::Term should never be called + HRESULT Term(); +}; + +struct _ATL_BASE_MODULE70 +{ + UINT cbSize; + HINSTANCE m_hInst; + HINSTANCE m_hInstResource; + bool m_bNT5orWin98; + DWORD dwAtlBuildVer; + GUID *pguidVer; + CRITICAL_SECTION m_csResource; +#ifdef NOTYET + CSimpleArray m_rgResourceInstance; +#endif +}; +typedef _ATL_BASE_MODULE70 _ATL_BASE_MODULE; + +class CAtlBaseModule : public _ATL_BASE_MODULE +{ +public : + static bool m_bInitFailed; +public: + CAtlBaseModule() + { + cbSize = sizeof(_ATL_BASE_MODULE); + GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)this, &m_hInst); + m_hInstResource = m_hInst; + } + + HINSTANCE GetModuleInstance() + { + return m_hInst; + } + + HINSTANCE GetResourceInstance() + { + return m_hInstResource; + } + + HINSTANCE SetResourceInstance(HINSTANCE hInst) + { + return static_cast< HINSTANCE >(InterlockedExchangePointer((void**)&m_hInstResource, hInst)); + } + + HINSTANCE GetHInstanceAt(int i); +}; + +__declspec(selectany) CAtlBaseModule _AtlBaseModule; +__declspec(selectany) bool CAtlBaseModule::m_bInitFailed = false; + + +/// +// String Resource helper functions +// +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable:4200) +#endif +struct ATLSTRINGRESOURCEIMAGE +{ + WORD nLength; + WCHAR achString[]; +}; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +inline const ATLSTRINGRESOURCEIMAGE* _AtlGetStringResourceImage( + _In_ HINSTANCE hInstance, + _In_ HRSRC hResource, + _In_ UINT id) +{ + const ATLSTRINGRESOURCEIMAGE* pImage; + const ATLSTRINGRESOURCEIMAGE* pImageEnd; + ULONG nResourceSize; + HGLOBAL hGlobal; + UINT iIndex; + + hGlobal = ::LoadResource(hInstance, hResource); + if (hGlobal == NULL) return NULL; + + pImage = (const ATLSTRINGRESOURCEIMAGE*)::LockResource(hGlobal); + if (pImage == NULL) return NULL; + + nResourceSize = ::SizeofResource(hInstance, hResource); + pImageEnd = (const ATLSTRINGRESOURCEIMAGE*)(LPBYTE(pImage) + nResourceSize); + iIndex = id & 0x000f; + + while ((iIndex > 0) && (pImage < pImageEnd)) + { + pImage = (const ATLSTRINGRESOURCEIMAGE*)(LPBYTE(pImage) + (sizeof(ATLSTRINGRESOURCEIMAGE) + (pImage->nLength * sizeof(WCHAR)))); + iIndex--; + } + + if (pImage >= pImageEnd) return NULL; + if (pImage->nLength == 0) return NULL; + + return pImage; +} + +inline const ATLSTRINGRESOURCEIMAGE* AtlGetStringResourceImage( + _In_ HINSTANCE hInstance, + _In_ UINT id) throw() +{ + HRSRC hResource; + hResource = ::FindResourceW(hInstance, MAKEINTRESOURCEW((((id >> 4) + 1) & static_cast(~0))), (LPWSTR)RT_STRING); + if (hResource == NULL) return NULL; + return _AtlGetStringResourceImage(hInstance, hResource, id); +} + +inline const ATLSTRINGRESOURCEIMAGE* AtlGetStringResourceImage( + _In_ HINSTANCE hInstance, + _In_ UINT id, + _In_ WORD wLanguage) +{ + HRSRC hResource; + hResource = ::FindResourceExW(hInstance, (LPWSTR)RT_STRING, MAKEINTRESOURCEW((((id >> 4) + 1) & static_cast(~0))), wLanguage); + if (hResource == NULL) return NULL; + return _AtlGetStringResourceImage(hInstance, hResource, id); +} + +inline HINSTANCE AtlFindStringResourceInstance( + UINT nID, + WORD wLanguage = 0) +{ + const ATLSTRINGRESOURCEIMAGE* strRes = NULL; + HINSTANCE hInst = _AtlBaseModule.GetHInstanceAt(0); + + for (int i = 1; hInst != NULL && strRes == NULL; hInst = _AtlBaseModule.GetHInstanceAt(i++)) + { + strRes = AtlGetStringResourceImage(hInst, nID, wLanguage); + if (strRes != NULL) return hInst; + } + + return NULL; +} + +}; // namespace ATL diff --git a/include/nsis/api.h b/include/nsis/api.h new file mode 100644 index 0000000..8157f34 --- /dev/null +++ b/include/nsis/api.h @@ -0,0 +1,85 @@ +/* + * apih + * + * This file is a part of NSIS. + * + * Copyright (C) 1999-2023 Nullsoft and Contributors + * + * Licensed under the zlib/libpng license (the "License"); + * you may not use this file except in compliance with the License. + * + * Licence details can be found in the file COPYING. + * + * This software is provided 'as-is', without any express or implied + * warranty. + */ + +#ifndef _NSIS_EXEHEAD_API_H_ +#define _NSIS_EXEHEAD_API_H_ + +// Starting with NSIS 2.42, you can check the version of the plugin API in exec_flags->plugin_api_version +// The format is 0xXXXXYYYY where X is the major version and Y is the minor version (MAKELONG(y,x)) +// When doing version checks, always remember to use >=, ex: if (pX->exec_flags->plugin_api_version >= NSISPIAPIVER_1_0) {} + +#define NSISPIAPIVER_1_0 0x00010000 +#define NSISPIAPIVER_CURR NSISPIAPIVER_1_0 + +// NSIS Plug-In Callback Messages +enum NSPIM +{ + NSPIM_UNLOAD, // This is the last message a plugin gets, do final cleanup + NSPIM_GUIUNLOAD, // Called after .onGUIEnd +}; + +// Prototype for callbacks registered with extra_parameters->RegisterPluginCallback() +// Return NULL for unknown messages +// Should always be __cdecl for future expansion possibilities +typedef UINT_PTR (*NSISPLUGINCALLBACK)(enum NSPIM); + +// extra_parameters data structure containing other interesting stuff +// besides the stack, variables and HWND passed on to plug-ins. +typedef struct +{ + int autoclose; // SetAutoClose + int all_user_var; // SetShellVarContext: User context = 0, Machine context = 1 + int exec_error; // IfErrors/ClearErrors/SetErrors + int abort; // IfAbort + int exec_reboot; // IfRebootFlag/SetRebootFlag (NSIS_SUPPORT_REBOOT) + int reboot_called; // NSIS_SUPPORT_REBOOT + int XXX_cur_insttype; // Deprecated + int plugin_api_version; // Plug-in ABI. See NSISPIAPIVER_CURR (Note: used to be XXX_insttype_changed) + int silent; // IfSilent/SetSilent (NSIS_CONFIG_SILENT_SUPPORT) + int instdir_error; // GetInstDirError + int rtl; // IfRtlLanguage: 1 if $LANGUAGE is a RTL language + int errlvl; // SetErrorLevel + int alter_reg_view; // SetRegView: Default View = 0, Alternative View = (sizeof(void*) > 4 ? KEY_WOW64_32KEY : KEY_WOW64_64KEY) + int status_update; // SetDetailsPrint +} exec_flags_t; + +#ifndef NSISCALL +# define NSISCALL __stdcall +#endif +#if !defined(_WIN32) && !defined(LPTSTR) +# define LPTSTR TCHAR* +#endif + +typedef struct { + exec_flags_t *exec_flags; + int (NSISCALL *ExecuteCodeSegment)(int, HWND); + void (NSISCALL *validate_filename)(LPTSTR); + int (NSISCALL *RegisterPluginCallback)(HMODULE, NSISPLUGINCALLBACK); // returns 0 on success, 1 if already registered and < 0 on errors +} extra_parameters; + +// Definitions for page showing plug-ins +// See Ui.c to understand better how they're used + +// sent to the outer window to tell it to go to the next inner window +#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8) + +// custom pages should send this message to let NSIS know they're ready +#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd) + +// sent as wParam with WM_NOTIFY_OUTER_NEXT when user cancels - heed its warning +#define NOTIFY_BYE_BYE 'x' + +#endif /* _NSIS_EXEHEAD_API_H_ */ diff --git a/include/nsis/nsis_tchar.h b/include/nsis/nsis_tchar.h new file mode 100644 index 0000000..ba39d2a --- /dev/null +++ b/include/nsis/nsis_tchar.h @@ -0,0 +1,229 @@ +/* + * nsis_tchar.h + * + * This file is a part of NSIS. + * + * Copyright (C) 1999-2023 Nullsoft and Contributors + * + * This software is provided 'as-is', without any express or implied + * warranty. + * + * For Unicode support by Jim Park -- 08/30/2007 + */ + +// Jim Park: Only those we use are listed here. + +#pragma once + +#ifdef _UNICODE + +#ifndef _T +#define __T(x) L ## x +#define _T(x) __T(x) +#define _TEXT(x) __T(x) +#endif + +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +#if !defined(_NATIVE_WCHAR_T_DEFINED) && !defined(_WCHAR_T_DEFINED) +typedef unsigned short TCHAR; +#else +typedef wchar_t TCHAR; +#endif +#endif + + +// program +#define _tenviron _wenviron +#define __targv __wargv + +// printfs +#define _ftprintf fwprintf +#define _sntprintf _snwprintf +#if (defined(_MSC_VER) && (_MSC_VER<=1310||_MSC_FULL_VER<=140040310)) || defined(__MINGW32__) +# define _stprintf swprintf +#else +# define _stprintf _swprintf +#endif +#define _tprintf wprintf +#define _vftprintf vfwprintf +#define _vsntprintf _vsnwprintf +#if defined(_MSC_VER) && (_MSC_VER<=1310) +# define _vstprintf vswprintf +#else +# define _vstprintf _vswprintf +#endif + +// scanfs +#define _tscanf wscanf +#define _stscanf swscanf + +// string manipulations +#define _tcscat wcscat +#define _tcschr wcschr +#define _tcsclen wcslen +#define _tcscpy wcscpy +#define _tcsdup _wcsdup +#define _tcslen wcslen +#define _tcsnccpy wcsncpy +#define _tcsncpy wcsncpy +#define _tcsrchr wcsrchr +#define _tcsstr wcsstr +#define _tcstok wcstok + +// string comparisons +#define _tcscmp wcscmp +#define _tcsicmp _wcsicmp +#define _tcsncicmp _wcsnicmp +#define _tcsncmp wcsncmp +#define _tcsnicmp _wcsnicmp + +// upper / lower +#define _tcslwr _wcslwr +#define _tcsupr _wcsupr +#define _totlower towlower +#define _totupper towupper + +// conversions to numbers +#define _tcstoi64 _wcstoi64 +#define _tcstol wcstol +#define _tcstoul wcstoul +#define _tstof _wtof +#define _tstoi _wtoi +#define _tstoi64 _wtoi64 +#define _ttoi _wtoi +#define _ttoi64 _wtoi64 +#define _ttol _wtol + +// conversion from numbers to strings +#define _itot _itow +#define _ltot _ltow +#define _i64tot _i64tow +#define _ui64tot _ui64tow + +// file manipulations +#define _tfopen _wfopen +#define _topen _wopen +#define _tremove _wremove +#define _tunlink _wunlink + +// reading and writing to i/o +#define _fgettc fgetwc +#define _fgetts fgetws +#define _fputts fputws +#define _gettchar getwchar + +// directory +#define _tchdir _wchdir + +// environment +#define _tgetenv _wgetenv +#define _tsystem _wsystem + +// time +#define _tcsftime wcsftime + +#else // ANSI + +#ifndef _T +#define _T(x) x +#define _TEXT(x) x +#endif + +#ifndef _TCHAR_DEFINED +#define _TCHAR_DEFINED +typedef char TCHAR; +#endif + +// program +#define _tenviron environ +#define __targv __argv + +// printfs +#define _ftprintf fprintf +#define _sntprintf _snprintf +#define _stprintf sprintf +#define _tprintf printf +#define _vftprintf vfprintf +#define _vsntprintf _vsnprintf +#define _vstprintf vsprintf + +// scanfs +#define _tscanf scanf +#define _stscanf sscanf + +// string manipulations +#define _tcscat strcat +#define _tcschr strchr +#define _tcsclen strlen +#define _tcscnlen strnlen +#define _tcscpy strcpy +#define _tcsdup _strdup +#define _tcslen strlen +#define _tcsnccpy strncpy +#define _tcsrchr strrchr +#define _tcsstr strstr +#define _tcstok strtok + +// string comparisons +#define _tcscmp strcmp +#define _tcsicmp _stricmp +#define _tcsncmp strncmp +#define _tcsncicmp _strnicmp +#define _tcsnicmp _strnicmp + +// upper / lower +#define _tcslwr _strlwr +#define _tcsupr _strupr + +#define _totupper toupper +#define _totlower tolower + +// conversions to numbers +#define _tcstol strtol +#define _tcstoul strtoul +#define _tstof atof +#define _tstoi atoi +#define _tstoi64 _atoi64 +#define _tstoi64 _atoi64 +#define _ttoi atoi +#define _ttoi64 _atoi64 +#define _ttol atol + +// conversion from numbers to strings +#define _i64tot _i64toa +#define _itot _itoa +#define _ltot _ltoa +#define _ui64tot _ui64toa + +// file manipulations +#define _tfopen fopen +#define _topen _open +#define _tremove remove +#define _tunlink _unlink + +// reading and writing to i/o +#define _fgettc fgetc +#define _fgetts fgets +#define _fputts fputs +#define _gettchar getchar + +// directory +#define _tchdir _chdir + +// environment +#define _tgetenv getenv +#define _tsystem system + +// time +#define _tcsftime strftime + +#endif + +// is functions (the same in Unicode / ANSI) +#define _istgraph isgraph +#define _istascii __isascii + +#define __TFILE__ _T(__FILE__) +#define __TDATE__ _T(__DATE__) +#define __TTIME__ _T(__TIME__) diff --git a/include/nsis/pluginapi.c b/include/nsis/pluginapi.c new file mode 100644 index 0000000..110f70e --- /dev/null +++ b/include/nsis/pluginapi.c @@ -0,0 +1,305 @@ +#include +#include "pluginapi.h" + +#ifndef COUNTOF +#define COUNTOF(a) (sizeof(a)/sizeof(a[0])) +#endif + +// minimal tchar.h emulation +#ifndef _T +# define _T TEXT +#endif +#if !defined(TCHAR) && !defined(_TCHAR_DEFINED) +# ifdef UNICODE +# define TCHAR WCHAR +# else +# define TCHAR char +# endif +#endif + +#define isvalidnsisvarindex(varnum) ( ((unsigned int)(varnum)) < (__INST_LAST) ) + +unsigned int g_stringsize; +stack_t **g_stacktop; +LPTSTR g_variables; + +// utility functions (not required but often useful) + +int NSISCALL popstring(LPTSTR str) +{ + stack_t *th; + if (!g_stacktop || !*g_stacktop) return 1; + th=(*g_stacktop); + if (str) lstrcpy(str,th->text); + *g_stacktop = th->next; + GlobalFree((HGLOBAL)th); + return 0; +} + +int NSISCALL popstringn(LPTSTR str, int maxlen) +{ + stack_t *th; + if (!g_stacktop || !*g_stacktop) return 1; + th=(*g_stacktop); + if (str) lstrcpyn(str,th->text,maxlen?maxlen:g_stringsize); + *g_stacktop = th->next; + GlobalFree((HGLOBAL)th); + return 0; +} + +void NSISCALL pushstring(LPCTSTR str) +{ + stack_t *th; + if (!g_stacktop) return; + th=(stack_t*)GlobalAlloc(GPTR,(sizeof(stack_t)+(g_stringsize)*sizeof(*str))); + lstrcpyn(th->text,str,g_stringsize); + th->next=*g_stacktop; + *g_stacktop=th; +} + +LPTSTR NSISCALL getuservariable(const int varnum) +{ + if (!isvalidnsisvarindex(varnum)) return NULL; + return g_variables+varnum*g_stringsize; +} + +void NSISCALL setuservariable(const int varnum, LPCTSTR var) +{ + if (var && isvalidnsisvarindex(varnum)) + lstrcpy(g_variables + varnum*g_stringsize, var); +} + +#ifdef UNICODE +int NSISCALL PopStringA(LPSTR ansiStr) +{ + LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*sizeof(WCHAR)); + int rval = popstring(wideStr); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); + GlobalFree((HGLOBAL)wideStr); + return rval; +} + +int NSISCALL PopStringNA(LPSTR ansiStr, int maxlen) +{ + int realLen = maxlen ? maxlen : g_stringsize; + LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, realLen*sizeof(WCHAR)); + int rval = popstringn(wideStr, realLen); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, realLen, NULL, NULL); + GlobalFree((HGLOBAL)wideStr); + return rval; +} + +void NSISCALL PushStringA(LPCSTR ansiStr) +{ + LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); + pushstring(wideStr); + GlobalFree((HGLOBAL)wideStr); + return; +} + +void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr) +{ + lstrcpyW(wideStr, getuservariable(varnum)); +} + +void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr) +{ + LPWSTR wideStr = getuservariable(varnum); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); +} + +void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr) +{ + if (ansiStr && isvalidnsisvarindex(varnum)) + { + LPWSTR wideStr = g_variables + varnum * g_stringsize; + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); + } +} + +#else +// ANSI defs +int NSISCALL PopStringW(LPWSTR wideStr) +{ + LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, g_stringsize); + int rval = popstring(ansiStr); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); + GlobalFree((HGLOBAL)ansiStr); + return rval; +} + +int NSISCALL PopStringNW(LPWSTR wideStr, int maxlen) +{ + int realLen = maxlen ? maxlen : g_stringsize; + LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, realLen); + int rval = popstringn(ansiStr, realLen); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, realLen); + GlobalFree((HGLOBAL)ansiStr); + return rval; +} + +void NSISCALL PushStringW(LPWSTR wideStr) +{ + LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, g_stringsize); + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); + pushstring(ansiStr); + GlobalFree((HGLOBAL)ansiStr); +} + +void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr) +{ + LPSTR ansiStr = getuservariable(varnum); + MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize); +} + +void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr) +{ + lstrcpyA(ansiStr, getuservariable(varnum)); +} + +void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr) +{ + if (wideStr && isvalidnsisvarindex(varnum)) + { + LPSTR ansiStr = g_variables + varnum * g_stringsize; + WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL); + } +} +#endif + +// playing with integers + +INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s) +{ + INT_PTR v=0; + if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X'))) + { + s++; + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('9')) c-=_T('0'); + else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10; + else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10; + else break; + v<<=4; + v+=c; + } + } + else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0')) + { + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('7')) c-=_T('0'); + else break; + v<<=3; + v+=c; + } + } + else + { + int sign=0; + if (*s == _T('-')) sign++; else s--; + for (;;) + { + int c=*(++s) - _T('0'); + if (c < 0 || c > 9) break; + v*=10; + v+=c; + } + if (sign) v = -v; + } + + return v; +} + +unsigned int NSISCALL myatou(LPCTSTR s) +{ + unsigned int v=0; + + for (;;) + { + unsigned int c=*s++; + if (c >= _T('0') && c <= _T('9')) c-=_T('0'); + else break; + v*=10; + v+=c; + } + return v; +} + +int NSISCALL myatoi_or(LPCTSTR s) +{ + int v=0; + if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X'))) + { + s++; + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('9')) c-=_T('0'); + else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10; + else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10; + else break; + v<<=4; + v+=c; + } + } + else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0')) + { + for (;;) + { + int c=*(++s); + if (c >= _T('0') && c <= _T('7')) c-=_T('0'); + else break; + v<<=3; + v+=c; + } + } + else + { + int sign=0; + if (*s == _T('-')) sign++; else s--; + for (;;) + { + int c=*(++s) - _T('0'); + if (c < 0 || c > 9) break; + v*=10; + v+=c; + } + if (sign) v = -v; + } + + // Support for simple ORed expressions + if (*s == _T('|')) + { + v |= myatoi_or(s+1); + } + + return v; +} + +INT_PTR NSISCALL popintptr() +{ + TCHAR buf[128]; + if (popstringn(buf,COUNTOF(buf))) + return 0; + return nsishelper_str_to_ptr(buf); +} + +int NSISCALL popint_or() +{ + TCHAR buf[128]; + if (popstringn(buf,COUNTOF(buf))) + return 0; + return myatoi_or(buf); +} + +void NSISCALL pushintptr(INT_PTR value) +{ + TCHAR buffer[30]; + wsprintf(buffer, sizeof(void*) > 4 ? _T("%Id") : _T("%d"), value); + pushstring(buffer); +} diff --git a/include/nsis/pluginapi.h b/include/nsis/pluginapi.h new file mode 100644 index 0000000..63fe790 --- /dev/null +++ b/include/nsis/pluginapi.h @@ -0,0 +1,108 @@ +#ifndef ___NSIS_PLUGIN__H___ +#define ___NSIS_PLUGIN__H___ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "api.h" +#include "nsis_tchar.h" // BUGBUG: Why cannot our plugins use the compilers tchar.h? + +#ifndef NSISCALL +# define NSISCALL WINAPI +#endif + +#define EXDLL_INIT() { \ + g_stringsize=string_size; \ + g_stacktop=stacktop; \ + g_variables=variables; } + +typedef struct _stack_t { + struct _stack_t *next; +#ifdef UNICODE + WCHAR text[1]; // this should be the length of g_stringsize when allocating +#else + char text[1]; +#endif +} stack_t; + +enum +{ +INST_0, // $0 +INST_1, // $1 +INST_2, // $2 +INST_3, // $3 +INST_4, // $4 +INST_5, // $5 +INST_6, // $6 +INST_7, // $7 +INST_8, // $8 +INST_9, // $9 +INST_R0, // $R0 +INST_R1, // $R1 +INST_R2, // $R2 +INST_R3, // $R3 +INST_R4, // $R4 +INST_R5, // $R5 +INST_R6, // $R6 +INST_R7, // $R7 +INST_R8, // $R8 +INST_R9, // $R9 +INST_CMDLINE, // $CMDLINE +INST_INSTDIR, // $INSTDIR +INST_OUTDIR, // $OUTDIR +INST_EXEDIR, // $EXEDIR +INST_LANG, // $LANGUAGE +__INST_LAST +}; + +extern unsigned int g_stringsize; +extern stack_t **g_stacktop; +extern LPTSTR g_variables; + +void NSISCALL pushstring(LPCTSTR str); +void NSISCALL pushintptr(INT_PTR value); +#define pushint(v) pushintptr((INT_PTR)(v)) +int NSISCALL popstring(LPTSTR str); // 0 on success, 1 on empty stack +int NSISCALL popstringn(LPTSTR str, int maxlen); // with length limit, pass 0 for g_stringsize +INT_PTR NSISCALL popintptr(); +#define popint() ( (int) popintptr() ) +int NSISCALL popint_or(); // with support for or'ing (2|4|8) +INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s); +#define myatoi(s) ( (int) nsishelper_str_to_ptr(s) ) // converts a string to an integer +unsigned int NSISCALL myatou(LPCTSTR s); // converts a string to an unsigned integer, decimal only +int NSISCALL myatoi_or(LPCTSTR s); // with support for or'ing (2|4|8) +LPTSTR NSISCALL getuservariable(const int varnum); +void NSISCALL setuservariable(const int varnum, LPCTSTR var); + +#ifdef UNICODE +#define PopStringW(x) popstring(x) +#define PushStringW(x) pushstring(x) +#define SetUserVariableW(x,y) setuservariable(x,y) + +int NSISCALL PopStringA(LPSTR ansiStr); +void NSISCALL PushStringA(LPCSTR ansiStr); +void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr); +void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr); +void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr); + +#else +// ANSI defs + +#define PopStringA(x) popstring(x) +#define PushStringA(x) pushstring(x) +#define SetUserVariableA(x,y) setuservariable(x,y) + +int NSISCALL PopStringW(LPWSTR wideStr); +void NSISCALL PushStringW(LPWSTR wideStr); +void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr); +void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr); +void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif//!___NSIS_PLUGIN__H___ diff --git a/include/wuapi.h b/include/wuapi.h new file mode 100644 index 0000000..4f85ce0 --- /dev/null +++ b/include/wuapi.h @@ -0,0 +1,17341 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 7.00.0555 */ +/* Compiler settings for wuapi.idl: + Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 + protocol : dce , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + +#pragma warning( disable: 4049 ) /* more than 64k source lines */ + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 475 +#endif + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCSAL_H_VERSION__ +#define __REQUIRED_RPCSAL_H_VERSION__ 100 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif // __RPCNDR_H_VERSION__ + +#ifndef COM_NO_WINDOWS_H +#include "windows.h" +#include "ole2.h" +#endif /*COM_NO_WINDOWS_H*/ + +#ifndef __wuapi_h__ +#define __wuapi_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +/* Forward Declarations */ + +#ifndef __IUpdateLockdown_FWD_DEFINED__ +#define __IUpdateLockdown_FWD_DEFINED__ +typedef interface IUpdateLockdown IUpdateLockdown; +#endif /* __IUpdateLockdown_FWD_DEFINED__ */ + + +#ifndef __IStringCollection_FWD_DEFINED__ +#define __IStringCollection_FWD_DEFINED__ +typedef interface IStringCollection IStringCollection; +#endif /* __IStringCollection_FWD_DEFINED__ */ + + +#ifndef __IWebProxy_FWD_DEFINED__ +#define __IWebProxy_FWD_DEFINED__ +typedef interface IWebProxy IWebProxy; +#endif /* __IWebProxy_FWD_DEFINED__ */ + + +#ifndef __ISystemInformation_FWD_DEFINED__ +#define __ISystemInformation_FWD_DEFINED__ +typedef interface ISystemInformation ISystemInformation; +#endif /* __ISystemInformation_FWD_DEFINED__ */ + + +#ifndef __IWindowsUpdateAgentInfo_FWD_DEFINED__ +#define __IWindowsUpdateAgentInfo_FWD_DEFINED__ +typedef interface IWindowsUpdateAgentInfo IWindowsUpdateAgentInfo; +#endif /* __IWindowsUpdateAgentInfo_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesResults_FWD_DEFINED__ +#define __IAutomaticUpdatesResults_FWD_DEFINED__ +typedef interface IAutomaticUpdatesResults IAutomaticUpdatesResults; +#endif /* __IAutomaticUpdatesResults_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings_FWD_DEFINED__ +#define __IAutomaticUpdatesSettings_FWD_DEFINED__ +typedef interface IAutomaticUpdatesSettings IAutomaticUpdatesSettings; +#endif /* __IAutomaticUpdatesSettings_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings2_FWD_DEFINED__ +#define __IAutomaticUpdatesSettings2_FWD_DEFINED__ +typedef interface IAutomaticUpdatesSettings2 IAutomaticUpdatesSettings2; +#endif /* __IAutomaticUpdatesSettings2_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings3_FWD_DEFINED__ +#define __IAutomaticUpdatesSettings3_FWD_DEFINED__ +typedef interface IAutomaticUpdatesSettings3 IAutomaticUpdatesSettings3; +#endif /* __IAutomaticUpdatesSettings3_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdates_FWD_DEFINED__ +#define __IAutomaticUpdates_FWD_DEFINED__ +typedef interface IAutomaticUpdates IAutomaticUpdates; +#endif /* __IAutomaticUpdates_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdates2_FWD_DEFINED__ +#define __IAutomaticUpdates2_FWD_DEFINED__ +typedef interface IAutomaticUpdates2 IAutomaticUpdates2; +#endif /* __IAutomaticUpdates2_FWD_DEFINED__ */ + + +#ifndef __IUpdateIdentity_FWD_DEFINED__ +#define __IUpdateIdentity_FWD_DEFINED__ +typedef interface IUpdateIdentity IUpdateIdentity; +#endif /* __IUpdateIdentity_FWD_DEFINED__ */ + + +#ifndef __IImageInformation_FWD_DEFINED__ +#define __IImageInformation_FWD_DEFINED__ +typedef interface IImageInformation IImageInformation; +#endif /* __IImageInformation_FWD_DEFINED__ */ + + +#ifndef __ICategory_FWD_DEFINED__ +#define __ICategory_FWD_DEFINED__ +typedef interface ICategory ICategory; +#endif /* __ICategory_FWD_DEFINED__ */ + + +#ifndef __ICategoryCollection_FWD_DEFINED__ +#define __ICategoryCollection_FWD_DEFINED__ +typedef interface ICategoryCollection ICategoryCollection; +#endif /* __ICategoryCollection_FWD_DEFINED__ */ + + +#ifndef __IInstallationBehavior_FWD_DEFINED__ +#define __IInstallationBehavior_FWD_DEFINED__ +typedef interface IInstallationBehavior IInstallationBehavior; +#endif /* __IInstallationBehavior_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloadContent_FWD_DEFINED__ +#define __IUpdateDownloadContent_FWD_DEFINED__ +typedef interface IUpdateDownloadContent IUpdateDownloadContent; +#endif /* __IUpdateDownloadContent_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloadContent2_FWD_DEFINED__ +#define __IUpdateDownloadContent2_FWD_DEFINED__ +typedef interface IUpdateDownloadContent2 IUpdateDownloadContent2; +#endif /* __IUpdateDownloadContent2_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloadContentCollection_FWD_DEFINED__ +#define __IUpdateDownloadContentCollection_FWD_DEFINED__ +typedef interface IUpdateDownloadContentCollection IUpdateDownloadContentCollection; +#endif /* __IUpdateDownloadContentCollection_FWD_DEFINED__ */ + + +#ifndef __IUpdate_FWD_DEFINED__ +#define __IUpdate_FWD_DEFINED__ +typedef interface IUpdate IUpdate; +#endif /* __IUpdate_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate_FWD_DEFINED__ +#define __IWindowsDriverUpdate_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate IWindowsDriverUpdate; +#endif /* __IWindowsDriverUpdate_FWD_DEFINED__ */ + + +#ifndef __IUpdate2_FWD_DEFINED__ +#define __IUpdate2_FWD_DEFINED__ +typedef interface IUpdate2 IUpdate2; +#endif /* __IUpdate2_FWD_DEFINED__ */ + + +#ifndef __IUpdate3_FWD_DEFINED__ +#define __IUpdate3_FWD_DEFINED__ +typedef interface IUpdate3 IUpdate3; +#endif /* __IUpdate3_FWD_DEFINED__ */ + + +#ifndef __IUpdate4_FWD_DEFINED__ +#define __IUpdate4_FWD_DEFINED__ +typedef interface IUpdate4 IUpdate4; +#endif /* __IUpdate4_FWD_DEFINED__ */ + + +#ifndef __IUpdate5_FWD_DEFINED__ +#define __IUpdate5_FWD_DEFINED__ +typedef interface IUpdate5 IUpdate5; +#endif /* __IUpdate5_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate2_FWD_DEFINED__ +#define __IWindowsDriverUpdate2_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate2 IWindowsDriverUpdate2; +#endif /* __IWindowsDriverUpdate2_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate3_FWD_DEFINED__ +#define __IWindowsDriverUpdate3_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate3 IWindowsDriverUpdate3; +#endif /* __IWindowsDriverUpdate3_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdateEntry_FWD_DEFINED__ +#define __IWindowsDriverUpdateEntry_FWD_DEFINED__ +typedef interface IWindowsDriverUpdateEntry IWindowsDriverUpdateEntry; +#endif /* __IWindowsDriverUpdateEntry_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdateEntryCollection_FWD_DEFINED__ +#define __IWindowsDriverUpdateEntryCollection_FWD_DEFINED__ +typedef interface IWindowsDriverUpdateEntryCollection IWindowsDriverUpdateEntryCollection; +#endif /* __IWindowsDriverUpdateEntryCollection_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate4_FWD_DEFINED__ +#define __IWindowsDriverUpdate4_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate4 IWindowsDriverUpdate4; +#endif /* __IWindowsDriverUpdate4_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate5_FWD_DEFINED__ +#define __IWindowsDriverUpdate5_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate5 IWindowsDriverUpdate5; +#endif /* __IWindowsDriverUpdate5_FWD_DEFINED__ */ + + +#ifndef __IUpdateCollection_FWD_DEFINED__ +#define __IUpdateCollection_FWD_DEFINED__ +typedef interface IUpdateCollection IUpdateCollection; +#endif /* __IUpdateCollection_FWD_DEFINED__ */ + + +#ifndef __IUpdateException_FWD_DEFINED__ +#define __IUpdateException_FWD_DEFINED__ +typedef interface IUpdateException IUpdateException; +#endif /* __IUpdateException_FWD_DEFINED__ */ + + +#ifndef __IInvalidProductLicenseException_FWD_DEFINED__ +#define __IInvalidProductLicenseException_FWD_DEFINED__ +typedef interface IInvalidProductLicenseException IInvalidProductLicenseException; +#endif /* __IInvalidProductLicenseException_FWD_DEFINED__ */ + + +#ifndef __IUpdateExceptionCollection_FWD_DEFINED__ +#define __IUpdateExceptionCollection_FWD_DEFINED__ +typedef interface IUpdateExceptionCollection IUpdateExceptionCollection; +#endif /* __IUpdateExceptionCollection_FWD_DEFINED__ */ + + +#ifndef __ISearchResult_FWD_DEFINED__ +#define __ISearchResult_FWD_DEFINED__ +typedef interface ISearchResult ISearchResult; +#endif /* __ISearchResult_FWD_DEFINED__ */ + + +#ifndef __ISearchJob_FWD_DEFINED__ +#define __ISearchJob_FWD_DEFINED__ +typedef interface ISearchJob ISearchJob; +#endif /* __ISearchJob_FWD_DEFINED__ */ + + +#ifndef __ISearchCompletedCallbackArgs_FWD_DEFINED__ +#define __ISearchCompletedCallbackArgs_FWD_DEFINED__ +typedef interface ISearchCompletedCallbackArgs ISearchCompletedCallbackArgs; +#endif /* __ISearchCompletedCallbackArgs_FWD_DEFINED__ */ + + +#ifndef __ISearchCompletedCallback_FWD_DEFINED__ +#define __ISearchCompletedCallback_FWD_DEFINED__ +typedef interface ISearchCompletedCallback ISearchCompletedCallback; +#endif /* __ISearchCompletedCallback_FWD_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntry_FWD_DEFINED__ +#define __IUpdateHistoryEntry_FWD_DEFINED__ +typedef interface IUpdateHistoryEntry IUpdateHistoryEntry; +#endif /* __IUpdateHistoryEntry_FWD_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntry2_FWD_DEFINED__ +#define __IUpdateHistoryEntry2_FWD_DEFINED__ +typedef interface IUpdateHistoryEntry2 IUpdateHistoryEntry2; +#endif /* __IUpdateHistoryEntry2_FWD_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntryCollection_FWD_DEFINED__ +#define __IUpdateHistoryEntryCollection_FWD_DEFINED__ +typedef interface IUpdateHistoryEntryCollection IUpdateHistoryEntryCollection; +#endif /* __IUpdateHistoryEntryCollection_FWD_DEFINED__ */ + + +#ifndef __IUpdateSearcher_FWD_DEFINED__ +#define __IUpdateSearcher_FWD_DEFINED__ +typedef interface IUpdateSearcher IUpdateSearcher; +#endif /* __IUpdateSearcher_FWD_DEFINED__ */ + + +#ifndef __IUpdateSearcher2_FWD_DEFINED__ +#define __IUpdateSearcher2_FWD_DEFINED__ +typedef interface IUpdateSearcher2 IUpdateSearcher2; +#endif /* __IUpdateSearcher2_FWD_DEFINED__ */ + + +#ifndef __IUpdateSearcher3_FWD_DEFINED__ +#define __IUpdateSearcher3_FWD_DEFINED__ +typedef interface IUpdateSearcher3 IUpdateSearcher3; +#endif /* __IUpdateSearcher3_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloadResult_FWD_DEFINED__ +#define __IUpdateDownloadResult_FWD_DEFINED__ +typedef interface IUpdateDownloadResult IUpdateDownloadResult; +#endif /* __IUpdateDownloadResult_FWD_DEFINED__ */ + + +#ifndef __IDownloadResult_FWD_DEFINED__ +#define __IDownloadResult_FWD_DEFINED__ +typedef interface IDownloadResult IDownloadResult; +#endif /* __IDownloadResult_FWD_DEFINED__ */ + + +#ifndef __IDownloadProgress_FWD_DEFINED__ +#define __IDownloadProgress_FWD_DEFINED__ +typedef interface IDownloadProgress IDownloadProgress; +#endif /* __IDownloadProgress_FWD_DEFINED__ */ + + +#ifndef __IDownloadJob_FWD_DEFINED__ +#define __IDownloadJob_FWD_DEFINED__ +typedef interface IDownloadJob IDownloadJob; +#endif /* __IDownloadJob_FWD_DEFINED__ */ + + +#ifndef __IDownloadCompletedCallbackArgs_FWD_DEFINED__ +#define __IDownloadCompletedCallbackArgs_FWD_DEFINED__ +typedef interface IDownloadCompletedCallbackArgs IDownloadCompletedCallbackArgs; +#endif /* __IDownloadCompletedCallbackArgs_FWD_DEFINED__ */ + + +#ifndef __IDownloadCompletedCallback_FWD_DEFINED__ +#define __IDownloadCompletedCallback_FWD_DEFINED__ +typedef interface IDownloadCompletedCallback IDownloadCompletedCallback; +#endif /* __IDownloadCompletedCallback_FWD_DEFINED__ */ + + +#ifndef __IDownloadProgressChangedCallbackArgs_FWD_DEFINED__ +#define __IDownloadProgressChangedCallbackArgs_FWD_DEFINED__ +typedef interface IDownloadProgressChangedCallbackArgs IDownloadProgressChangedCallbackArgs; +#endif /* __IDownloadProgressChangedCallbackArgs_FWD_DEFINED__ */ + + +#ifndef __IDownloadProgressChangedCallback_FWD_DEFINED__ +#define __IDownloadProgressChangedCallback_FWD_DEFINED__ +typedef interface IDownloadProgressChangedCallback IDownloadProgressChangedCallback; +#endif /* __IDownloadProgressChangedCallback_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloader_FWD_DEFINED__ +#define __IUpdateDownloader_FWD_DEFINED__ +typedef interface IUpdateDownloader IUpdateDownloader; +#endif /* __IUpdateDownloader_FWD_DEFINED__ */ + + +#ifndef __IUpdateInstallationResult_FWD_DEFINED__ +#define __IUpdateInstallationResult_FWD_DEFINED__ +typedef interface IUpdateInstallationResult IUpdateInstallationResult; +#endif /* __IUpdateInstallationResult_FWD_DEFINED__ */ + + +#ifndef __IInstallationResult_FWD_DEFINED__ +#define __IInstallationResult_FWD_DEFINED__ +typedef interface IInstallationResult IInstallationResult; +#endif /* __IInstallationResult_FWD_DEFINED__ */ + + +#ifndef __IInstallationProgress_FWD_DEFINED__ +#define __IInstallationProgress_FWD_DEFINED__ +typedef interface IInstallationProgress IInstallationProgress; +#endif /* __IInstallationProgress_FWD_DEFINED__ */ + + +#ifndef __IInstallationJob_FWD_DEFINED__ +#define __IInstallationJob_FWD_DEFINED__ +typedef interface IInstallationJob IInstallationJob; +#endif /* __IInstallationJob_FWD_DEFINED__ */ + + +#ifndef __IInstallationCompletedCallbackArgs_FWD_DEFINED__ +#define __IInstallationCompletedCallbackArgs_FWD_DEFINED__ +typedef interface IInstallationCompletedCallbackArgs IInstallationCompletedCallbackArgs; +#endif /* __IInstallationCompletedCallbackArgs_FWD_DEFINED__ */ + + +#ifndef __IInstallationCompletedCallback_FWD_DEFINED__ +#define __IInstallationCompletedCallback_FWD_DEFINED__ +typedef interface IInstallationCompletedCallback IInstallationCompletedCallback; +#endif /* __IInstallationCompletedCallback_FWD_DEFINED__ */ + + +#ifndef __IInstallationProgressChangedCallbackArgs_FWD_DEFINED__ +#define __IInstallationProgressChangedCallbackArgs_FWD_DEFINED__ +typedef interface IInstallationProgressChangedCallbackArgs IInstallationProgressChangedCallbackArgs; +#endif /* __IInstallationProgressChangedCallbackArgs_FWD_DEFINED__ */ + + +#ifndef __IInstallationProgressChangedCallback_FWD_DEFINED__ +#define __IInstallationProgressChangedCallback_FWD_DEFINED__ +typedef interface IInstallationProgressChangedCallback IInstallationProgressChangedCallback; +#endif /* __IInstallationProgressChangedCallback_FWD_DEFINED__ */ + + +#ifndef __IUpdateInstaller_FWD_DEFINED__ +#define __IUpdateInstaller_FWD_DEFINED__ +typedef interface IUpdateInstaller IUpdateInstaller; +#endif /* __IUpdateInstaller_FWD_DEFINED__ */ + + +#ifndef __IUpdateInstaller2_FWD_DEFINED__ +#define __IUpdateInstaller2_FWD_DEFINED__ +typedef interface IUpdateInstaller2 IUpdateInstaller2; +#endif /* __IUpdateInstaller2_FWD_DEFINED__ */ + + +#ifndef __IUpdateSession_FWD_DEFINED__ +#define __IUpdateSession_FWD_DEFINED__ +typedef interface IUpdateSession IUpdateSession; +#endif /* __IUpdateSession_FWD_DEFINED__ */ + + +#ifndef __IUpdateSession2_FWD_DEFINED__ +#define __IUpdateSession2_FWD_DEFINED__ +typedef interface IUpdateSession2 IUpdateSession2; +#endif /* __IUpdateSession2_FWD_DEFINED__ */ + + +#ifndef __IUpdateSession3_FWD_DEFINED__ +#define __IUpdateSession3_FWD_DEFINED__ +typedef interface IUpdateSession3 IUpdateSession3; +#endif /* __IUpdateSession3_FWD_DEFINED__ */ + + +#ifndef __IUpdateService_FWD_DEFINED__ +#define __IUpdateService_FWD_DEFINED__ +typedef interface IUpdateService IUpdateService; +#endif /* __IUpdateService_FWD_DEFINED__ */ + + +#ifndef __IUpdateService2_FWD_DEFINED__ +#define __IUpdateService2_FWD_DEFINED__ +typedef interface IUpdateService2 IUpdateService2; +#endif /* __IUpdateService2_FWD_DEFINED__ */ + + +#ifndef __IUpdateServiceCollection_FWD_DEFINED__ +#define __IUpdateServiceCollection_FWD_DEFINED__ +typedef interface IUpdateServiceCollection IUpdateServiceCollection; +#endif /* __IUpdateServiceCollection_FWD_DEFINED__ */ + + +#ifndef __IUpdateServiceRegistration_FWD_DEFINED__ +#define __IUpdateServiceRegistration_FWD_DEFINED__ +typedef interface IUpdateServiceRegistration IUpdateServiceRegistration; +#endif /* __IUpdateServiceRegistration_FWD_DEFINED__ */ + + +#ifndef __IUpdateServiceManager_FWD_DEFINED__ +#define __IUpdateServiceManager_FWD_DEFINED__ +typedef interface IUpdateServiceManager IUpdateServiceManager; +#endif /* __IUpdateServiceManager_FWD_DEFINED__ */ + + +#ifndef __IUpdateServiceManager2_FWD_DEFINED__ +#define __IUpdateServiceManager2_FWD_DEFINED__ +typedef interface IUpdateServiceManager2 IUpdateServiceManager2; +#endif /* __IUpdateServiceManager2_FWD_DEFINED__ */ + + +#ifndef __IInstallationAgent_FWD_DEFINED__ +#define __IInstallationAgent_FWD_DEFINED__ +typedef interface IInstallationAgent IInstallationAgent; +#endif /* __IInstallationAgent_FWD_DEFINED__ */ + + +#ifndef __IUpdateLockdown_FWD_DEFINED__ +#define __IUpdateLockdown_FWD_DEFINED__ +typedef interface IUpdateLockdown IUpdateLockdown; +#endif /* __IUpdateLockdown_FWD_DEFINED__ */ + + +#ifndef __IUpdateException_FWD_DEFINED__ +#define __IUpdateException_FWD_DEFINED__ +typedef interface IUpdateException IUpdateException; +#endif /* __IUpdateException_FWD_DEFINED__ */ + + +#ifndef __IInvalidProductLicenseException_FWD_DEFINED__ +#define __IInvalidProductLicenseException_FWD_DEFINED__ +typedef interface IInvalidProductLicenseException IInvalidProductLicenseException; +#endif /* __IInvalidProductLicenseException_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings_FWD_DEFINED__ +#define __IAutomaticUpdatesSettings_FWD_DEFINED__ +typedef interface IAutomaticUpdatesSettings IAutomaticUpdatesSettings; +#endif /* __IAutomaticUpdatesSettings_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings2_FWD_DEFINED__ +#define __IAutomaticUpdatesSettings2_FWD_DEFINED__ +typedef interface IAutomaticUpdatesSettings2 IAutomaticUpdatesSettings2; +#endif /* __IAutomaticUpdatesSettings2_FWD_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings3_FWD_DEFINED__ +#define __IAutomaticUpdatesSettings3_FWD_DEFINED__ +typedef interface IAutomaticUpdatesSettings3 IAutomaticUpdatesSettings3; +#endif /* __IAutomaticUpdatesSettings3_FWD_DEFINED__ */ + + +#ifndef __IUpdate_FWD_DEFINED__ +#define __IUpdate_FWD_DEFINED__ +typedef interface IUpdate IUpdate; +#endif /* __IUpdate_FWD_DEFINED__ */ + + +#ifndef __IUpdate2_FWD_DEFINED__ +#define __IUpdate2_FWD_DEFINED__ +typedef interface IUpdate2 IUpdate2; +#endif /* __IUpdate2_FWD_DEFINED__ */ + + +#ifndef __IUpdate3_FWD_DEFINED__ +#define __IUpdate3_FWD_DEFINED__ +typedef interface IUpdate3 IUpdate3; +#endif /* __IUpdate3_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdateEntry_FWD_DEFINED__ +#define __IWindowsDriverUpdateEntry_FWD_DEFINED__ +typedef interface IWindowsDriverUpdateEntry IWindowsDriverUpdateEntry; +#endif /* __IWindowsDriverUpdateEntry_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdateEntryCollection_FWD_DEFINED__ +#define __IWindowsDriverUpdateEntryCollection_FWD_DEFINED__ +typedef interface IWindowsDriverUpdateEntryCollection IWindowsDriverUpdateEntryCollection; +#endif /* __IWindowsDriverUpdateEntryCollection_FWD_DEFINED__ */ + + +#ifndef __IUpdate4_FWD_DEFINED__ +#define __IUpdate4_FWD_DEFINED__ +typedef interface IUpdate4 IUpdate4; +#endif /* __IUpdate4_FWD_DEFINED__ */ + + +#ifndef __IUpdate5_FWD_DEFINED__ +#define __IUpdate5_FWD_DEFINED__ +typedef interface IUpdate5 IUpdate5; +#endif /* __IUpdate5_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate_FWD_DEFINED__ +#define __IWindowsDriverUpdate_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate IWindowsDriverUpdate; +#endif /* __IWindowsDriverUpdate_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate2_FWD_DEFINED__ +#define __IWindowsDriverUpdate2_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate2 IWindowsDriverUpdate2; +#endif /* __IWindowsDriverUpdate2_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate3_FWD_DEFINED__ +#define __IWindowsDriverUpdate3_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate3 IWindowsDriverUpdate3; +#endif /* __IWindowsDriverUpdate3_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate4_FWD_DEFINED__ +#define __IWindowsDriverUpdate4_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate4 IWindowsDriverUpdate4; +#endif /* __IWindowsDriverUpdate4_FWD_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate5_FWD_DEFINED__ +#define __IWindowsDriverUpdate5_FWD_DEFINED__ +typedef interface IWindowsDriverUpdate5 IWindowsDriverUpdate5; +#endif /* __IWindowsDriverUpdate5_FWD_DEFINED__ */ + + +#ifndef __ISearchCompletedCallback_FWD_DEFINED__ +#define __ISearchCompletedCallback_FWD_DEFINED__ +typedef interface ISearchCompletedCallback ISearchCompletedCallback; +#endif /* __ISearchCompletedCallback_FWD_DEFINED__ */ + + +#ifndef __IDownloadCompletedCallback_FWD_DEFINED__ +#define __IDownloadCompletedCallback_FWD_DEFINED__ +typedef interface IDownloadCompletedCallback IDownloadCompletedCallback; +#endif /* __IDownloadCompletedCallback_FWD_DEFINED__ */ + + +#ifndef __IDownloadProgressChangedCallback_FWD_DEFINED__ +#define __IDownloadProgressChangedCallback_FWD_DEFINED__ +typedef interface IDownloadProgressChangedCallback IDownloadProgressChangedCallback; +#endif /* __IDownloadProgressChangedCallback_FWD_DEFINED__ */ + + +#ifndef __IInstallationCompletedCallback_FWD_DEFINED__ +#define __IInstallationCompletedCallback_FWD_DEFINED__ +typedef interface IInstallationCompletedCallback IInstallationCompletedCallback; +#endif /* __IInstallationCompletedCallback_FWD_DEFINED__ */ + + +#ifndef __IInstallationProgressChangedCallback_FWD_DEFINED__ +#define __IInstallationProgressChangedCallback_FWD_DEFINED__ +typedef interface IInstallationProgressChangedCallback IInstallationProgressChangedCallback; +#endif /* __IInstallationProgressChangedCallback_FWD_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntry_FWD_DEFINED__ +#define __IUpdateHistoryEntry_FWD_DEFINED__ +typedef interface IUpdateHistoryEntry IUpdateHistoryEntry; +#endif /* __IUpdateHistoryEntry_FWD_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntry2_FWD_DEFINED__ +#define __IUpdateHistoryEntry2_FWD_DEFINED__ +typedef interface IUpdateHistoryEntry2 IUpdateHistoryEntry2; +#endif /* __IUpdateHistoryEntry2_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloadContent_FWD_DEFINED__ +#define __IUpdateDownloadContent_FWD_DEFINED__ +typedef interface IUpdateDownloadContent IUpdateDownloadContent; +#endif /* __IUpdateDownloadContent_FWD_DEFINED__ */ + + +#ifndef __IUpdateDownloadContent2_FWD_DEFINED__ +#define __IUpdateDownloadContent2_FWD_DEFINED__ +typedef interface IUpdateDownloadContent2 IUpdateDownloadContent2; +#endif /* __IUpdateDownloadContent2_FWD_DEFINED__ */ + + +#ifndef __StringCollection_FWD_DEFINED__ +#define __StringCollection_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class StringCollection StringCollection; +#else +typedef struct StringCollection StringCollection; +#endif /* __cplusplus */ + +#endif /* __StringCollection_FWD_DEFINED__ */ + + +#ifndef __UpdateSearcher_FWD_DEFINED__ +#define __UpdateSearcher_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class UpdateSearcher UpdateSearcher; +#else +typedef struct UpdateSearcher UpdateSearcher; +#endif /* __cplusplus */ + +#endif /* __UpdateSearcher_FWD_DEFINED__ */ + + +#ifndef __WebProxy_FWD_DEFINED__ +#define __WebProxy_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class WebProxy WebProxy; +#else +typedef struct WebProxy WebProxy; +#endif /* __cplusplus */ + +#endif /* __WebProxy_FWD_DEFINED__ */ + + +#ifndef __SystemInformation_FWD_DEFINED__ +#define __SystemInformation_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class SystemInformation SystemInformation; +#else +typedef struct SystemInformation SystemInformation; +#endif /* __cplusplus */ + +#endif /* __SystemInformation_FWD_DEFINED__ */ + + +#ifndef __WindowsUpdateAgentInfo_FWD_DEFINED__ +#define __WindowsUpdateAgentInfo_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class WindowsUpdateAgentInfo WindowsUpdateAgentInfo; +#else +typedef struct WindowsUpdateAgentInfo WindowsUpdateAgentInfo; +#endif /* __cplusplus */ + +#endif /* __WindowsUpdateAgentInfo_FWD_DEFINED__ */ + + +#ifndef __AutomaticUpdates_FWD_DEFINED__ +#define __AutomaticUpdates_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class AutomaticUpdates AutomaticUpdates; +#else +typedef struct AutomaticUpdates AutomaticUpdates; +#endif /* __cplusplus */ + +#endif /* __AutomaticUpdates_FWD_DEFINED__ */ + + +#ifndef __UpdateCollection_FWD_DEFINED__ +#define __UpdateCollection_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class UpdateCollection UpdateCollection; +#else +typedef struct UpdateCollection UpdateCollection; +#endif /* __cplusplus */ + +#endif /* __UpdateCollection_FWD_DEFINED__ */ + + +#ifndef __UpdateDownloader_FWD_DEFINED__ +#define __UpdateDownloader_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class UpdateDownloader UpdateDownloader; +#else +typedef struct UpdateDownloader UpdateDownloader; +#endif /* __cplusplus */ + +#endif /* __UpdateDownloader_FWD_DEFINED__ */ + + +#ifndef __UpdateInstaller_FWD_DEFINED__ +#define __UpdateInstaller_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class UpdateInstaller UpdateInstaller; +#else +typedef struct UpdateInstaller UpdateInstaller; +#endif /* __cplusplus */ + +#endif /* __UpdateInstaller_FWD_DEFINED__ */ + + +#ifndef __UpdateSession_FWD_DEFINED__ +#define __UpdateSession_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class UpdateSession UpdateSession; +#else +typedef struct UpdateSession UpdateSession; +#endif /* __cplusplus */ + +#endif /* __UpdateSession_FWD_DEFINED__ */ + + +#ifndef __UpdateServiceManager_FWD_DEFINED__ +#define __UpdateServiceManager_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class UpdateServiceManager UpdateServiceManager; +#else +typedef struct UpdateServiceManager UpdateServiceManager; +#endif /* __cplusplus */ + +#endif /* __UpdateServiceManager_FWD_DEFINED__ */ + + +#ifndef __InstallationAgent_FWD_DEFINED__ +#define __InstallationAgent_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class InstallationAgent InstallationAgent; +#else +typedef struct InstallationAgent InstallationAgent; +#endif /* __cplusplus */ + +#endif /* __InstallationAgent_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "oaidl.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + +/* interface __MIDL_itf_wuapi_0000_0000 */ +/* [local] */ + +//=--------------------------------------------------------------------------= +// wuapi.h +//=--------------------------------------------------------------------------= +// (C) Copyright 2003-2004 Microsoft Corporation. All Rights Reserved. +// +// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +// PARTICULAR PURPOSE. +//=--------------------------------------------------------------------------= + +#pragma comment(lib, "wuguid.lib") + +//-------------------------------------------------------------------------- +// Windows Update Services Client Interfaces. +// -------------------------------------------------------------------------------- +// GUIDS +// -------------------------------------------------------------------------------- +// {B596CC9F-56E5-419E-A622-E01BB457431E} +DEFINE_GUID(LIBID_WUApiLib,0xB596CC9F,0x56E5,0x419E,0xA6,0x22,0xE0,0x1B,0xB4,0x57,0x43,0x1E); + +// {A976C28D-75A1-42AA-94AE-8AF8B872089A} +DEFINE_GUID(IID_IUpdateLockdown,0xa976c28d,0x75a1,0x42aa,0x94,0xae,0x8a,0xf8,0xb8,0x72,0x08,0x9a); + +// {EFF90582-2DDC-480F-A06D-60F3FBC362C3} +DEFINE_GUID(IID_IStringCollection,0xeff90582,0x2ddc,0x480f,0xa0,0x6d,0x60,0xf3,0xfb,0xc3,0x62,0xc3); + +// {174C81FE-AECD-4DAE-B8A0-2C6318DD86A8} +DEFINE_GUID(IID_IWebProxy,0x174c81fe,0xaecd,0x4dae,0xb8,0xa0,0x2c,0x63,0x18,0xdd,0x86,0xa8); + +// {ADE87BF7-7B56-4275-8FAB-B9B0E591844B} +DEFINE_GUID(IID_ISystemInformation,0xade87bf7,0x7b56,0x4275,0x8f,0xab,0xb9,0xb0,0xe5,0x91,0x84,0x4b); + +// {85713FA1-7796-4FA2-BE3B-E2D6124DD373} +DEFINE_GUID(IID_IWindowsUpdateAgentInfo,0x85713FA1,0x7796,0x4FA2,0xBE,0x3B,0xE2,0xD6,0x12,0x4D,0xD3,0x73); + +// {E7A4D634-7942-4DD9-A111-82228BA33901} +DEFINE_GUID(IID_IAutomaticUpdatesResults,0xe7a4d634,0x7942,0x4DD9,0xA1,0x11,0x82,0x22,0x8b,0xa3,0x39,0x1); + +// {2EE48F22-AF3C-405F-8970-F71BE12EE9A2} +DEFINE_GUID(IID_IAutomaticUpdatesSettings,0x2ee48f22,0xaf3c,0x405f,0x89,0x70,0xf7,0x1b,0xe1,0x2e,0xe9,0xa2); + +// {6ABC136A-C3CA-4384-8171-CB2B1E59B8DC} +DEFINE_GUID(IID_IAutomaticUpdatesSettings2,0x6abc136a,0xc3ca,0x4384,0x81,0x71,0xcb,0x2b,0x1e,0x59,0xb8,0xdc); + +// {B587F5C3-F57E-485F-BBF5-0D181C5CD0DC} +DEFINE_GUID(IID_IAutomaticUpdatesSettings3,0xb587f5c3,0xf57e,0x485f,0xbb,0xf5,0x0d,0x18,0x1c,0x5c,0xd0,0xdc); + +// {673425BF-C082-4C7C-BDFD-569464B8E0CE} +DEFINE_GUID(IID_IAutomaticUpdates,0x673425bf,0xc082,0x4c7c,0xbd,0xfd,0x56,0x94,0x64,0xb8,0xe0,0xce); + +// {4A2F5C31-CFD9-410E-B7FB-29A653973A0F} +DEFINE_GUID(IID_IAutomaticUpdates2,0x4A2f5C31,0xCFD9,0x410E,0xB7,0xFB,0x29,0xA6,0x53,0x97,0x3A,0xF); + +// {46297823-9940-4C09-AED9-CD3EA6D05968} +DEFINE_GUID(IID_IUpdateIdentity,0x46297823,0x9940,0x4c09,0xae,0xd9,0xcd,0x3e,0xa6,0xd0,0x59,0x68); + +// {7C907864-346C-4AEB-8F3F-57DA289F969F} +DEFINE_GUID(IID_IImageInformation,0x7c907864,0x346c,0x4aeb,0x8f,0x3f,0x57,0xda,0x28,0x9f,0x96,0x9f); + +// {81DDC1B8-9D35-47A6-B471-5B80F519223B} +DEFINE_GUID(IID_ICategory,0x81ddc1b8,0x9d35,0x47a6,0xb4,0x71,0x5b,0x80,0xf5,0x19,0x22,0x3b); + +// {3A56BFB8-576C-43F7-9335-FE4838FD7E37} +DEFINE_GUID(IID_ICategoryCollection,0x3a56bfb8,0x576c,0x43f7,0x93,0x35,0xfe,0x48,0x38,0xfd,0x7e,0x37); + +// {D9A59339-E245-4DBD-9686-4D5763E39624} +DEFINE_GUID(IID_IInstallationBehavior,0xd9a59339,0xe245,0x4dbd,0x96,0x86,0x4d,0x57,0x63,0xe3,0x96,0x24); + +// {54A2CB2D-9A0C-48B6-8A50-9ABB69EE2D02} +DEFINE_GUID(IID_IUpdateDownloadContent,0x54a2cb2d,0x9a0c,0x48b6,0x8a,0x50,0x9a,0xbb,0x69,0xee,0x2d,0x02); + +// {C97AD11B-F257-420B-9D9F-377F733F6F68} +DEFINE_GUID(IID_IUpdateDownloadContent2,0xc97ad11b,0xf257,0x420b,0x9d,0x9f,0x37,0x7f,0x73,0x3f,0x6f,0x68); + +// {BC5513C8-B3B8-4BF7-A4D4-361C0D8C88BA} +DEFINE_GUID(IID_IUpdateDownloadContentCollection,0xbc5513c8,0xb3b8,0x4bf7,0xa4,0xd4,0x36,0x1c,0x0d,0x8c,0x88,0xba); + +// {6A92B07A-D821-4682-B423-5C805022CC4D} +DEFINE_GUID(IID_IUpdate,0x6a92b07a,0xd821,0x4682,0xb4,0x23,0x5c,0x80,0x50,0x22,0xcc,0x4d); + +// {144fe9b0-d23d-4a8b-8634-fb4457533b7a} +DEFINE_GUID(IID_IUpdate2,0x144fe9b0,0xd23d,0x4a8b,0x86,0x34,0xfb,0x44,0x57,0x53,0x3b,0x7a); + +// {112EDA6B-95B3-476F-9D90-AEE82C6B8181} +DEFINE_GUID(IID_IUpdate3,0x112EDA6B,0x95B3,0x476F,0x9D,0x90,0xAE,0xE8,0x2C,0x6B,0x81,0x81); + +// {27E94B0D-5139-49A2-9A61-93522DC54652} +DEFINE_GUID(IID_IUpdate4,0x27e94b0d,0x5139,0x49a2,0x9a, 0x61, 0x93, 0x52, 0x2d, 0xc5, 0x46, 0x52); + +// {C1C2F21A-D2F4-4902-B5C6-8A081C19A890} +DEFINE_GUID(IID_IUpdate5,0xc1c2f21a,0xd2f4,0x4902,0xb5, 0xc6, 0x8a, 0x08, 0x1c, 0x19, 0xa8, 0x90); + +// {B383CD1A-5CE9-4504-9F63-764B1236F191} +DEFINE_GUID(IID_IWindowsDriverUpdate,0xb383cd1a,0x5ce9,0x4504,0x9f,0x63,0x76,0x4b,0x12,0x36,0xf1,0x91); + +// {615c4269-7a48-43bd-96b7-bf6ca27d6c3e} +DEFINE_GUID(IID_IWindowsDriverUpdate2,0x615c4269,0x7a48,0x43bd,0x96,0xb7,0xbf,0x6c,0xa2,0x7d,0x6c,0x3e); + +// {49EBD502-4A96-41BD-9E3E-4C5057F4250C} +DEFINE_GUID(IID_IWindowsDriverUpdate3,0x49EBD502,0x4A96,0x41BD,0x9E,0x3E,0x4C,0x50,0x57,0xF4,0x25,0x0C); + +// {004C6A2B-0C19-4c69-9F5C-A269B2560DB9} +DEFINE_GUID(IID_IWindowsDriverUpdate4,0x004C6A2B,0x0C19,0x4c69,0x9F,0x5C,0xA2,0x69,0xB2,0x56,0x0D,0xB9); + +// {70CF5C82-8642-42bb-9DBC-0CFD263C6C4F} +DEFINE_GUID(IID_IWindowsDriverUpdate5,0x70CF5C82,0x8642,0x42bb,0x9d,0xbc,0x0c,0xfd,0x26,0x3c,0x6c,0x4f); + +// {0D521700-A372-4bef-828B-3D00C10ADEBD} +DEFINE_GUID(IID_IWindowsDriverUpdateEntryCollection,0x0D521700,0xA372,0x4bef,0x82,0x8B,0x3D,0x00,0xC1,0x0A,0xDE,0xBD); + +// {ED8BFE40-A60B-42ea-9652-817DFCFA23EC} +DEFINE_GUID(IID_IWindowsDriverUpdateEntry,0xED8BFE40,0xA60B,0x42ea,0x96,0x52,0x81,0x7D,0xFC,0xFA,0x23,0xEC); + +// {07F7438C-7709-4CA5-B518-91279288134E} +DEFINE_GUID(IID_IUpdateCollection,0x07f7438c,0x7709,0x4ca5,0xb5,0x18,0x91,0x27,0x92,0x88,0x13,0x4e); + +// {A376DD5E-09D4-427F-AF7C-FED5B6E1C1D6} +DEFINE_GUID(IID_IUpdateException,0xa376dd5e,0x09d4,0x427f,0xaf,0x7c,0xfe,0xd5,0xb6,0xe1,0xc1,0xd6); + +// {A37D00F5-7BB0-4953-B414-F9E98326F2E8} +DEFINE_GUID(IID_IInvalidProductLicenseException,0xa37d00f5,0x7bb0,0x4953,0xb4,0x14,0xf9,0xe9,0x83,0x26,0xf2,0xe8); + +// {A37D00F5-7BB0-4953-B414-F9E98326F2E8} +DEFINE_GUID(IID_IUpdateExceptionCollection,0x503626a3,0x8e14,0x4729,0x93,0x55,0x0f,0xe6,0x64,0xbd,0x23,0x21); + +// {D40CFF62-E08C-4498-941A-01E25F0FD33C} +DEFINE_GUID(IID_ISearchResult,0xd40cff62,0xe08c,0x4498,0x94,0x1a,0x01,0xe2,0x5f,0x0f,0xd3,0x3c); + +// {7366EA16-7A1A-4EA2-B042-973D3E9CD99B} +DEFINE_GUID(IID_ISearchJob,0x7366ea16,0x7a1a,0x4ea2,0xb0,0x42,0x97,0x3d,0x3e,0x9c,0xd9,0x9b); + +// {A700A634-2850-4C47-938A-9E4B6E5AF9A6} +DEFINE_GUID(IID_ISearchCompletedCallbackArgs,0xa700a634,0x2850,0x4c47,0x93,0x8a,0x9e,0x4b,0x6e,0x5a,0xf9,0xa6); + +// {88AEE058-D4B0-4725-A2F1-814A67AE964C} +DEFINE_GUID(IID_ISearchCompletedCallback,0x88aee058,0xd4b0,0x4725,0xa2,0xf1,0x81,0x4a,0x67,0xae,0x96,0x4c); + +// {BE56A644-AF0E-4E0E-A311-C1D8E695CBFF} +DEFINE_GUID(IID_IUpdateHistoryEntry,0xbe56a644,0xaf0e,0x4e0e,0xa3,0x11,0xc1,0xd8,0xe6,0x95,0xcb,0xff); + +// {C2BFB780-4539-4132-AB8C-0A8772013AB6} +DEFINE_GUID(IID_IUpdateHistoryEntry2,0xc2bfb780,0x4539,0x4132,0xab,0x8c,0x0a,0x87,0x72,0x01,0x3a,0xb6); + +// {A7F04F3C-A290-435B-AADF-A116C3357A5C} +DEFINE_GUID(IID_IUpdateHistoryEntryCollection,0xa7f04f3c,0xa290,0x435b,0xaa,0xdf,0xa1,0x16,0xc3,0x35,0x7a,0x5c); + +// {8F45ABF1-F9AE-4B95-A933-F0F66E5056EA} +DEFINE_GUID(IID_IUpdateSearcher,0x8f45abf1,0xf9ae,0x4b95,0xa9,0x33,0xf0,0xf6,0x6e,0x50,0x56,0xea); + +// {4CBDCB2D-1589-4BEB-BD1C-3E582FF0ADD0} +DEFINE_GUID(IID_IUpdateSearcher2,0x4cbdcb2d,0x1589,0x4beb,0xbd,0x1c,0x3e,0x58,0x2f,0xf0,0xad,0xd0); + +// {04C6895D-EAF2-4034-97F3-311DE9BE413A} +DEFINE_GUID(IID_IUpdateSearcher3,0x4c6895d,0xeaf2,0x4034,0x97,0xf3,0x31,0x1d,0xe9,0xbe,0x41,0x3a); + +// {BF99AF76-B575-42AD-8AA4-33CBB5477AF1} +DEFINE_GUID(IID_IUpdateDownloadResult,0xbf99af76,0xb575,0x42ad,0x8a,0xa4,0x33,0xcb,0xb5,0x47,0x7a,0xf1); + +// {DAA4FDD0-4727-4DBE-A1E7-745DCA317144} +DEFINE_GUID(IID_IDownloadResult,0xdaa4fdd0,0x4727,0x4dbe,0xa1,0xe7,0x74,0x5d,0xca,0x31,0x71,0x44); + +// {D31A5BAC-F719-4178-9DBB-5E2CB47FD18A} +DEFINE_GUID(IID_IDownloadProgress,0xd31a5bac,0xf719,0x4178,0x9d,0xbb,0x5e,0x2c,0xb4,0x7f,0xd1,0x8a); + +// {C574DE85-7358-43F6-AAE8-8697E62D8BA7} +DEFINE_GUID(IID_IDownloadJob,0xc574de85,0x7358,0x43f6,0xaa,0xe8,0x86,0x97,0xe6,0x2d,0x8b,0xa7); + +// {FA565B23-498C-47A0-979D-E7D5B1813360} +DEFINE_GUID(IID_IDownloadCompletedCallbackArgs,0xfa565b23,0x498c,0x47a0,0x97,0x9d,0xe7,0xd5,0xb1,0x81,0x33,0x60); + +// {77254866-9F5B-4C8E-B9E2-C77A8530D64B} +DEFINE_GUID(IID_IDownloadCompletedCallback,0x77254866,0x9f5b,0x4c8e,0xb9,0xe2,0xc7,0x7a,0x85,0x30,0xd6,0x4b); + +// {324FF2C6-4981-4B04-9412-57481745AB24} +DEFINE_GUID(IID_IDownloadProgressChangedCallbackArgs,0x324ff2c6,0x4981,0x4b04,0x94,0x12,0x57,0x48,0x17,0x45,0xab,0x24); + +// {8C3F1CDD-6173-4591-AEBD-A56A53CA77C1} +DEFINE_GUID(IID_IDownloadProgressChangedCallback,0x8c3f1cdd,0x6173,0x4591,0xae,0xbd,0xa5,0x6a,0x53,0xca,0x77,0xc1); + +// {68F1C6F9-7ECC-4666-A464-247FE12496C3} +DEFINE_GUID(IID_IUpdateDownloader,0x68f1c6f9,0x7ecc,0x4666,0xa4,0x64,0x24,0x7f,0xe1,0x24,0x96,0xc3); + +// {D940F0F8-3CBB-4FD0-993F-471E7F2328AD} +DEFINE_GUID(IID_IUpdateInstallationResult,0xd940f0f8,0x3cbb,0x4fd0,0x99,0x3f,0x47,0x1e,0x7f,0x23,0x28,0xad); + +// {A43C56D6-7451-48D4-AF96-B6CD2D0D9B7A} +DEFINE_GUID(IID_IInstallationResult,0xa43c56d6,0x7451,0x48d4,0xaf,0x96,0xb6,0xcd,0x2d,0x0d,0x9b,0x7a); + +// {345C8244-43A3-4E32-A368-65F073B76F36} +DEFINE_GUID(IID_IInstallationProgress,0x345c8244,0x43a3,0x4e32,0xa3,0x68,0x65,0xf0,0x73,0xb7,0x6f,0x36); + +// {5C209F0B-BAD5-432A-9556-4699BED2638A} +DEFINE_GUID(IID_IInstallationJob,0x5c209f0b,0xbad5,0x432a,0x95,0x56,0x46,0x99,0xbe,0xd2,0x63,0x8a); + +// {250E2106-8EFB-4705-9653-EF13C581B6A1} +DEFINE_GUID(IID_IInstallationCompletedCallbackArgs,0x250e2106,0x8efb,0x4705,0x96,0x53,0xef,0x13,0xc5,0x81,0xb6,0xa1); + +// {45F4F6F3-D602-4F98-9A8A-3EFA152AD2D3} +DEFINE_GUID(IID_IInstallationCompletedCallback,0x45f4f6f3,0xd602,0x4f98,0x9a,0x8a,0x3e,0xfa,0x15,0x2a,0xd2,0xd3); + +// {E4F14E1E-689D-4218-A0B9-BC189C484A01} +DEFINE_GUID(IID_IInstallationProgressChangedCallbackArgs,0xe4f14e1e,0x689d,0x4218,0xa0,0xb9,0xbc,0x18,0x9c,0x48,0x4a,0x01); + +// {E01402D5-F8DA-43BA-A012-38894BD048F1} +DEFINE_GUID(IID_IInstallationProgressChangedCallback,0xe01402d5,0xf8da,0x43ba,0xa0,0x12,0x38,0x89,0x4b,0xd0,0x48,0xf1); + +// {7B929C68-CCDC-4226-96B1-8724600B54C2} +DEFINE_GUID(IID_IUpdateInstaller,0x7b929c68,0xccdc,0x4226,0x96,0xb1,0x87,0x24,0x60,0x0b,0x54,0xc2); + +// {3442d4fe-224d-4cee-98cf-30e0c4d229e6} +DEFINE_GUID(IID_IUpdateInstaller2,0x3442d4fe,0x224d,0x4cee,0x98,0xcf,0x30,0xe0,0xc4,0xd2,0x29,0xe6); + +// {816858A4-260D-4260-933A-2585F1ABC76B} +DEFINE_GUID(IID_IUpdateSession,0x816858a4,0x260d,0x4260,0x93,0x3a,0x25,0x85,0xf1,0xab,0xc7,0x6b); + +// {91CAF7B0-EB23-49ED-9937-C52D817F46F7} +DEFINE_GUID(IID_IUpdateSession2,0x91caf7b0,0xeb23,0x49ed,0x99,0x37,0xc5,0x2d,0x81,0x7f,0x46,0xf7); + +// {918EFD1E-B5D8-4c90-8540-AEB9BDC56F9D} +DEFINE_GUID(IID_IUpdateSession3,0x918efd1e,0xb5d8,0x4c90,0x85,0x40,0xae,0xb9,0xbd,0xc5,0x6f,0x9d); + +// {76B3B17E-AED6-4DA5-85F0-83587F81ABE3} +DEFINE_GUID(IID_IUpdateService,0x76b3b17e,0xaed6,0x4da5,0x85,0xf0,0x83,0x58,0x7f,0x81,0xab,0xe3); + +// {1518B460-6518-4172-940F-C75883B24CEB} +DEFINE_GUID(IID_IUpdateService2,0x1518b460,0x6518,0x4172,0x94,0x0f,0xc7,0x58,0x83,0xb2,0x4c,0xeb); + +// {9B0353AA-0E52-44FF-B8B0-1F7FA0437F88} +DEFINE_GUID(IID_IUpdateServiceCollection,0x9b0353aa,0x0e52,0x44ff,0xb8,0xb0,0x1f,0x7f,0xa0,0x43,0x7f,0x88); + +// {DDE02280-12B3-4E0B-937B-6747F6ACB286} +DEFINE_GUID(IID_IUpdateServiceRegistration,0xdde02280,0x12b3,0x4e0b,0x93,0x7b,0x67,0x47,0xf6,0xac,0xb2,0x86); + +// {23857E3C-02BA-44A3-9423-B1C900805F37} +DEFINE_GUID(IID_IUpdateServiceManager,0x23857E3C,0x02BA,0x44A3,0x94,0x23,0xB1,0xC9,0x00,0x80,0x5F,0x37); + +// {0BB8531D-7E8D-424F-986C-A0B8F60A3E7B} +DEFINE_GUID(IID_IUpdateServiceManager2,0x0BB8531D,0x7E8D,0x424F,0x98,0x6C,0xA0,0xB8,0xF6,0x0A,0x3E,0x7B); + +// {925CBC18-A2EA-4648-BF1C-EC8BADCFE20A} +DEFINE_GUID(IID_IInstallationAgent,0x925CBC18,0xA2EA,0x4648,0xBF,0x1C,0xEC,0x8B,0xAD,0xCF,0xE2,0x0A); + +// {72C97D74-7C3B-40AE-B77D-ABDB22EBA6FB} +DEFINE_GUID(CLSID_StringCollection,0x72C97D74,0x7C3B,0x40AE,0xB7,0x7D,0xAB,0xDB,0x22,0xEB,0xA6,0xFB); + +// {B699E5E8-67FF-4177-88B0-3684A3388BFB} +DEFINE_GUID(CLSID_UpdateSearcher,0xB699E5E8,0x67FF,0x4177,0x88,0xB0,0x36,0x84,0xA3,0x38,0x8B,0xFB); + +// {650503cf-9108-4ddc-a2ce-6c2341e1c582} +DEFINE_GUID(CLSID_WebProxy,0x650503cf,0x9108,0x4ddc,0xa2,0xce,0x6c,0x23,0x41,0xe1,0xc5,0x82); + +// {C01B9BA0-BEA7-41BA-B604-D0A36F469133} +DEFINE_GUID(CLSID_SystemInformation,0xC01B9BA0,0xBEA7,0x41BA,0xB6,0x04,0xD0,0xA3,0x6F,0x46,0x91,0x33); + +// {C2E88C2F-6F5B-4AAA-894B-55C847AD3A2D} +DEFINE_GUID(CLSID_WindowsUpdateAgentInfo,0xC2E88C2F,0x6F5B,0x4AAA,0x89,0x4B,0x55,0xC8,0x47,0xAD,0x3A,0x2D); + +// {BFE18E9C-6D87-4450-B37C-E02F0B373803} +DEFINE_GUID(CLSID_AutomaticUpdates,0xBFE18E9C,0x6D87,0x4450,0xB3,0x7C,0xE0,0x2F,0x0B,0x37,0x38,0x03); + +// {13639463-00DB-4646-803D-528026140D88} +DEFINE_GUID(CLSID_UpdateCollection,0x13639463,0x00DB,0x4646,0x80,0x3D,0x52,0x80,0x26,0x14,0x0D,0x88); + +// {5BAF654A-5A07-4264-A255-9FF54C7151E7} +DEFINE_GUID(CLSID_UpdateDownloader,0x5BAF654A,0x5A07,0x4264,0xA2,0x55,0x9F,0xF5,0x4C,0x71,0x51,0xE7); + +// {D2E0FE7F-D23E-48E1-93C0-6FA8CC346474} +DEFINE_GUID(CLSID_UpdateInstaller,0xD2E0FE7F,0xD23E,0x48E1,0x93,0xC0,0x6F,0xA8,0xCC,0x34,0x64,0x74); + +// {4CB43D7F-7EEE-4906-8698-60DA1C38F2FE} +DEFINE_GUID(CLSID_UpdateSession,0x4CB43D7F,0x7EEE,0x4906,0x86,0x98,0x60,0xDA,0x1C,0x38,0xF2,0xFE); + +// {F8D253D9-89A4-4DAA-87B6-1168369F0B21} +DEFINE_GUID(CLSID_UpdateServiceManager,0xF8D253D9,0x89A4,0x4DAA,0x87,0xB6,0x11,0x68,0x36,0x9F,0x0B,0x21); + +// {317E92FC-1679-46FD-A0B5-F08914DD8623} +DEFINE_GUID(CLSID_InstallationAgent,0x317E92FC,0x1679,0x46FD,0xA0,0xB5,0xF0,0x89,0x14,0xDD,0x86,0x23); + +typedef /* [v1_enum][helpstring][public] */ +enum tagAutomaticUpdatesNotificationLevel + { aunlNotConfigured = 0, + aunlDisabled = 1, + aunlNotifyBeforeDownload = 2, + aunlNotifyBeforeInstallation = 3, + aunlScheduledInstallation = 4 + } AutomaticUpdatesNotificationLevel; + +typedef /* [v1_enum][helpstring][public] */ +enum tagAutomaticUpdatesScheduledInstallationDay + { ausidEveryDay = 0, + ausidEverySunday = 1, + ausidEveryMonday = 2, + ausidEveryTuesday = 3, + ausidEveryWednesday = 4, + ausidEveryThursday = 5, + ausidEveryFriday = 6, + ausidEverySaturday = 7 + } AutomaticUpdatesScheduledInstallationDay; + +typedef /* [v1_enum][helpstring][public] */ +enum tagDownloadPhase + { dphInitializing = 1, + dphDownloading = 2, + dphVerifying = 3 + } DownloadPhase; + +typedef /* [v1_enum][helpstring][public] */ +enum tagDownloadPriority + { dpLow = 1, + dpNormal = 2, + dpHigh = 3 + } DownloadPriority; + +typedef /* [v1_enum][helpstring][public] */ +enum tagAutoSelectionMode + { asLetWindowsUpdateDecide = 0, + asAutoSelectIfDownloaded = 1, + asNeverAutoSelect = 2, + asAlwaysAutoSelect = 3 + } AutoSelectionMode; + +typedef /* [v1_enum][helpstring][public] */ +enum tagAutoDownloadMode + { adLetWindowsUpdateDecide = 0, + adNeverAutoDownload = 1, + adAlwaysAutoDownload = 2 + } AutoDownloadMode; + +typedef /* [v1_enum][helpstring][public] */ +enum tagInstallationImpact + { iiNormal = 0, + iiMinor = 1, + iiRequiresExclusiveHandling = 2 + } InstallationImpact; + +typedef /* [v1_enum][helpstring][public] */ +enum tagInstallationRebootBehavior + { irbNeverReboots = 0, + irbAlwaysRequiresReboot = 1, + irbCanRequestReboot = 2 + } InstallationRebootBehavior; + +typedef /* [v1_enum][helpstring][public] */ +enum tagOperationResultCode + { orcNotStarted = 0, + orcInProgress = 1, + orcSucceeded = 2, + orcSucceededWithErrors = 3, + orcFailed = 4, + orcAborted = 5 + } OperationResultCode; + +typedef /* [v1_enum][helpstring][public] */ +enum tagServerSelection + { ssDefault = 0, + ssManagedServer = 1, + ssWindowsUpdate = 2, + ssOthers = 3 + } ServerSelection; + +typedef /* [v1_enum][helpstring][public] */ +enum tagUpdateType + { utSoftware = 1, + utDriver = 2 + } UpdateType; + +typedef /* [v1_enum][helpstring][public] */ +enum tagUpdateOperation + { uoInstallation = 1, + uoUninstallation = 2 + } UpdateOperation; + +typedef /* [v1_enum][helpstring][public] */ +enum tagDeploymentAction + { daNone = 0, + daInstallation = 1, + daUninstallation = 2, + daDetection = 3 + } DeploymentAction; + +typedef /* [v1_enum][helpstring][public] */ +enum tagUpdateExceptionContext + { uecGeneral = 1, + uecWindowsDriver = 2, + uecWindowsInstaller = 3 + } UpdateExceptionContext; + +typedef /* [v1_enum][helpstring][public] */ +enum tagAutomaticUpdatesUserType + { auutCurrentUser = 1, + auutLocalAdministrator = 2 + } AutomaticUpdatesUserType; + +typedef /* [v1_enum][helpstring][public] */ +enum tagAutomaticUpdatesPermissionType + { auptSetNotificationLevel = 1, + auptDisableAutomaticUpdates = 2, + auptSetIncludeRecommendedUpdates = 3, + auptSetFeaturedUpdatesEnabled = 4, + auptSetNonAdministratorsElevated = 5 + } AutomaticUpdatesPermissionType; + +typedef /* [v1_enum][helpstring][public] */ +enum tagUpdateServiceRegistrationState + { usrsNotRegistered = 1, + usrsRegistrationPending = 2, + usrsRegistered = 3 + } UpdateServiceRegistrationState; + +typedef /* [v1_enum][helpstring][public] */ +enum tagSearchScope + { searchScopeDefault = 0, + searchScopeMachineOnly = 1, + searchScopeCurrentUserOnly = 2, + searchScopeMachineAndCurrentUser = 3, + searchScopeMachineAndAllUsers = 4, + searchScopeAllUsers = 5 + } SearchScope; + +#define UPDATE_LOCKDOWN_WEBSITE_ACCESS ( 0x1 ) + + + + + + + +extern RPC_IF_HANDLE __MIDL_itf_wuapi_0000_0000_v0_0_c_ifspec; +extern RPC_IF_HANDLE __MIDL_itf_wuapi_0000_0000_v0_0_s_ifspec; + +#ifndef __IUpdateLockdown_INTERFACE_DEFINED__ +#define __IUpdateLockdown_INTERFACE_DEFINED__ + +/* interface IUpdateLockdown */ +/* [unique][uuid][nonextensible][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateLockdown; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a976c28d-75a1-42aa-94ae-8af8b872089a") + IUpdateLockdown : public IUnknown + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE LockDown( + /* [in] */ LONG flags) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateLockdownVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateLockdown * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateLockdown * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateLockdown * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *LockDown )( + __RPC__in IUpdateLockdown * This, + /* [in] */ LONG flags); + + END_INTERFACE + } IUpdateLockdownVtbl; + + interface IUpdateLockdown + { + CONST_VTBL struct IUpdateLockdownVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateLockdown_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateLockdown_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateLockdown_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateLockdown_LockDown(This,flags) \ + ( (This)->lpVtbl -> LockDown(This,flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateLockdown_INTERFACE_DEFINED__ */ + + +#ifndef __IStringCollection_INTERFACE_DEFINED__ +#define __IStringCollection_INTERFACE_DEFINED__ + +/* interface IStringCollection */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IStringCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("eff90582-2ddc-480f-a06d-60f3fbc362c3") + IStringCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Item( + /* [in] */ LONG index, + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ReadOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ __RPC__in BSTR value, + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Copy( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Insert( + /* [in] */ LONG index, + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RemoveAt( + /* [in] */ LONG index) = 0; + + }; + +#else /* C style interface */ + + typedef struct IStringCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IStringCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IStringCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IStringCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IStringCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IStringCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IStringCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IStringCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IStringCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Item )( + __RPC__in IStringCollection * This, + /* [in] */ LONG index, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IStringCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IStringCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IStringCollection * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + __RPC__in IStringCollection * This, + /* [in] */ __RPC__in BSTR value, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( + __RPC__in IStringCollection * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Copy )( + __RPC__in IStringCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Insert )( + __RPC__in IStringCollection * This, + /* [in] */ LONG index, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RemoveAt )( + __RPC__in IStringCollection * This, + /* [in] */ LONG index); + + END_INTERFACE + } IStringCollectionVtbl; + + interface IStringCollection + { + CONST_VTBL struct IStringCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IStringCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IStringCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IStringCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IStringCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IStringCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IStringCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IStringCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IStringCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IStringCollection_put_Item(This,index,value) \ + ( (This)->lpVtbl -> put_Item(This,index,value) ) + +#define IStringCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IStringCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#define IStringCollection_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IStringCollection_Add(This,value,retval) \ + ( (This)->lpVtbl -> Add(This,value,retval) ) + +#define IStringCollection_Clear(This) \ + ( (This)->lpVtbl -> Clear(This) ) + +#define IStringCollection_Copy(This,retval) \ + ( (This)->lpVtbl -> Copy(This,retval) ) + +#define IStringCollection_Insert(This,index,value) \ + ( (This)->lpVtbl -> Insert(This,index,value) ) + +#define IStringCollection_RemoveAt(This,index) \ + ( (This)->lpVtbl -> RemoveAt(This,index) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IStringCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IWebProxy_INTERFACE_DEFINED__ +#define __IWebProxy_INTERFACE_DEFINED__ + +/* interface IWebProxy */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWebProxy; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("174c81fe-aecd-4dae-b8a0-2c6318dd86a8") + IWebProxy : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Address( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Address( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BypassList( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_BypassList( + /* [in] */ __RPC__in_opt IStringCollection *value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BypassProxyOnLocal( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_BypassProxyOnLocal( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ReadOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UserName( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_UserName( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetPassword( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE PromptForCredentials( + /* [unique][in] */ __RPC__in_opt IUnknown *parentWindow, + /* [in] */ __RPC__in BSTR title) = 0; + + virtual /* [helpstring][restricted][id] */ HRESULT STDMETHODCALLTYPE PromptForCredentialsFromHwnd( + /* [unique][in] */ __RPC__in_opt HWND parentWindow, + /* [in] */ __RPC__in BSTR title) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoDetect( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AutoDetect( + /* [in] */ VARIANT_BOOL value) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWebProxyVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWebProxy * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWebProxy * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWebProxy * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWebProxy * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWebProxy * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWebProxy * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWebProxy * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Address )( + __RPC__in IWebProxy * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Address )( + __RPC__in IWebProxy * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BypassList )( + __RPC__in IWebProxy * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BypassList )( + __RPC__in IWebProxy * This, + /* [in] */ __RPC__in_opt IStringCollection *value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BypassProxyOnLocal )( + __RPC__in IWebProxy * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_BypassProxyOnLocal )( + __RPC__in IWebProxy * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IWebProxy * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserName )( + __RPC__in IWebProxy * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserName )( + __RPC__in IWebProxy * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetPassword )( + __RPC__in IWebProxy * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *PromptForCredentials )( + __RPC__in IWebProxy * This, + /* [unique][in] */ __RPC__in_opt IUnknown *parentWindow, + /* [in] */ __RPC__in BSTR title); + + /* [helpstring][restricted][id] */ HRESULT ( STDMETHODCALLTYPE *PromptForCredentialsFromHwnd )( + __RPC__in IWebProxy * This, + /* [unique][in] */ __RPC__in_opt HWND parentWindow, + /* [in] */ __RPC__in BSTR title); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoDetect )( + __RPC__in IWebProxy * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AutoDetect )( + __RPC__in IWebProxy * This, + /* [in] */ VARIANT_BOOL value); + + END_INTERFACE + } IWebProxyVtbl; + + interface IWebProxy + { + CONST_VTBL struct IWebProxyVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWebProxy_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWebProxy_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWebProxy_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWebProxy_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWebProxy_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWebProxy_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWebProxy_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWebProxy_get_Address(This,retval) \ + ( (This)->lpVtbl -> get_Address(This,retval) ) + +#define IWebProxy_put_Address(This,value) \ + ( (This)->lpVtbl -> put_Address(This,value) ) + +#define IWebProxy_get_BypassList(This,retval) \ + ( (This)->lpVtbl -> get_BypassList(This,retval) ) + +#define IWebProxy_put_BypassList(This,value) \ + ( (This)->lpVtbl -> put_BypassList(This,value) ) + +#define IWebProxy_get_BypassProxyOnLocal(This,retval) \ + ( (This)->lpVtbl -> get_BypassProxyOnLocal(This,retval) ) + +#define IWebProxy_put_BypassProxyOnLocal(This,value) \ + ( (This)->lpVtbl -> put_BypassProxyOnLocal(This,value) ) + +#define IWebProxy_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IWebProxy_get_UserName(This,retval) \ + ( (This)->lpVtbl -> get_UserName(This,retval) ) + +#define IWebProxy_put_UserName(This,value) \ + ( (This)->lpVtbl -> put_UserName(This,value) ) + +#define IWebProxy_SetPassword(This,value) \ + ( (This)->lpVtbl -> SetPassword(This,value) ) + +#define IWebProxy_PromptForCredentials(This,parentWindow,title) \ + ( (This)->lpVtbl -> PromptForCredentials(This,parentWindow,title) ) + +#define IWebProxy_PromptForCredentialsFromHwnd(This,parentWindow,title) \ + ( (This)->lpVtbl -> PromptForCredentialsFromHwnd(This,parentWindow,title) ) + +#define IWebProxy_get_AutoDetect(This,retval) \ + ( (This)->lpVtbl -> get_AutoDetect(This,retval) ) + +#define IWebProxy_put_AutoDetect(This,value) \ + ( (This)->lpVtbl -> put_AutoDetect(This,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWebProxy_INTERFACE_DEFINED__ */ + + +#ifndef __ISystemInformation_INTERFACE_DEFINED__ +#define __ISystemInformation_INTERFACE_DEFINED__ + +/* interface ISystemInformation */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ISystemInformation; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ade87bf7-7b56-4275-8fab-b9b0e591844b") + ISystemInformation : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_OemHardwareSupportLink( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootRequired( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISystemInformationVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ISystemInformation * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ISystemInformation * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ISystemInformation * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in ISystemInformation * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in ISystemInformation * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in ISystemInformation * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ISystemInformation * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_OemHardwareSupportLink )( + __RPC__in ISystemInformation * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in ISystemInformation * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } ISystemInformationVtbl; + + interface ISystemInformation + { + CONST_VTBL struct ISystemInformationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISystemInformation_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISystemInformation_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISystemInformation_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISystemInformation_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ISystemInformation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ISystemInformation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ISystemInformation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define ISystemInformation_get_OemHardwareSupportLink(This,retval) \ + ( (This)->lpVtbl -> get_OemHardwareSupportLink(This,retval) ) + +#define ISystemInformation_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISystemInformation_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsUpdateAgentInfo_INTERFACE_DEFINED__ +#define __IWindowsUpdateAgentInfo_INTERFACE_DEFINED__ + +/* interface IWindowsUpdateAgentInfo */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsUpdateAgentInfo; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("85713fa1-7796-4fa2-be3b-e2d6124dd373") + IWindowsUpdateAgentInfo : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetInfo( + /* [in] */ VARIANT varInfoIdentifier, + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsUpdateAgentInfoVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsUpdateAgentInfo * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsUpdateAgentInfo * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsUpdateAgentInfo * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsUpdateAgentInfo * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsUpdateAgentInfo * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsUpdateAgentInfo * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsUpdateAgentInfo * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetInfo )( + __RPC__in IWindowsUpdateAgentInfo * This, + /* [in] */ VARIANT varInfoIdentifier, + /* [retval][out] */ __RPC__out VARIANT *retval); + + END_INTERFACE + } IWindowsUpdateAgentInfoVtbl; + + interface IWindowsUpdateAgentInfo + { + CONST_VTBL struct IWindowsUpdateAgentInfoVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsUpdateAgentInfo_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsUpdateAgentInfo_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsUpdateAgentInfo_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsUpdateAgentInfo_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsUpdateAgentInfo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsUpdateAgentInfo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsUpdateAgentInfo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsUpdateAgentInfo_GetInfo(This,varInfoIdentifier,retval) \ + ( (This)->lpVtbl -> GetInfo(This,varInfoIdentifier,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsUpdateAgentInfo_INTERFACE_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesResults_INTERFACE_DEFINED__ +#define __IAutomaticUpdatesResults_INTERFACE_DEFINED__ + +/* interface IAutomaticUpdatesResults */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IAutomaticUpdatesResults; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E7A4D634-7942-4DD9-A111-82228BA33901") + IAutomaticUpdatesResults : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_LastSearchSuccessDate( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_LastInstallationSuccessDate( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAutomaticUpdatesResultsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IAutomaticUpdatesResults * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IAutomaticUpdatesResults * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IAutomaticUpdatesResults * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IAutomaticUpdatesResults * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IAutomaticUpdatesResults * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IAutomaticUpdatesResults * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAutomaticUpdatesResults * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastSearchSuccessDate )( + __RPC__in IAutomaticUpdatesResults * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastInstallationSuccessDate )( + __RPC__in IAutomaticUpdatesResults * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + END_INTERFACE + } IAutomaticUpdatesResultsVtbl; + + interface IAutomaticUpdatesResults + { + CONST_VTBL struct IAutomaticUpdatesResultsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAutomaticUpdatesResults_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IAutomaticUpdatesResults_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IAutomaticUpdatesResults_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IAutomaticUpdatesResults_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IAutomaticUpdatesResults_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IAutomaticUpdatesResults_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IAutomaticUpdatesResults_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IAutomaticUpdatesResults_get_LastSearchSuccessDate(This,retval) \ + ( (This)->lpVtbl -> get_LastSearchSuccessDate(This,retval) ) + +#define IAutomaticUpdatesResults_get_LastInstallationSuccessDate(This,retval) \ + ( (This)->lpVtbl -> get_LastInstallationSuccessDate(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAutomaticUpdatesResults_INTERFACE_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings_INTERFACE_DEFINED__ +#define __IAutomaticUpdatesSettings_INTERFACE_DEFINED__ + +/* interface IAutomaticUpdatesSettings */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IAutomaticUpdatesSettings; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2ee48f22-af3c-405f-8970-f71be12ee9a2") + IAutomaticUpdatesSettings : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_NotificationLevel( + /* [retval][out] */ __RPC__out AutomaticUpdatesNotificationLevel *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_NotificationLevel( + /* [in] */ AutomaticUpdatesNotificationLevel value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ReadOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Required( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ScheduledInstallationDay( + /* [retval][out] */ __RPC__out AutomaticUpdatesScheduledInstallationDay *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ScheduledInstallationDay( + /* [in] */ AutomaticUpdatesScheduledInstallationDay value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ScheduledInstallationTime( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ScheduledInstallationTime( + /* [in] */ LONG value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Refresh( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Save( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAutomaticUpdatesSettingsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IAutomaticUpdatesSettings * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IAutomaticUpdatesSettings * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAutomaticUpdatesSettings * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotificationLevel )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [retval][out] */ __RPC__out AutomaticUpdatesNotificationLevel *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotificationLevel )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [in] */ AutomaticUpdatesNotificationLevel value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Required )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScheduledInstallationDay )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [retval][out] */ __RPC__out AutomaticUpdatesScheduledInstallationDay *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScheduledInstallationDay )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [in] */ AutomaticUpdatesScheduledInstallationDay value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScheduledInstallationTime )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScheduledInstallationTime )( + __RPC__in IAutomaticUpdatesSettings * This, + /* [in] */ LONG value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refresh )( + __RPC__in IAutomaticUpdatesSettings * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Save )( + __RPC__in IAutomaticUpdatesSettings * This); + + END_INTERFACE + } IAutomaticUpdatesSettingsVtbl; + + interface IAutomaticUpdatesSettings + { + CONST_VTBL struct IAutomaticUpdatesSettingsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAutomaticUpdatesSettings_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IAutomaticUpdatesSettings_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IAutomaticUpdatesSettings_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IAutomaticUpdatesSettings_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IAutomaticUpdatesSettings_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IAutomaticUpdatesSettings_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IAutomaticUpdatesSettings_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IAutomaticUpdatesSettings_get_NotificationLevel(This,retval) \ + ( (This)->lpVtbl -> get_NotificationLevel(This,retval) ) + +#define IAutomaticUpdatesSettings_put_NotificationLevel(This,value) \ + ( (This)->lpVtbl -> put_NotificationLevel(This,value) ) + +#define IAutomaticUpdatesSettings_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IAutomaticUpdatesSettings_get_Required(This,retval) \ + ( (This)->lpVtbl -> get_Required(This,retval) ) + +#define IAutomaticUpdatesSettings_get_ScheduledInstallationDay(This,retval) \ + ( (This)->lpVtbl -> get_ScheduledInstallationDay(This,retval) ) + +#define IAutomaticUpdatesSettings_put_ScheduledInstallationDay(This,value) \ + ( (This)->lpVtbl -> put_ScheduledInstallationDay(This,value) ) + +#define IAutomaticUpdatesSettings_get_ScheduledInstallationTime(This,retval) \ + ( (This)->lpVtbl -> get_ScheduledInstallationTime(This,retval) ) + +#define IAutomaticUpdatesSettings_put_ScheduledInstallationTime(This,value) \ + ( (This)->lpVtbl -> put_ScheduledInstallationTime(This,value) ) + +#define IAutomaticUpdatesSettings_Refresh(This) \ + ( (This)->lpVtbl -> Refresh(This) ) + +#define IAutomaticUpdatesSettings_Save(This) \ + ( (This)->lpVtbl -> Save(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAutomaticUpdatesSettings_INTERFACE_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings2_INTERFACE_DEFINED__ +#define __IAutomaticUpdatesSettings2_INTERFACE_DEFINED__ + +/* interface IAutomaticUpdatesSettings2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IAutomaticUpdatesSettings2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6abc136a-c3ca-4384-8171-cb2b1e59b8dc") + IAutomaticUpdatesSettings2 : public IAutomaticUpdatesSettings + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IncludeRecommendedUpdates( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_IncludeRecommendedUpdates( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CheckPermission( + /* [in] */ AutomaticUpdatesUserType userType, + /* [in] */ AutomaticUpdatesPermissionType permissionType, + /* [retval][out] */ __RPC__out VARIANT_BOOL *userHasPermission) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAutomaticUpdatesSettings2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IAutomaticUpdatesSettings2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IAutomaticUpdatesSettings2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAutomaticUpdatesSettings2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotificationLevel )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [retval][out] */ __RPC__out AutomaticUpdatesNotificationLevel *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotificationLevel )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ AutomaticUpdatesNotificationLevel value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Required )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScheduledInstallationDay )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [retval][out] */ __RPC__out AutomaticUpdatesScheduledInstallationDay *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScheduledInstallationDay )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ AutomaticUpdatesScheduledInstallationDay value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScheduledInstallationTime )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScheduledInstallationTime )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ LONG value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refresh )( + __RPC__in IAutomaticUpdatesSettings2 * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Save )( + __RPC__in IAutomaticUpdatesSettings2 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IncludeRecommendedUpdates )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IncludeRecommendedUpdates )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CheckPermission )( + __RPC__in IAutomaticUpdatesSettings2 * This, + /* [in] */ AutomaticUpdatesUserType userType, + /* [in] */ AutomaticUpdatesPermissionType permissionType, + /* [retval][out] */ __RPC__out VARIANT_BOOL *userHasPermission); + + END_INTERFACE + } IAutomaticUpdatesSettings2Vtbl; + + interface IAutomaticUpdatesSettings2 + { + CONST_VTBL struct IAutomaticUpdatesSettings2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAutomaticUpdatesSettings2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IAutomaticUpdatesSettings2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IAutomaticUpdatesSettings2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IAutomaticUpdatesSettings2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IAutomaticUpdatesSettings2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IAutomaticUpdatesSettings2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IAutomaticUpdatesSettings2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IAutomaticUpdatesSettings2_get_NotificationLevel(This,retval) \ + ( (This)->lpVtbl -> get_NotificationLevel(This,retval) ) + +#define IAutomaticUpdatesSettings2_put_NotificationLevel(This,value) \ + ( (This)->lpVtbl -> put_NotificationLevel(This,value) ) + +#define IAutomaticUpdatesSettings2_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IAutomaticUpdatesSettings2_get_Required(This,retval) \ + ( (This)->lpVtbl -> get_Required(This,retval) ) + +#define IAutomaticUpdatesSettings2_get_ScheduledInstallationDay(This,retval) \ + ( (This)->lpVtbl -> get_ScheduledInstallationDay(This,retval) ) + +#define IAutomaticUpdatesSettings2_put_ScheduledInstallationDay(This,value) \ + ( (This)->lpVtbl -> put_ScheduledInstallationDay(This,value) ) + +#define IAutomaticUpdatesSettings2_get_ScheduledInstallationTime(This,retval) \ + ( (This)->lpVtbl -> get_ScheduledInstallationTime(This,retval) ) + +#define IAutomaticUpdatesSettings2_put_ScheduledInstallationTime(This,value) \ + ( (This)->lpVtbl -> put_ScheduledInstallationTime(This,value) ) + +#define IAutomaticUpdatesSettings2_Refresh(This) \ + ( (This)->lpVtbl -> Refresh(This) ) + +#define IAutomaticUpdatesSettings2_Save(This) \ + ( (This)->lpVtbl -> Save(This) ) + + +#define IAutomaticUpdatesSettings2_get_IncludeRecommendedUpdates(This,retval) \ + ( (This)->lpVtbl -> get_IncludeRecommendedUpdates(This,retval) ) + +#define IAutomaticUpdatesSettings2_put_IncludeRecommendedUpdates(This,value) \ + ( (This)->lpVtbl -> put_IncludeRecommendedUpdates(This,value) ) + +#define IAutomaticUpdatesSettings2_CheckPermission(This,userType,permissionType,userHasPermission) \ + ( (This)->lpVtbl -> CheckPermission(This,userType,permissionType,userHasPermission) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAutomaticUpdatesSettings2_INTERFACE_DEFINED__ */ + + +#ifndef __IAutomaticUpdatesSettings3_INTERFACE_DEFINED__ +#define __IAutomaticUpdatesSettings3_INTERFACE_DEFINED__ + +/* interface IAutomaticUpdatesSettings3 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IAutomaticUpdatesSettings3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("b587f5c3-f57e-485f-bbf5-0d181c5cd0dc") + IAutomaticUpdatesSettings3 : public IAutomaticUpdatesSettings2 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_NonAdministratorsElevated( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_NonAdministratorsElevated( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_FeaturedUpdatesEnabled( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_FeaturedUpdatesEnabled( + /* [in] */ VARIANT_BOOL value) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAutomaticUpdatesSettings3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IAutomaticUpdatesSettings3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IAutomaticUpdatesSettings3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAutomaticUpdatesSettings3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NotificationLevel )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out AutomaticUpdatesNotificationLevel *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NotificationLevel )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ AutomaticUpdatesNotificationLevel value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Required )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScheduledInstallationDay )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out AutomaticUpdatesScheduledInstallationDay *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScheduledInstallationDay )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ AutomaticUpdatesScheduledInstallationDay value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ScheduledInstallationTime )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ScheduledInstallationTime )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ LONG value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Refresh )( + __RPC__in IAutomaticUpdatesSettings3 * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Save )( + __RPC__in IAutomaticUpdatesSettings3 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IncludeRecommendedUpdates )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IncludeRecommendedUpdates )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CheckPermission )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ AutomaticUpdatesUserType userType, + /* [in] */ AutomaticUpdatesPermissionType permissionType, + /* [retval][out] */ __RPC__out VARIANT_BOOL *userHasPermission); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_NonAdministratorsElevated )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_NonAdministratorsElevated )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_FeaturedUpdatesEnabled )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_FeaturedUpdatesEnabled )( + __RPC__in IAutomaticUpdatesSettings3 * This, + /* [in] */ VARIANT_BOOL value); + + END_INTERFACE + } IAutomaticUpdatesSettings3Vtbl; + + interface IAutomaticUpdatesSettings3 + { + CONST_VTBL struct IAutomaticUpdatesSettings3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAutomaticUpdatesSettings3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IAutomaticUpdatesSettings3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IAutomaticUpdatesSettings3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IAutomaticUpdatesSettings3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IAutomaticUpdatesSettings3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IAutomaticUpdatesSettings3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IAutomaticUpdatesSettings3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IAutomaticUpdatesSettings3_get_NotificationLevel(This,retval) \ + ( (This)->lpVtbl -> get_NotificationLevel(This,retval) ) + +#define IAutomaticUpdatesSettings3_put_NotificationLevel(This,value) \ + ( (This)->lpVtbl -> put_NotificationLevel(This,value) ) + +#define IAutomaticUpdatesSettings3_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IAutomaticUpdatesSettings3_get_Required(This,retval) \ + ( (This)->lpVtbl -> get_Required(This,retval) ) + +#define IAutomaticUpdatesSettings3_get_ScheduledInstallationDay(This,retval) \ + ( (This)->lpVtbl -> get_ScheduledInstallationDay(This,retval) ) + +#define IAutomaticUpdatesSettings3_put_ScheduledInstallationDay(This,value) \ + ( (This)->lpVtbl -> put_ScheduledInstallationDay(This,value) ) + +#define IAutomaticUpdatesSettings3_get_ScheduledInstallationTime(This,retval) \ + ( (This)->lpVtbl -> get_ScheduledInstallationTime(This,retval) ) + +#define IAutomaticUpdatesSettings3_put_ScheduledInstallationTime(This,value) \ + ( (This)->lpVtbl -> put_ScheduledInstallationTime(This,value) ) + +#define IAutomaticUpdatesSettings3_Refresh(This) \ + ( (This)->lpVtbl -> Refresh(This) ) + +#define IAutomaticUpdatesSettings3_Save(This) \ + ( (This)->lpVtbl -> Save(This) ) + + +#define IAutomaticUpdatesSettings3_get_IncludeRecommendedUpdates(This,retval) \ + ( (This)->lpVtbl -> get_IncludeRecommendedUpdates(This,retval) ) + +#define IAutomaticUpdatesSettings3_put_IncludeRecommendedUpdates(This,value) \ + ( (This)->lpVtbl -> put_IncludeRecommendedUpdates(This,value) ) + +#define IAutomaticUpdatesSettings3_CheckPermission(This,userType,permissionType,userHasPermission) \ + ( (This)->lpVtbl -> CheckPermission(This,userType,permissionType,userHasPermission) ) + + +#define IAutomaticUpdatesSettings3_get_NonAdministratorsElevated(This,retval) \ + ( (This)->lpVtbl -> get_NonAdministratorsElevated(This,retval) ) + +#define IAutomaticUpdatesSettings3_put_NonAdministratorsElevated(This,value) \ + ( (This)->lpVtbl -> put_NonAdministratorsElevated(This,value) ) + +#define IAutomaticUpdatesSettings3_get_FeaturedUpdatesEnabled(This,retval) \ + ( (This)->lpVtbl -> get_FeaturedUpdatesEnabled(This,retval) ) + +#define IAutomaticUpdatesSettings3_put_FeaturedUpdatesEnabled(This,value) \ + ( (This)->lpVtbl -> put_FeaturedUpdatesEnabled(This,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAutomaticUpdatesSettings3_INTERFACE_DEFINED__ */ + + +#ifndef __IAutomaticUpdates_INTERFACE_DEFINED__ +#define __IAutomaticUpdates_INTERFACE_DEFINED__ + +/* interface IAutomaticUpdates */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IAutomaticUpdates; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("673425bf-c082-4c7c-bdfd-569464b8e0ce") + IAutomaticUpdates : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE DetectNow( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Pause( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Resume( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ShowSettingsDialog( void) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Settings( + /* [retval][out] */ __RPC__deref_out_opt IAutomaticUpdatesSettings **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServiceEnabled( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnableService( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAutomaticUpdatesVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IAutomaticUpdates * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IAutomaticUpdates * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IAutomaticUpdates * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IAutomaticUpdates * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IAutomaticUpdates * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IAutomaticUpdates * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAutomaticUpdates * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DetectNow )( + __RPC__in IAutomaticUpdates * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Pause )( + __RPC__in IAutomaticUpdates * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Resume )( + __RPC__in IAutomaticUpdates * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ShowSettingsDialog )( + __RPC__in IAutomaticUpdates * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Settings )( + __RPC__in IAutomaticUpdates * This, + /* [retval][out] */ __RPC__deref_out_opt IAutomaticUpdatesSettings **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceEnabled )( + __RPC__in IAutomaticUpdates * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnableService )( + __RPC__in IAutomaticUpdates * This); + + END_INTERFACE + } IAutomaticUpdatesVtbl; + + interface IAutomaticUpdates + { + CONST_VTBL struct IAutomaticUpdatesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAutomaticUpdates_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IAutomaticUpdates_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IAutomaticUpdates_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IAutomaticUpdates_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IAutomaticUpdates_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IAutomaticUpdates_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IAutomaticUpdates_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IAutomaticUpdates_DetectNow(This) \ + ( (This)->lpVtbl -> DetectNow(This) ) + +#define IAutomaticUpdates_Pause(This) \ + ( (This)->lpVtbl -> Pause(This) ) + +#define IAutomaticUpdates_Resume(This) \ + ( (This)->lpVtbl -> Resume(This) ) + +#define IAutomaticUpdates_ShowSettingsDialog(This) \ + ( (This)->lpVtbl -> ShowSettingsDialog(This) ) + +#define IAutomaticUpdates_get_Settings(This,retval) \ + ( (This)->lpVtbl -> get_Settings(This,retval) ) + +#define IAutomaticUpdates_get_ServiceEnabled(This,retval) \ + ( (This)->lpVtbl -> get_ServiceEnabled(This,retval) ) + +#define IAutomaticUpdates_EnableService(This) \ + ( (This)->lpVtbl -> EnableService(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAutomaticUpdates_INTERFACE_DEFINED__ */ + + +#ifndef __IAutomaticUpdates2_INTERFACE_DEFINED__ +#define __IAutomaticUpdates2_INTERFACE_DEFINED__ + +/* interface IAutomaticUpdates2 */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IAutomaticUpdates2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4A2F5C31-CFD9-410E-B7FB-29A653973A0F") + IAutomaticUpdates2 : public IAutomaticUpdates + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Results( + /* [retval][out] */ __RPC__deref_out_opt IAutomaticUpdatesResults **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IAutomaticUpdates2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IAutomaticUpdates2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IAutomaticUpdates2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IAutomaticUpdates2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IAutomaticUpdates2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IAutomaticUpdates2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IAutomaticUpdates2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IAutomaticUpdates2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *DetectNow )( + __RPC__in IAutomaticUpdates2 * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Pause )( + __RPC__in IAutomaticUpdates2 * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Resume )( + __RPC__in IAutomaticUpdates2 * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ShowSettingsDialog )( + __RPC__in IAutomaticUpdates2 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Settings )( + __RPC__in IAutomaticUpdates2 * This, + /* [retval][out] */ __RPC__deref_out_opt IAutomaticUpdatesSettings **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceEnabled )( + __RPC__in IAutomaticUpdates2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnableService )( + __RPC__in IAutomaticUpdates2 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Results )( + __RPC__in IAutomaticUpdates2 * This, + /* [retval][out] */ __RPC__deref_out_opt IAutomaticUpdatesResults **retval); + + END_INTERFACE + } IAutomaticUpdates2Vtbl; + + interface IAutomaticUpdates2 + { + CONST_VTBL struct IAutomaticUpdates2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IAutomaticUpdates2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IAutomaticUpdates2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IAutomaticUpdates2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IAutomaticUpdates2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IAutomaticUpdates2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IAutomaticUpdates2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IAutomaticUpdates2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IAutomaticUpdates2_DetectNow(This) \ + ( (This)->lpVtbl -> DetectNow(This) ) + +#define IAutomaticUpdates2_Pause(This) \ + ( (This)->lpVtbl -> Pause(This) ) + +#define IAutomaticUpdates2_Resume(This) \ + ( (This)->lpVtbl -> Resume(This) ) + +#define IAutomaticUpdates2_ShowSettingsDialog(This) \ + ( (This)->lpVtbl -> ShowSettingsDialog(This) ) + +#define IAutomaticUpdates2_get_Settings(This,retval) \ + ( (This)->lpVtbl -> get_Settings(This,retval) ) + +#define IAutomaticUpdates2_get_ServiceEnabled(This,retval) \ + ( (This)->lpVtbl -> get_ServiceEnabled(This,retval) ) + +#define IAutomaticUpdates2_EnableService(This) \ + ( (This)->lpVtbl -> EnableService(This) ) + + +#define IAutomaticUpdates2_get_Results(This,retval) \ + ( (This)->lpVtbl -> get_Results(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IAutomaticUpdates2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateIdentity_INTERFACE_DEFINED__ +#define __IUpdateIdentity_INTERFACE_DEFINED__ + +/* interface IUpdateIdentity */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateIdentity; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("46297823-9940-4c09-aed9-cd3ea6d05968") + IUpdateIdentity : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RevisionNumber( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UpdateID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateIdentityVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateIdentity * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateIdentity * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateIdentity * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateIdentity * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateIdentity * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateIdentity * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateIdentity * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RevisionNumber )( + __RPC__in IUpdateIdentity * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UpdateID )( + __RPC__in IUpdateIdentity * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + END_INTERFACE + } IUpdateIdentityVtbl; + + interface IUpdateIdentity + { + CONST_VTBL struct IUpdateIdentityVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateIdentity_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateIdentity_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateIdentity_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateIdentity_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateIdentity_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateIdentity_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateIdentity_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateIdentity_get_RevisionNumber(This,retval) \ + ( (This)->lpVtbl -> get_RevisionNumber(This,retval) ) + +#define IUpdateIdentity_get_UpdateID(This,retval) \ + ( (This)->lpVtbl -> get_UpdateID(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateIdentity_INTERFACE_DEFINED__ */ + + +#ifndef __IImageInformation_INTERFACE_DEFINED__ +#define __IImageInformation_INTERFACE_DEFINED__ + +/* interface IImageInformation */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IImageInformation; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7c907864-346c-4aeb-8f3f-57da289f969f") + IImageInformation : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AltText( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Height( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Source( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Width( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IImageInformationVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IImageInformation * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IImageInformation * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IImageInformation * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IImageInformation * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IImageInformation * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IImageInformation * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IImageInformation * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AltText )( + __RPC__in IImageInformation * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Height )( + __RPC__in IImageInformation * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Source )( + __RPC__in IImageInformation * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Width )( + __RPC__in IImageInformation * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IImageInformationVtbl; + + interface IImageInformation + { + CONST_VTBL struct IImageInformationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IImageInformation_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IImageInformation_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IImageInformation_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IImageInformation_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IImageInformation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IImageInformation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IImageInformation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IImageInformation_get_AltText(This,retval) \ + ( (This)->lpVtbl -> get_AltText(This,retval) ) + +#define IImageInformation_get_Height(This,retval) \ + ( (This)->lpVtbl -> get_Height(This,retval) ) + +#define IImageInformation_get_Source(This,retval) \ + ( (This)->lpVtbl -> get_Source(This,retval) ) + +#define IImageInformation_get_Width(This,retval) \ + ( (This)->lpVtbl -> get_Width(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IImageInformation_INTERFACE_DEFINED__ */ + + +#ifndef __ICategory_INTERFACE_DEFINED__ +#define __ICategory_INTERFACE_DEFINED__ + +/* interface ICategory */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ICategory; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("81ddc1b8-9d35-47a6-b471-5b80f519223b") + ICategory : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Name( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CategoryID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Children( + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Description( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Image( + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Order( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Parent( + /* [retval][out] */ __RPC__deref_out_opt ICategory **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Type( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Updates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICategoryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ICategory * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ICategory * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ICategory * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in ICategory * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in ICategory * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in ICategory * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ICategory * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CategoryID )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Children )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Order )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Parent )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt ICategory **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in ICategory * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + END_INTERFACE + } ICategoryVtbl; + + interface ICategory + { + CONST_VTBL struct ICategoryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICategory_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICategory_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICategory_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICategory_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ICategory_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ICategory_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ICategory_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define ICategory_get_Name(This,retval) \ + ( (This)->lpVtbl -> get_Name(This,retval) ) + +#define ICategory_get_CategoryID(This,retval) \ + ( (This)->lpVtbl -> get_CategoryID(This,retval) ) + +#define ICategory_get_Children(This,retval) \ + ( (This)->lpVtbl -> get_Children(This,retval) ) + +#define ICategory_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define ICategory_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define ICategory_get_Order(This,retval) \ + ( (This)->lpVtbl -> get_Order(This,retval) ) + +#define ICategory_get_Parent(This,retval) \ + ( (This)->lpVtbl -> get_Parent(This,retval) ) + +#define ICategory_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define ICategory_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICategory_INTERFACE_DEFINED__ */ + + +#ifndef __ICategoryCollection_INTERFACE_DEFINED__ +#define __ICategoryCollection_INTERFACE_DEFINED__ + +/* interface ICategoryCollection */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ICategoryCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3a56bfb8-576c-43f7-9335-fe4838fd7e37") + ICategoryCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt ICategory **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct ICategoryCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ICategoryCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ICategoryCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ICategoryCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in ICategoryCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in ICategoryCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in ICategoryCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ICategoryCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in ICategoryCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt ICategory **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in ICategoryCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in ICategoryCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } ICategoryCollectionVtbl; + + interface ICategoryCollection + { + CONST_VTBL struct ICategoryCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ICategoryCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ICategoryCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ICategoryCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ICategoryCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ICategoryCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ICategoryCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ICategoryCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define ICategoryCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define ICategoryCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define ICategoryCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ICategoryCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationBehavior_INTERFACE_DEFINED__ +#define __IInstallationBehavior_INTERFACE_DEFINED__ + +/* interface IInstallationBehavior */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationBehavior; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d9a59339-e245-4dbd-9686-4d5763e39624") + IInstallationBehavior : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CanRequestUserInput( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Impact( + /* [retval][out] */ __RPC__out InstallationImpact *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootBehavior( + /* [retval][out] */ __RPC__out InstallationRebootBehavior *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RequiresNetworkConnectivity( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationBehaviorVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationBehavior * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationBehavior * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationBehavior * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationBehavior * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationBehavior * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationBehavior * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationBehavior * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequestUserInput )( + __RPC__in IInstallationBehavior * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Impact )( + __RPC__in IInstallationBehavior * This, + /* [retval][out] */ __RPC__out InstallationImpact *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootBehavior )( + __RPC__in IInstallationBehavior * This, + /* [retval][out] */ __RPC__out InstallationRebootBehavior *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RequiresNetworkConnectivity )( + __RPC__in IInstallationBehavior * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IInstallationBehaviorVtbl; + + interface IInstallationBehavior + { + CONST_VTBL struct IInstallationBehaviorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationBehavior_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationBehavior_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationBehavior_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationBehavior_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationBehavior_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationBehavior_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationBehavior_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInstallationBehavior_get_CanRequestUserInput(This,retval) \ + ( (This)->lpVtbl -> get_CanRequestUserInput(This,retval) ) + +#define IInstallationBehavior_get_Impact(This,retval) \ + ( (This)->lpVtbl -> get_Impact(This,retval) ) + +#define IInstallationBehavior_get_RebootBehavior(This,retval) \ + ( (This)->lpVtbl -> get_RebootBehavior(This,retval) ) + +#define IInstallationBehavior_get_RequiresNetworkConnectivity(This,retval) \ + ( (This)->lpVtbl -> get_RequiresNetworkConnectivity(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationBehavior_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateDownloadContent_INTERFACE_DEFINED__ +#define __IUpdateDownloadContent_INTERFACE_DEFINED__ + +/* interface IUpdateDownloadContent */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateDownloadContent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("54a2cb2d-9a0c-48b6-8a50-9abb69ee2d02") + IUpdateDownloadContent : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DownloadUrl( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateDownloadContentVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateDownloadContent * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateDownloadContent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateDownloadContent * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateDownloadContent * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateDownloadContent * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateDownloadContent * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateDownloadContent * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadUrl )( + __RPC__in IUpdateDownloadContent * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + END_INTERFACE + } IUpdateDownloadContentVtbl; + + interface IUpdateDownloadContent + { + CONST_VTBL struct IUpdateDownloadContentVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateDownloadContent_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateDownloadContent_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateDownloadContent_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateDownloadContent_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateDownloadContent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateDownloadContent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateDownloadContent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateDownloadContent_get_DownloadUrl(This,retval) \ + ( (This)->lpVtbl -> get_DownloadUrl(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateDownloadContent_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateDownloadContent2_INTERFACE_DEFINED__ +#define __IUpdateDownloadContent2_INTERFACE_DEFINED__ + +/* interface IUpdateDownloadContent2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateDownloadContent2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c97ad11b-f257-420b-9d9f-377f733f6f68") + IUpdateDownloadContent2 : public IUpdateDownloadContent + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsDeltaCompressedContent( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateDownloadContent2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateDownloadContent2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateDownloadContent2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateDownloadContent2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateDownloadContent2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateDownloadContent2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateDownloadContent2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateDownloadContent2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadUrl )( + __RPC__in IUpdateDownloadContent2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDeltaCompressedContent )( + __RPC__in IUpdateDownloadContent2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IUpdateDownloadContent2Vtbl; + + interface IUpdateDownloadContent2 + { + CONST_VTBL struct IUpdateDownloadContent2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateDownloadContent2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateDownloadContent2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateDownloadContent2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateDownloadContent2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateDownloadContent2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateDownloadContent2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateDownloadContent2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateDownloadContent2_get_DownloadUrl(This,retval) \ + ( (This)->lpVtbl -> get_DownloadUrl(This,retval) ) + + +#define IUpdateDownloadContent2_get_IsDeltaCompressedContent(This,retval) \ + ( (This)->lpVtbl -> get_IsDeltaCompressedContent(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateDownloadContent2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateDownloadContentCollection_INTERFACE_DEFINED__ +#define __IUpdateDownloadContentCollection_INTERFACE_DEFINED__ + +/* interface IUpdateDownloadContentCollection */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateDownloadContentCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("bc5513c8-b3b8-4bf7-a4d4-361c0d8c88ba") + IUpdateDownloadContentCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContent **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateDownloadContentCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateDownloadContentCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateDownloadContentCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateDownloadContentCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContent **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IUpdateDownloadContentCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IUpdateDownloadContentCollectionVtbl; + + interface IUpdateDownloadContentCollection + { + CONST_VTBL struct IUpdateDownloadContentCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateDownloadContentCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateDownloadContentCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateDownloadContentCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateDownloadContentCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateDownloadContentCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateDownloadContentCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateDownloadContentCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateDownloadContentCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IUpdateDownloadContentCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IUpdateDownloadContentCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateDownloadContentCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdate_INTERFACE_DEFINED__ +#define __IUpdate_INTERFACE_DEFINED__ + +/* interface IUpdate */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdate; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6a92b07a-d821-4682-b423-5c805022cc4d") + IUpdate : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Title( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoSelectOnWebSites( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BundledUpdates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CanRequireSource( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Categories( + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Deadline( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeltaCompressedContentAvailable( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeltaCompressedContentPreferred( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Description( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_EulaAccepted( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_EulaText( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HandlerID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Identity( + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Image( + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_InstallationBehavior( + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsBeta( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsDownloaded( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsHidden( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_IsHidden( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsInstalled( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsMandatory( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsUninstallable( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Languages( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_LastDeploymentChangeTime( + /* [retval][out] */ __RPC__out DATE *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MaxDownloadSize( + /* [retval][out] */ __RPC__out DECIMAL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MinDownloadSize( + /* [retval][out] */ __RPC__out DECIMAL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MoreInfoUrls( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_MsrcSeverity( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RecommendedCpuSpeed( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RecommendedHardDiskSpace( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RecommendedMemory( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ReleaseNotes( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_SecurityBulletinIDs( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_SupersededUpdateIDs( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_SupportUrl( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Type( + /* [retval][out] */ __RPC__out UpdateType *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UninstallationNotes( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UninstallationBehavior( + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UninstallationSteps( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_KBArticleIDs( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AcceptEula( void) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeploymentAction( + /* [retval][out] */ __RPC__out DeploymentAction *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CopyFromCache( + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DownloadPriority( + /* [retval][out] */ __RPC__out DownloadPriority *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DownloadContents( + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdate * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdate * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdate * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdate * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdate * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdate * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdate * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IUpdate * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IUpdate * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IUpdate * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + END_INTERFACE + } IUpdateVtbl; + + interface IUpdate + { + CONST_VTBL struct IUpdateVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdate_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdate_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdate_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdate_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdate_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdate_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IUpdate_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IUpdate_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IUpdate_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IUpdate_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IUpdate_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IUpdate_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IUpdate_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdate_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IUpdate_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IUpdate_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IUpdate_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IUpdate_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IUpdate_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IUpdate_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IUpdate_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IUpdate_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IUpdate_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IUpdate_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IUpdate_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IUpdate_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IUpdate_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IUpdate_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IUpdate_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IUpdate_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IUpdate_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IUpdate_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IUpdate_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IUpdate_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IUpdate_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IUpdate_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IUpdate_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IUpdate_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IUpdate_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IUpdate_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IUpdate_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdate_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IUpdate_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdate_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IUpdate_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IUpdate_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IUpdate_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IUpdate_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IUpdate_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdate_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdate_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdate */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdate; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("b383cd1a-5ce9-4504-9f63-764b1236f191") + IWindowsDriverUpdate : public IUpdate + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverClass( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverHardwareID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverManufacturer( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverModel( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverProvider( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverVerDate( + /* [retval][out] */ __RPC__out DATE *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeviceProblemNumber( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeviceStatus( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdateVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdate * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdate * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdate * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdate * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdate * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdate * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdate * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IWindowsDriverUpdate * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IWindowsDriverUpdate * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IWindowsDriverUpdate * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverClass )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverHardwareID )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverManufacturer )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverModel )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverProvider )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverVerDate )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceProblemNumber )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceStatus )( + __RPC__in IWindowsDriverUpdate * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IWindowsDriverUpdateVtbl; + + interface IWindowsDriverUpdate + { + CONST_VTBL struct IWindowsDriverUpdateVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdate_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdate_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdate_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdate_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdate_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdate_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdate_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdate_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IWindowsDriverUpdate_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IWindowsDriverUpdate_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IWindowsDriverUpdate_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IWindowsDriverUpdate_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IWindowsDriverUpdate_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IWindowsDriverUpdate_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IWindowsDriverUpdate_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IWindowsDriverUpdate_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IWindowsDriverUpdate_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IWindowsDriverUpdate_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IWindowsDriverUpdate_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IWindowsDriverUpdate_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IWindowsDriverUpdate_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IWindowsDriverUpdate_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IWindowsDriverUpdate_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IWindowsDriverUpdate_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IWindowsDriverUpdate_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IWindowsDriverUpdate_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IWindowsDriverUpdate_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IWindowsDriverUpdate_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IWindowsDriverUpdate_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IWindowsDriverUpdate_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IWindowsDriverUpdate_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IWindowsDriverUpdate_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IWindowsDriverUpdate_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IWindowsDriverUpdate_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IWindowsDriverUpdate_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IWindowsDriverUpdate_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IWindowsDriverUpdate_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IWindowsDriverUpdate_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IWindowsDriverUpdate_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IWindowsDriverUpdate_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IWindowsDriverUpdate_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IWindowsDriverUpdate_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IWindowsDriverUpdate_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IWindowsDriverUpdate_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IWindowsDriverUpdate_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IWindowsDriverUpdate_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IWindowsDriverUpdate_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IWindowsDriverUpdate_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IWindowsDriverUpdate_get_DriverClass(This,retval) \ + ( (This)->lpVtbl -> get_DriverClass(This,retval) ) + +#define IWindowsDriverUpdate_get_DriverHardwareID(This,retval) \ + ( (This)->lpVtbl -> get_DriverHardwareID(This,retval) ) + +#define IWindowsDriverUpdate_get_DriverManufacturer(This,retval) \ + ( (This)->lpVtbl -> get_DriverManufacturer(This,retval) ) + +#define IWindowsDriverUpdate_get_DriverModel(This,retval) \ + ( (This)->lpVtbl -> get_DriverModel(This,retval) ) + +#define IWindowsDriverUpdate_get_DriverProvider(This,retval) \ + ( (This)->lpVtbl -> get_DriverProvider(This,retval) ) + +#define IWindowsDriverUpdate_get_DriverVerDate(This,retval) \ + ( (This)->lpVtbl -> get_DriverVerDate(This,retval) ) + +#define IWindowsDriverUpdate_get_DeviceProblemNumber(This,retval) \ + ( (This)->lpVtbl -> get_DeviceProblemNumber(This,retval) ) + +#define IWindowsDriverUpdate_get_DeviceStatus(This,retval) \ + ( (This)->lpVtbl -> get_DeviceStatus(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdate_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdate2_INTERFACE_DEFINED__ +#define __IUpdate2_INTERFACE_DEFINED__ + +/* interface IUpdate2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdate2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("144fe9b0-d23d-4a8b-8634-fb4457533b7a") + IUpdate2 : public IUpdate + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootRequired( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsPresent( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CveIDs( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CopyToCache( + /* [in] */ __RPC__in_opt IStringCollection *pFiles) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdate2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdate2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdate2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdate2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdate2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdate2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdate2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdate2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IUpdate2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IUpdate2 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IUpdate2 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IUpdate2 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + END_INTERFACE + } IUpdate2Vtbl; + + interface IUpdate2 + { + CONST_VTBL struct IUpdate2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdate2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdate2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdate2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdate2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdate2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdate2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdate2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdate2_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdate2_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IUpdate2_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IUpdate2_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IUpdate2_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IUpdate2_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IUpdate2_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IUpdate2_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IUpdate2_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdate2_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IUpdate2_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IUpdate2_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IUpdate2_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IUpdate2_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IUpdate2_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IUpdate2_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IUpdate2_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IUpdate2_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IUpdate2_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IUpdate2_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IUpdate2_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IUpdate2_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IUpdate2_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IUpdate2_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IUpdate2_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IUpdate2_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IUpdate2_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IUpdate2_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IUpdate2_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IUpdate2_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IUpdate2_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IUpdate2_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IUpdate2_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IUpdate2_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IUpdate2_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IUpdate2_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IUpdate2_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdate2_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IUpdate2_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdate2_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IUpdate2_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IUpdate2_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IUpdate2_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IUpdate2_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IUpdate2_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IUpdate2_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IUpdate2_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IUpdate2_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IUpdate2_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdate2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdate3_INTERFACE_DEFINED__ +#define __IUpdate3_INTERFACE_DEFINED__ + +/* interface IUpdate3 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdate3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("112EDA6B-95B3-476F-9D90-AEE82C6B8181") + IUpdate3 : public IUpdate2 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BrowseOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdate3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdate3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdate3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdate3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdate3 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdate3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdate3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdate3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IUpdate3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IUpdate3 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IUpdate3 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IUpdate3 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BrowseOnly )( + __RPC__in IUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IUpdate3Vtbl; + + interface IUpdate3 + { + CONST_VTBL struct IUpdate3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdate3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdate3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdate3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdate3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdate3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdate3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdate3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdate3_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdate3_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IUpdate3_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IUpdate3_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IUpdate3_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IUpdate3_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IUpdate3_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IUpdate3_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IUpdate3_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdate3_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IUpdate3_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IUpdate3_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IUpdate3_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IUpdate3_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IUpdate3_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IUpdate3_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IUpdate3_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IUpdate3_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IUpdate3_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IUpdate3_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IUpdate3_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IUpdate3_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IUpdate3_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IUpdate3_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IUpdate3_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IUpdate3_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IUpdate3_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IUpdate3_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IUpdate3_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IUpdate3_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IUpdate3_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IUpdate3_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IUpdate3_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IUpdate3_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IUpdate3_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IUpdate3_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IUpdate3_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdate3_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IUpdate3_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdate3_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IUpdate3_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IUpdate3_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IUpdate3_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IUpdate3_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IUpdate3_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IUpdate3_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IUpdate3_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IUpdate3_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IUpdate3_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + + +#define IUpdate3_get_BrowseOnly(This,retval) \ + ( (This)->lpVtbl -> get_BrowseOnly(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdate3_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdate4_INTERFACE_DEFINED__ +#define __IUpdate4_INTERFACE_DEFINED__ + +/* interface IUpdate4 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdate4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("27e94b0d-5139-49a2-9a61-93522dc54652") + IUpdate4 : public IUpdate3 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_PerUser( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdate4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdate4 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdate4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdate4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdate4 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdate4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdate4 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdate4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IUpdate4 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IUpdate4 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IUpdate4 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IUpdate4 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BrowseOnly )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerUser )( + __RPC__in IUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IUpdate4Vtbl; + + interface IUpdate4 + { + CONST_VTBL struct IUpdate4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdate4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdate4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdate4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdate4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdate4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdate4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdate4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdate4_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdate4_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IUpdate4_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IUpdate4_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IUpdate4_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IUpdate4_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IUpdate4_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IUpdate4_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IUpdate4_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdate4_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IUpdate4_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IUpdate4_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IUpdate4_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IUpdate4_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IUpdate4_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IUpdate4_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IUpdate4_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IUpdate4_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IUpdate4_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IUpdate4_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IUpdate4_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IUpdate4_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IUpdate4_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IUpdate4_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IUpdate4_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IUpdate4_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IUpdate4_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IUpdate4_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IUpdate4_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IUpdate4_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IUpdate4_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IUpdate4_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IUpdate4_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IUpdate4_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IUpdate4_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IUpdate4_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IUpdate4_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdate4_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IUpdate4_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdate4_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IUpdate4_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IUpdate4_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IUpdate4_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IUpdate4_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IUpdate4_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IUpdate4_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IUpdate4_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IUpdate4_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IUpdate4_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + + +#define IUpdate4_get_BrowseOnly(This,retval) \ + ( (This)->lpVtbl -> get_BrowseOnly(This,retval) ) + + +#define IUpdate4_get_PerUser(This,retval) \ + ( (This)->lpVtbl -> get_PerUser(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdate4_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdate5_INTERFACE_DEFINED__ +#define __IUpdate5_INTERFACE_DEFINED__ + +/* interface IUpdate5 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdate5; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C1C2F21A-D2F4-4902-B5C6-8A081C19A890") + IUpdate5 : public IUpdate4 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoSelection( + /* [retval][out] */ __RPC__out AutoSelectionMode *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoDownload( + /* [retval][out] */ __RPC__out AutoDownloadMode *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdate5Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdate5 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdate5 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdate5 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdate5 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdate5 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdate5 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdate5 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IUpdate5 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IUpdate5 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IUpdate5 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IUpdate5 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BrowseOnly )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerUser )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelection )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out AutoSelectionMode *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoDownload )( + __RPC__in IUpdate5 * This, + /* [retval][out] */ __RPC__out AutoDownloadMode *retval); + + END_INTERFACE + } IUpdate5Vtbl; + + interface IUpdate5 + { + CONST_VTBL struct IUpdate5Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdate5_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdate5_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdate5_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdate5_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdate5_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdate5_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdate5_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdate5_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdate5_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IUpdate5_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IUpdate5_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IUpdate5_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IUpdate5_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IUpdate5_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IUpdate5_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IUpdate5_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdate5_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IUpdate5_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IUpdate5_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IUpdate5_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IUpdate5_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IUpdate5_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IUpdate5_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IUpdate5_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IUpdate5_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IUpdate5_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IUpdate5_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IUpdate5_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IUpdate5_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IUpdate5_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IUpdate5_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IUpdate5_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IUpdate5_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IUpdate5_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IUpdate5_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IUpdate5_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IUpdate5_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IUpdate5_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IUpdate5_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IUpdate5_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IUpdate5_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IUpdate5_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IUpdate5_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IUpdate5_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdate5_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IUpdate5_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdate5_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IUpdate5_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IUpdate5_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IUpdate5_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IUpdate5_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IUpdate5_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IUpdate5_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IUpdate5_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IUpdate5_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IUpdate5_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + + +#define IUpdate5_get_BrowseOnly(This,retval) \ + ( (This)->lpVtbl -> get_BrowseOnly(This,retval) ) + + +#define IUpdate5_get_PerUser(This,retval) \ + ( (This)->lpVtbl -> get_PerUser(This,retval) ) + + +#define IUpdate5_get_AutoSelection(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelection(This,retval) ) + +#define IUpdate5_get_AutoDownload(This,retval) \ + ( (This)->lpVtbl -> get_AutoDownload(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdate5_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate2_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdate2_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdate2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdate2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("615c4269-7a48-43bd-96b7-bf6ca27d6c3e") + IWindowsDriverUpdate2 : public IWindowsDriverUpdate + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootRequired( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsPresent( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CveIDs( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CopyToCache( + /* [in] */ __RPC__in_opt IStringCollection *pFiles) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdate2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdate2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdate2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdate2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IWindowsDriverUpdate2 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverClass )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverHardwareID )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverManufacturer )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverModel )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverProvider )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverVerDate )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceProblemNumber )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceStatus )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IWindowsDriverUpdate2 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + END_INTERFACE + } IWindowsDriverUpdate2Vtbl; + + interface IWindowsDriverUpdate2 + { + CONST_VTBL struct IWindowsDriverUpdate2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdate2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdate2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdate2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdate2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdate2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdate2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdate2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdate2_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IWindowsDriverUpdate2_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IWindowsDriverUpdate2_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IWindowsDriverUpdate2_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IWindowsDriverUpdate2_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IWindowsDriverUpdate2_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IWindowsDriverUpdate2_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IWindowsDriverUpdate2_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IWindowsDriverUpdate2_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IWindowsDriverUpdate2_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IWindowsDriverUpdate2_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IWindowsDriverUpdate2_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IWindowsDriverUpdate2_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IWindowsDriverUpdate2_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IWindowsDriverUpdate2_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate2_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IWindowsDriverUpdate2_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IWindowsDriverUpdate2_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IWindowsDriverUpdate2_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IWindowsDriverUpdate2_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IWindowsDriverUpdate2_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IWindowsDriverUpdate2_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IWindowsDriverUpdate2_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IWindowsDriverUpdate2_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IWindowsDriverUpdate2_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate2_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate2_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IWindowsDriverUpdate2_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IWindowsDriverUpdate2_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IWindowsDriverUpdate2_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IWindowsDriverUpdate2_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IWindowsDriverUpdate2_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IWindowsDriverUpdate2_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IWindowsDriverUpdate2_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IWindowsDriverUpdate2_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IWindowsDriverUpdate2_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IWindowsDriverUpdate2_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IWindowsDriverUpdate2_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate2_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IWindowsDriverUpdate2_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IWindowsDriverUpdate2_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IWindowsDriverUpdate2_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IWindowsDriverUpdate2_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IWindowsDriverUpdate2_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IWindowsDriverUpdate2_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IWindowsDriverUpdate2_get_DriverClass(This,retval) \ + ( (This)->lpVtbl -> get_DriverClass(This,retval) ) + +#define IWindowsDriverUpdate2_get_DriverHardwareID(This,retval) \ + ( (This)->lpVtbl -> get_DriverHardwareID(This,retval) ) + +#define IWindowsDriverUpdate2_get_DriverManufacturer(This,retval) \ + ( (This)->lpVtbl -> get_DriverManufacturer(This,retval) ) + +#define IWindowsDriverUpdate2_get_DriverModel(This,retval) \ + ( (This)->lpVtbl -> get_DriverModel(This,retval) ) + +#define IWindowsDriverUpdate2_get_DriverProvider(This,retval) \ + ( (This)->lpVtbl -> get_DriverProvider(This,retval) ) + +#define IWindowsDriverUpdate2_get_DriverVerDate(This,retval) \ + ( (This)->lpVtbl -> get_DriverVerDate(This,retval) ) + +#define IWindowsDriverUpdate2_get_DeviceProblemNumber(This,retval) \ + ( (This)->lpVtbl -> get_DeviceProblemNumber(This,retval) ) + +#define IWindowsDriverUpdate2_get_DeviceStatus(This,retval) \ + ( (This)->lpVtbl -> get_DeviceStatus(This,retval) ) + + +#define IWindowsDriverUpdate2_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IWindowsDriverUpdate2_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IWindowsDriverUpdate2_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IWindowsDriverUpdate2_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdate2_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate3_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdate3_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdate3 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdate3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("49EBD502-4A96-41BD-9E3E-4C5057F4250C") + IWindowsDriverUpdate3 : public IWindowsDriverUpdate2 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_BrowseOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdate3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdate3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdate3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdate3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IWindowsDriverUpdate3 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverClass )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverHardwareID )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverManufacturer )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverModel )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverProvider )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverVerDate )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceProblemNumber )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceStatus )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BrowseOnly )( + __RPC__in IWindowsDriverUpdate3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IWindowsDriverUpdate3Vtbl; + + interface IWindowsDriverUpdate3 + { + CONST_VTBL struct IWindowsDriverUpdate3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdate3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdate3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdate3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdate3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdate3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdate3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdate3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdate3_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IWindowsDriverUpdate3_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IWindowsDriverUpdate3_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IWindowsDriverUpdate3_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IWindowsDriverUpdate3_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IWindowsDriverUpdate3_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IWindowsDriverUpdate3_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IWindowsDriverUpdate3_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IWindowsDriverUpdate3_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IWindowsDriverUpdate3_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IWindowsDriverUpdate3_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IWindowsDriverUpdate3_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IWindowsDriverUpdate3_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IWindowsDriverUpdate3_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IWindowsDriverUpdate3_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate3_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IWindowsDriverUpdate3_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IWindowsDriverUpdate3_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IWindowsDriverUpdate3_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IWindowsDriverUpdate3_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IWindowsDriverUpdate3_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IWindowsDriverUpdate3_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IWindowsDriverUpdate3_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IWindowsDriverUpdate3_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IWindowsDriverUpdate3_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate3_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate3_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IWindowsDriverUpdate3_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IWindowsDriverUpdate3_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IWindowsDriverUpdate3_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IWindowsDriverUpdate3_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IWindowsDriverUpdate3_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IWindowsDriverUpdate3_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IWindowsDriverUpdate3_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IWindowsDriverUpdate3_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IWindowsDriverUpdate3_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IWindowsDriverUpdate3_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IWindowsDriverUpdate3_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate3_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IWindowsDriverUpdate3_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IWindowsDriverUpdate3_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IWindowsDriverUpdate3_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IWindowsDriverUpdate3_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IWindowsDriverUpdate3_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IWindowsDriverUpdate3_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IWindowsDriverUpdate3_get_DriverClass(This,retval) \ + ( (This)->lpVtbl -> get_DriverClass(This,retval) ) + +#define IWindowsDriverUpdate3_get_DriverHardwareID(This,retval) \ + ( (This)->lpVtbl -> get_DriverHardwareID(This,retval) ) + +#define IWindowsDriverUpdate3_get_DriverManufacturer(This,retval) \ + ( (This)->lpVtbl -> get_DriverManufacturer(This,retval) ) + +#define IWindowsDriverUpdate3_get_DriverModel(This,retval) \ + ( (This)->lpVtbl -> get_DriverModel(This,retval) ) + +#define IWindowsDriverUpdate3_get_DriverProvider(This,retval) \ + ( (This)->lpVtbl -> get_DriverProvider(This,retval) ) + +#define IWindowsDriverUpdate3_get_DriverVerDate(This,retval) \ + ( (This)->lpVtbl -> get_DriverVerDate(This,retval) ) + +#define IWindowsDriverUpdate3_get_DeviceProblemNumber(This,retval) \ + ( (This)->lpVtbl -> get_DeviceProblemNumber(This,retval) ) + +#define IWindowsDriverUpdate3_get_DeviceStatus(This,retval) \ + ( (This)->lpVtbl -> get_DeviceStatus(This,retval) ) + + +#define IWindowsDriverUpdate3_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IWindowsDriverUpdate3_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IWindowsDriverUpdate3_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IWindowsDriverUpdate3_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + + +#define IWindowsDriverUpdate3_get_BrowseOnly(This,retval) \ + ( (This)->lpVtbl -> get_BrowseOnly(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdate3_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdateEntry_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdateEntry_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdateEntry */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdateEntry; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ED8BFE40-A60B-42ea-9652-817DFCFA23EC") + IWindowsDriverUpdateEntry : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverClass( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverHardwareID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverManufacturer( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverModel( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverProvider( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DriverVerDate( + /* [retval][out] */ __RPC__out DATE *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeviceProblemNumber( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_DeviceStatus( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdateEntryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdateEntry * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdateEntry * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdateEntry * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverClass )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverHardwareID )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverManufacturer )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverModel )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverProvider )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverVerDate )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceProblemNumber )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceStatus )( + __RPC__in IWindowsDriverUpdateEntry * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IWindowsDriverUpdateEntryVtbl; + + interface IWindowsDriverUpdateEntry + { + CONST_VTBL struct IWindowsDriverUpdateEntryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdateEntry_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdateEntry_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdateEntry_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdateEntry_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdateEntry_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdateEntry_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdateEntry_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdateEntry_get_DriverClass(This,retval) \ + ( (This)->lpVtbl -> get_DriverClass(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DriverHardwareID(This,retval) \ + ( (This)->lpVtbl -> get_DriverHardwareID(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DriverManufacturer(This,retval) \ + ( (This)->lpVtbl -> get_DriverManufacturer(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DriverModel(This,retval) \ + ( (This)->lpVtbl -> get_DriverModel(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DriverProvider(This,retval) \ + ( (This)->lpVtbl -> get_DriverProvider(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DriverVerDate(This,retval) \ + ( (This)->lpVtbl -> get_DriverVerDate(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DeviceProblemNumber(This,retval) \ + ( (This)->lpVtbl -> get_DeviceProblemNumber(This,retval) ) + +#define IWindowsDriverUpdateEntry_get_DeviceStatus(This,retval) \ + ( (This)->lpVtbl -> get_DeviceStatus(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdateEntry_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdateEntryCollection_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdateEntryCollection_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdateEntryCollection */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdateEntryCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0D521700-A372-4bef-828B-3D00C10ADEBD") + IWindowsDriverUpdateEntryCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IWindowsDriverUpdateEntry **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdateEntryCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdateEntryCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdateEntryCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdateEntryCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IWindowsDriverUpdateEntry **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IWindowsDriverUpdateEntryCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IWindowsDriverUpdateEntryCollectionVtbl; + + interface IWindowsDriverUpdateEntryCollection + { + CONST_VTBL struct IWindowsDriverUpdateEntryCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdateEntryCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdateEntryCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdateEntryCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdateEntryCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdateEntryCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdateEntryCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdateEntryCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdateEntryCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IWindowsDriverUpdateEntryCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IWindowsDriverUpdateEntryCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdateEntryCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate4_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdate4_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdate4 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdate4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("004C6A2B-0C19-4c69-9F5C-A269B2560DB9") + IWindowsDriverUpdate4 : public IWindowsDriverUpdate3 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_WindowsDriverUpdateEntries( + /* [retval][out] */ __RPC__deref_out_opt IWindowsDriverUpdateEntryCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_PerUser( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdate4Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdate4 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdate4 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdate4 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IWindowsDriverUpdate4 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverClass )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverHardwareID )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverManufacturer )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverModel )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverProvider )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverVerDate )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceProblemNumber )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceStatus )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BrowseOnly )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WindowsDriverUpdateEntries )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__deref_out_opt IWindowsDriverUpdateEntryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerUser )( + __RPC__in IWindowsDriverUpdate4 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IWindowsDriverUpdate4Vtbl; + + interface IWindowsDriverUpdate4 + { + CONST_VTBL struct IWindowsDriverUpdate4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdate4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdate4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdate4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdate4_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdate4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdate4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdate4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdate4_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IWindowsDriverUpdate4_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IWindowsDriverUpdate4_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IWindowsDriverUpdate4_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IWindowsDriverUpdate4_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IWindowsDriverUpdate4_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IWindowsDriverUpdate4_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IWindowsDriverUpdate4_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IWindowsDriverUpdate4_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IWindowsDriverUpdate4_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IWindowsDriverUpdate4_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IWindowsDriverUpdate4_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IWindowsDriverUpdate4_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IWindowsDriverUpdate4_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IWindowsDriverUpdate4_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate4_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IWindowsDriverUpdate4_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IWindowsDriverUpdate4_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IWindowsDriverUpdate4_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IWindowsDriverUpdate4_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IWindowsDriverUpdate4_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IWindowsDriverUpdate4_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IWindowsDriverUpdate4_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IWindowsDriverUpdate4_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IWindowsDriverUpdate4_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate4_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate4_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IWindowsDriverUpdate4_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IWindowsDriverUpdate4_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IWindowsDriverUpdate4_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IWindowsDriverUpdate4_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IWindowsDriverUpdate4_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IWindowsDriverUpdate4_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IWindowsDriverUpdate4_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IWindowsDriverUpdate4_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IWindowsDriverUpdate4_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IWindowsDriverUpdate4_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IWindowsDriverUpdate4_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate4_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IWindowsDriverUpdate4_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IWindowsDriverUpdate4_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IWindowsDriverUpdate4_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IWindowsDriverUpdate4_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IWindowsDriverUpdate4_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IWindowsDriverUpdate4_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IWindowsDriverUpdate4_get_DriverClass(This,retval) \ + ( (This)->lpVtbl -> get_DriverClass(This,retval) ) + +#define IWindowsDriverUpdate4_get_DriverHardwareID(This,retval) \ + ( (This)->lpVtbl -> get_DriverHardwareID(This,retval) ) + +#define IWindowsDriverUpdate4_get_DriverManufacturer(This,retval) \ + ( (This)->lpVtbl -> get_DriverManufacturer(This,retval) ) + +#define IWindowsDriverUpdate4_get_DriverModel(This,retval) \ + ( (This)->lpVtbl -> get_DriverModel(This,retval) ) + +#define IWindowsDriverUpdate4_get_DriverProvider(This,retval) \ + ( (This)->lpVtbl -> get_DriverProvider(This,retval) ) + +#define IWindowsDriverUpdate4_get_DriverVerDate(This,retval) \ + ( (This)->lpVtbl -> get_DriverVerDate(This,retval) ) + +#define IWindowsDriverUpdate4_get_DeviceProblemNumber(This,retval) \ + ( (This)->lpVtbl -> get_DeviceProblemNumber(This,retval) ) + +#define IWindowsDriverUpdate4_get_DeviceStatus(This,retval) \ + ( (This)->lpVtbl -> get_DeviceStatus(This,retval) ) + + +#define IWindowsDriverUpdate4_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IWindowsDriverUpdate4_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IWindowsDriverUpdate4_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IWindowsDriverUpdate4_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + + +#define IWindowsDriverUpdate4_get_BrowseOnly(This,retval) \ + ( (This)->lpVtbl -> get_BrowseOnly(This,retval) ) + + +#define IWindowsDriverUpdate4_get_WindowsDriverUpdateEntries(This,retval) \ + ( (This)->lpVtbl -> get_WindowsDriverUpdateEntries(This,retval) ) + +#define IWindowsDriverUpdate4_get_PerUser(This,retval) \ + ( (This)->lpVtbl -> get_PerUser(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdate4_INTERFACE_DEFINED__ */ + + +#ifndef __IWindowsDriverUpdate5_INTERFACE_DEFINED__ +#define __IWindowsDriverUpdate5_INTERFACE_DEFINED__ + +/* interface IWindowsDriverUpdate5 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IWindowsDriverUpdate5; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("70CF5C82-8642-42bb-9DBC-0CFD263C6C4F") + IWindowsDriverUpdate5 : public IWindowsDriverUpdate4 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoSelection( + /* [retval][out] */ __RPC__out AutoSelectionMode *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AutoDownload( + /* [retval][out] */ __RPC__out AutoDownloadMode *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IWindowsDriverUpdate5Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IWindowsDriverUpdate5 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IWindowsDriverUpdate5 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IWindowsDriverUpdate5 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelectOnWebSites )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BundledUpdates )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRequireSource )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Deadline )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentAvailable )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeltaCompressedContentPreferred )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaAccepted )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_EulaText )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HandlerID )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Identity )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Image )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IImageInformation **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_InstallationBehavior )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBeta )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDownloaded )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsHidden )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsHidden )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsInstalled )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsMandatory )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsUninstallable )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Languages )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_LastDeploymentChangeTime )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MaxDownloadSize )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MinDownloadSize )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MoreInfoUrls )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_MsrcSeverity )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedCpuSpeed )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedHardDiskSpace )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RecommendedMemory )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReleaseNotes )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SecurityBulletinIDs )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupersededUpdateIDs )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Type )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out UpdateType *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationBehavior )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationBehavior **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_KBArticleIDs )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AcceptEula )( + __RPC__in IWindowsDriverUpdate5 * This); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeploymentAction )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out DeploymentAction *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyFromCache )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [ref][in] */ __RPC__in BSTR path, + /* [in] */ VARIANT_BOOL toExtractCabFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadPriority )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DownloadContents )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadContentCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverClass )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverHardwareID )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverManufacturer )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverModel )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverProvider )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DriverVerDate )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceProblemNumber )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_DeviceStatus )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPresent )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CveIDs )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CopyToCache )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [in] */ __RPC__in_opt IStringCollection *pFiles); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_BrowseOnly )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WindowsDriverUpdateEntries )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__deref_out_opt IWindowsDriverUpdateEntryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PerUser )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoSelection )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out AutoSelectionMode *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AutoDownload )( + __RPC__in IWindowsDriverUpdate5 * This, + /* [retval][out] */ __RPC__out AutoDownloadMode *retval); + + END_INTERFACE + } IWindowsDriverUpdate5Vtbl; + + interface IWindowsDriverUpdate5 + { + CONST_VTBL struct IWindowsDriverUpdate5Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IWindowsDriverUpdate5_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IWindowsDriverUpdate5_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IWindowsDriverUpdate5_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IWindowsDriverUpdate5_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IWindowsDriverUpdate5_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IWindowsDriverUpdate5_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IWindowsDriverUpdate5_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IWindowsDriverUpdate5_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IWindowsDriverUpdate5_get_AutoSelectOnWebSites(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelectOnWebSites(This,retval) ) + +#define IWindowsDriverUpdate5_get_BundledUpdates(This,retval) \ + ( (This)->lpVtbl -> get_BundledUpdates(This,retval) ) + +#define IWindowsDriverUpdate5_get_CanRequireSource(This,retval) \ + ( (This)->lpVtbl -> get_CanRequireSource(This,retval) ) + +#define IWindowsDriverUpdate5_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#define IWindowsDriverUpdate5_get_Deadline(This,retval) \ + ( (This)->lpVtbl -> get_Deadline(This,retval) ) + +#define IWindowsDriverUpdate5_get_DeltaCompressedContentAvailable(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentAvailable(This,retval) ) + +#define IWindowsDriverUpdate5_get_DeltaCompressedContentPreferred(This,retval) \ + ( (This)->lpVtbl -> get_DeltaCompressedContentPreferred(This,retval) ) + +#define IWindowsDriverUpdate5_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IWindowsDriverUpdate5_get_EulaAccepted(This,retval) \ + ( (This)->lpVtbl -> get_EulaAccepted(This,retval) ) + +#define IWindowsDriverUpdate5_get_EulaText(This,retval) \ + ( (This)->lpVtbl -> get_EulaText(This,retval) ) + +#define IWindowsDriverUpdate5_get_HandlerID(This,retval) \ + ( (This)->lpVtbl -> get_HandlerID(This,retval) ) + +#define IWindowsDriverUpdate5_get_Identity(This,retval) \ + ( (This)->lpVtbl -> get_Identity(This,retval) ) + +#define IWindowsDriverUpdate5_get_Image(This,retval) \ + ( (This)->lpVtbl -> get_Image(This,retval) ) + +#define IWindowsDriverUpdate5_get_InstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_InstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate5_get_IsBeta(This,retval) \ + ( (This)->lpVtbl -> get_IsBeta(This,retval) ) + +#define IWindowsDriverUpdate5_get_IsDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_IsDownloaded(This,retval) ) + +#define IWindowsDriverUpdate5_get_IsHidden(This,retval) \ + ( (This)->lpVtbl -> get_IsHidden(This,retval) ) + +#define IWindowsDriverUpdate5_put_IsHidden(This,value) \ + ( (This)->lpVtbl -> put_IsHidden(This,value) ) + +#define IWindowsDriverUpdate5_get_IsInstalled(This,retval) \ + ( (This)->lpVtbl -> get_IsInstalled(This,retval) ) + +#define IWindowsDriverUpdate5_get_IsMandatory(This,retval) \ + ( (This)->lpVtbl -> get_IsMandatory(This,retval) ) + +#define IWindowsDriverUpdate5_get_IsUninstallable(This,retval) \ + ( (This)->lpVtbl -> get_IsUninstallable(This,retval) ) + +#define IWindowsDriverUpdate5_get_Languages(This,retval) \ + ( (This)->lpVtbl -> get_Languages(This,retval) ) + +#define IWindowsDriverUpdate5_get_LastDeploymentChangeTime(This,retval) \ + ( (This)->lpVtbl -> get_LastDeploymentChangeTime(This,retval) ) + +#define IWindowsDriverUpdate5_get_MaxDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MaxDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate5_get_MinDownloadSize(This,retval) \ + ( (This)->lpVtbl -> get_MinDownloadSize(This,retval) ) + +#define IWindowsDriverUpdate5_get_MoreInfoUrls(This,retval) \ + ( (This)->lpVtbl -> get_MoreInfoUrls(This,retval) ) + +#define IWindowsDriverUpdate5_get_MsrcSeverity(This,retval) \ + ( (This)->lpVtbl -> get_MsrcSeverity(This,retval) ) + +#define IWindowsDriverUpdate5_get_RecommendedCpuSpeed(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedCpuSpeed(This,retval) ) + +#define IWindowsDriverUpdate5_get_RecommendedHardDiskSpace(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedHardDiskSpace(This,retval) ) + +#define IWindowsDriverUpdate5_get_RecommendedMemory(This,retval) \ + ( (This)->lpVtbl -> get_RecommendedMemory(This,retval) ) + +#define IWindowsDriverUpdate5_get_ReleaseNotes(This,retval) \ + ( (This)->lpVtbl -> get_ReleaseNotes(This,retval) ) + +#define IWindowsDriverUpdate5_get_SecurityBulletinIDs(This,retval) \ + ( (This)->lpVtbl -> get_SecurityBulletinIDs(This,retval) ) + +#define IWindowsDriverUpdate5_get_SupersededUpdateIDs(This,retval) \ + ( (This)->lpVtbl -> get_SupersededUpdateIDs(This,retval) ) + +#define IWindowsDriverUpdate5_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#define IWindowsDriverUpdate5_get_Type(This,retval) \ + ( (This)->lpVtbl -> get_Type(This,retval) ) + +#define IWindowsDriverUpdate5_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IWindowsDriverUpdate5_get_UninstallationBehavior(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationBehavior(This,retval) ) + +#define IWindowsDriverUpdate5_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IWindowsDriverUpdate5_get_KBArticleIDs(This,retval) \ + ( (This)->lpVtbl -> get_KBArticleIDs(This,retval) ) + +#define IWindowsDriverUpdate5_AcceptEula(This) \ + ( (This)->lpVtbl -> AcceptEula(This) ) + +#define IWindowsDriverUpdate5_get_DeploymentAction(This,retval) \ + ( (This)->lpVtbl -> get_DeploymentAction(This,retval) ) + +#define IWindowsDriverUpdate5_CopyFromCache(This,path,toExtractCabFiles) \ + ( (This)->lpVtbl -> CopyFromCache(This,path,toExtractCabFiles) ) + +#define IWindowsDriverUpdate5_get_DownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_DownloadPriority(This,retval) ) + +#define IWindowsDriverUpdate5_get_DownloadContents(This,retval) \ + ( (This)->lpVtbl -> get_DownloadContents(This,retval) ) + + +#define IWindowsDriverUpdate5_get_DriverClass(This,retval) \ + ( (This)->lpVtbl -> get_DriverClass(This,retval) ) + +#define IWindowsDriverUpdate5_get_DriverHardwareID(This,retval) \ + ( (This)->lpVtbl -> get_DriverHardwareID(This,retval) ) + +#define IWindowsDriverUpdate5_get_DriverManufacturer(This,retval) \ + ( (This)->lpVtbl -> get_DriverManufacturer(This,retval) ) + +#define IWindowsDriverUpdate5_get_DriverModel(This,retval) \ + ( (This)->lpVtbl -> get_DriverModel(This,retval) ) + +#define IWindowsDriverUpdate5_get_DriverProvider(This,retval) \ + ( (This)->lpVtbl -> get_DriverProvider(This,retval) ) + +#define IWindowsDriverUpdate5_get_DriverVerDate(This,retval) \ + ( (This)->lpVtbl -> get_DriverVerDate(This,retval) ) + +#define IWindowsDriverUpdate5_get_DeviceProblemNumber(This,retval) \ + ( (This)->lpVtbl -> get_DeviceProblemNumber(This,retval) ) + +#define IWindowsDriverUpdate5_get_DeviceStatus(This,retval) \ + ( (This)->lpVtbl -> get_DeviceStatus(This,retval) ) + + +#define IWindowsDriverUpdate5_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IWindowsDriverUpdate5_get_IsPresent(This,retval) \ + ( (This)->lpVtbl -> get_IsPresent(This,retval) ) + +#define IWindowsDriverUpdate5_get_CveIDs(This,retval) \ + ( (This)->lpVtbl -> get_CveIDs(This,retval) ) + +#define IWindowsDriverUpdate5_CopyToCache(This,pFiles) \ + ( (This)->lpVtbl -> CopyToCache(This,pFiles) ) + + +#define IWindowsDriverUpdate5_get_BrowseOnly(This,retval) \ + ( (This)->lpVtbl -> get_BrowseOnly(This,retval) ) + + +#define IWindowsDriverUpdate5_get_WindowsDriverUpdateEntries(This,retval) \ + ( (This)->lpVtbl -> get_WindowsDriverUpdateEntries(This,retval) ) + +#define IWindowsDriverUpdate5_get_PerUser(This,retval) \ + ( (This)->lpVtbl -> get_PerUser(This,retval) ) + + +#define IWindowsDriverUpdate5_get_AutoSelection(This,retval) \ + ( (This)->lpVtbl -> get_AutoSelection(This,retval) ) + +#define IWindowsDriverUpdate5_get_AutoDownload(This,retval) \ + ( (This)->lpVtbl -> get_AutoDownload(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IWindowsDriverUpdate5_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateCollection_INTERFACE_DEFINED__ +#define __IUpdateCollection_INTERFACE_DEFINED__ + +/* interface IUpdateCollection */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("07f7438c-7709-4ca5-b518-91279288134e") + IUpdateCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdate **retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Item( + /* [in] */ LONG index, + /* [in] */ __RPC__in_opt IUpdate *value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ReadOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Add( + /* [in] */ __RPC__in_opt IUpdate *value, + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Clear( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Copy( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Insert( + /* [in] */ LONG index, + /* [in] */ __RPC__in_opt IUpdate *value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RemoveAt( + /* [in] */ LONG index) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IUpdateCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdate **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Item )( + __RPC__in IUpdateCollection * This, + /* [in] */ LONG index, + /* [in] */ __RPC__in_opt IUpdate *value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IUpdateCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IUpdateCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IUpdateCollection * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Add )( + __RPC__in IUpdateCollection * This, + /* [in] */ __RPC__in_opt IUpdate *value, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Clear )( + __RPC__in IUpdateCollection * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Copy )( + __RPC__in IUpdateCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Insert )( + __RPC__in IUpdateCollection * This, + /* [in] */ LONG index, + /* [in] */ __RPC__in_opt IUpdate *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RemoveAt )( + __RPC__in IUpdateCollection * This, + /* [in] */ LONG index); + + END_INTERFACE + } IUpdateCollectionVtbl; + + interface IUpdateCollection + { + CONST_VTBL struct IUpdateCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IUpdateCollection_put_Item(This,index,value) \ + ( (This)->lpVtbl -> put_Item(This,index,value) ) + +#define IUpdateCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IUpdateCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#define IUpdateCollection_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IUpdateCollection_Add(This,value,retval) \ + ( (This)->lpVtbl -> Add(This,value,retval) ) + +#define IUpdateCollection_Clear(This) \ + ( (This)->lpVtbl -> Clear(This) ) + +#define IUpdateCollection_Copy(This,retval) \ + ( (This)->lpVtbl -> Copy(This,retval) ) + +#define IUpdateCollection_Insert(This,index,value) \ + ( (This)->lpVtbl -> Insert(This,index,value) ) + +#define IUpdateCollection_RemoveAt(This,index) \ + ( (This)->lpVtbl -> RemoveAt(This,index) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateException_INTERFACE_DEFINED__ +#define __IUpdateException_INTERFACE_DEFINED__ + +/* interface IUpdateException */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateException; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a376dd5e-09d4-427f-af7c-fed5b6e1c1d6") + IUpdateException : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Message( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HResult( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Context( + /* [retval][out] */ __RPC__out UpdateExceptionContext *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateExceptionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateException * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateException * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateException * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateException * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateException * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateException * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateException * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Message )( + __RPC__in IUpdateException * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IUpdateException * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Context )( + __RPC__in IUpdateException * This, + /* [retval][out] */ __RPC__out UpdateExceptionContext *retval); + + END_INTERFACE + } IUpdateExceptionVtbl; + + interface IUpdateException + { + CONST_VTBL struct IUpdateExceptionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateException_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateException_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateException_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateException_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateException_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateException_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateException_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateException_get_Message(This,retval) \ + ( (This)->lpVtbl -> get_Message(This,retval) ) + +#define IUpdateException_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IUpdateException_get_Context(This,retval) \ + ( (This)->lpVtbl -> get_Context(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateException_INTERFACE_DEFINED__ */ + + +#ifndef __IInvalidProductLicenseException_INTERFACE_DEFINED__ +#define __IInvalidProductLicenseException_INTERFACE_DEFINED__ + +/* interface IInvalidProductLicenseException */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInvalidProductLicenseException; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a37d00f5-7bb0-4953-b414-f9e98326f2e8") + IInvalidProductLicenseException : public IUpdateException + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Product( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInvalidProductLicenseExceptionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInvalidProductLicenseException * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInvalidProductLicenseException * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInvalidProductLicenseException * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInvalidProductLicenseException * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInvalidProductLicenseException * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInvalidProductLicenseException * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInvalidProductLicenseException * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Message )( + __RPC__in IInvalidProductLicenseException * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IInvalidProductLicenseException * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Context )( + __RPC__in IInvalidProductLicenseException * This, + /* [retval][out] */ __RPC__out UpdateExceptionContext *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Product )( + __RPC__in IInvalidProductLicenseException * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + END_INTERFACE + } IInvalidProductLicenseExceptionVtbl; + + interface IInvalidProductLicenseException + { + CONST_VTBL struct IInvalidProductLicenseExceptionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInvalidProductLicenseException_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInvalidProductLicenseException_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInvalidProductLicenseException_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInvalidProductLicenseException_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInvalidProductLicenseException_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInvalidProductLicenseException_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInvalidProductLicenseException_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInvalidProductLicenseException_get_Message(This,retval) \ + ( (This)->lpVtbl -> get_Message(This,retval) ) + +#define IInvalidProductLicenseException_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IInvalidProductLicenseException_get_Context(This,retval) \ + ( (This)->lpVtbl -> get_Context(This,retval) ) + + +#define IInvalidProductLicenseException_get_Product(This,retval) \ + ( (This)->lpVtbl -> get_Product(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInvalidProductLicenseException_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateExceptionCollection_INTERFACE_DEFINED__ +#define __IUpdateExceptionCollection_INTERFACE_DEFINED__ + +/* interface IUpdateExceptionCollection */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateExceptionCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("503626a3-8e14-4729-9355-0fe664bd2321") + IUpdateExceptionCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateException **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateExceptionCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateExceptionCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateExceptionCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateExceptionCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateExceptionCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateExceptionCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateExceptionCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateExceptionCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IUpdateExceptionCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateException **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IUpdateExceptionCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IUpdateExceptionCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IUpdateExceptionCollectionVtbl; + + interface IUpdateExceptionCollection + { + CONST_VTBL struct IUpdateExceptionCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateExceptionCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateExceptionCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateExceptionCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateExceptionCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateExceptionCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateExceptionCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateExceptionCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateExceptionCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IUpdateExceptionCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IUpdateExceptionCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateExceptionCollection_INTERFACE_DEFINED__ */ + + +#ifndef __ISearchResult_INTERFACE_DEFINED__ +#define __ISearchResult_INTERFACE_DEFINED__ + +/* interface ISearchResult */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ISearchResult; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d40cff62-e08c-4498-941a-01e25f0fd33c") + ISearchResult : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ResultCode( + /* [retval][out] */ __RPC__out OperationResultCode *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RootCategories( + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Updates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Warnings( + /* [retval][out] */ __RPC__deref_out_opt IUpdateExceptionCollection **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISearchResultVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ISearchResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ISearchResult * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ISearchResult * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in ISearchResult * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in ISearchResult * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in ISearchResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ISearchResult * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in ISearchResult * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RootCategories )( + __RPC__in ISearchResult * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in ISearchResult * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Warnings )( + __RPC__in ISearchResult * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateExceptionCollection **retval); + + END_INTERFACE + } ISearchResultVtbl; + + interface ISearchResult + { + CONST_VTBL struct ISearchResultVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISearchResult_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISearchResult_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISearchResult_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISearchResult_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ISearchResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ISearchResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ISearchResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define ISearchResult_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#define ISearchResult_get_RootCategories(This,retval) \ + ( (This)->lpVtbl -> get_RootCategories(This,retval) ) + +#define ISearchResult_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#define ISearchResult_get_Warnings(This,retval) \ + ( (This)->lpVtbl -> get_Warnings(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISearchResult_INTERFACE_DEFINED__ */ + + +#ifndef __ISearchJob_INTERFACE_DEFINED__ +#define __ISearchJob_INTERFACE_DEFINED__ + +/* interface ISearchJob */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ISearchJob; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7366ea16-7a1a-4ea2-b042-973d3e9cd99b") + ISearchJob : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AsyncState( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsCompleted( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CleanUp( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RequestAbort( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISearchJobVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ISearchJob * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ISearchJob * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ISearchJob * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in ISearchJob * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in ISearchJob * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in ISearchJob * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ISearchJob * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AsyncState )( + __RPC__in ISearchJob * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsCompleted )( + __RPC__in ISearchJob * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CleanUp )( + __RPC__in ISearchJob * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RequestAbort )( + __RPC__in ISearchJob * This); + + END_INTERFACE + } ISearchJobVtbl; + + interface ISearchJob + { + CONST_VTBL struct ISearchJobVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISearchJob_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISearchJob_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISearchJob_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISearchJob_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ISearchJob_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ISearchJob_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ISearchJob_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define ISearchJob_get_AsyncState(This,retval) \ + ( (This)->lpVtbl -> get_AsyncState(This,retval) ) + +#define ISearchJob_get_IsCompleted(This,retval) \ + ( (This)->lpVtbl -> get_IsCompleted(This,retval) ) + +#define ISearchJob_CleanUp(This) \ + ( (This)->lpVtbl -> CleanUp(This) ) + +#define ISearchJob_RequestAbort(This) \ + ( (This)->lpVtbl -> RequestAbort(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISearchJob_INTERFACE_DEFINED__ */ + + +#ifndef __ISearchCompletedCallbackArgs_INTERFACE_DEFINED__ +#define __ISearchCompletedCallbackArgs_INTERFACE_DEFINED__ + +/* interface ISearchCompletedCallbackArgs */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ISearchCompletedCallbackArgs; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a700a634-2850-4c47-938a-9e4b6e5af9a6") + ISearchCompletedCallbackArgs : public IDispatch + { + public: + }; + +#else /* C style interface */ + + typedef struct ISearchCompletedCallbackArgsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ISearchCompletedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ISearchCompletedCallbackArgs * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ISearchCompletedCallbackArgs * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in ISearchCompletedCallbackArgs * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in ISearchCompletedCallbackArgs * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in ISearchCompletedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + ISearchCompletedCallbackArgs * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } ISearchCompletedCallbackArgsVtbl; + + interface ISearchCompletedCallbackArgs + { + CONST_VTBL struct ISearchCompletedCallbackArgsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISearchCompletedCallbackArgs_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISearchCompletedCallbackArgs_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISearchCompletedCallbackArgs_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISearchCompletedCallbackArgs_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define ISearchCompletedCallbackArgs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define ISearchCompletedCallbackArgs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define ISearchCompletedCallbackArgs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISearchCompletedCallbackArgs_INTERFACE_DEFINED__ */ + + +#ifndef __ISearchCompletedCallback_INTERFACE_DEFINED__ +#define __ISearchCompletedCallback_INTERFACE_DEFINED__ + +/* interface ISearchCompletedCallback */ +/* [unique][uuid][nonextensible][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_ISearchCompletedCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("88aee058-d4b0-4725-a2f1-814a67ae964c") + ISearchCompletedCallback : public IUnknown + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Invoke( + /* [in] */ __RPC__in_opt ISearchJob *searchJob, + /* [in] */ __RPC__in_opt ISearchCompletedCallbackArgs *callbackArgs) = 0; + + }; + +#else /* C style interface */ + + typedef struct ISearchCompletedCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in ISearchCompletedCallback * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in ISearchCompletedCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in ISearchCompletedCallback * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + __RPC__in ISearchCompletedCallback * This, + /* [in] */ __RPC__in_opt ISearchJob *searchJob, + /* [in] */ __RPC__in_opt ISearchCompletedCallbackArgs *callbackArgs); + + END_INTERFACE + } ISearchCompletedCallbackVtbl; + + interface ISearchCompletedCallback + { + CONST_VTBL struct ISearchCompletedCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define ISearchCompletedCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define ISearchCompletedCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define ISearchCompletedCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define ISearchCompletedCallback_Invoke(This,searchJob,callbackArgs) \ + ( (This)->lpVtbl -> Invoke(This,searchJob,callbackArgs) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __ISearchCompletedCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntry_INTERFACE_DEFINED__ +#define __IUpdateHistoryEntry_INTERFACE_DEFINED__ + +/* interface IUpdateHistoryEntry */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateHistoryEntry; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("be56a644-af0e-4e0e-a311-c1d8e695cbff") + IUpdateHistoryEntry : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Operation( + /* [retval][out] */ __RPC__out UpdateOperation *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ResultCode( + /* [retval][out] */ __RPC__out OperationResultCode *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HResult( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Date( + /* [retval][out] */ __RPC__out DATE *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UpdateIdentity( + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Title( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Description( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UnmappedResultCode( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ClientApplicationID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServerSelection( + /* [retval][out] */ __RPC__out ServerSelection *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServiceID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UninstallationSteps( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UninstallationNotes( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_SupportUrl( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateHistoryEntryVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateHistoryEntry * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateHistoryEntry * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateHistoryEntry * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateHistoryEntry * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateHistoryEntry * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateHistoryEntry * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateHistoryEntry * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Operation )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__out UpdateOperation *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Date )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UpdateIdentity )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UnmappedResultCode )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServerSelection )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__out ServerSelection *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdateHistoryEntry * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + END_INTERFACE + } IUpdateHistoryEntryVtbl; + + interface IUpdateHistoryEntry + { + CONST_VTBL struct IUpdateHistoryEntryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateHistoryEntry_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateHistoryEntry_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateHistoryEntry_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateHistoryEntry_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateHistoryEntry_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateHistoryEntry_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateHistoryEntry_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateHistoryEntry_get_Operation(This,retval) \ + ( (This)->lpVtbl -> get_Operation(This,retval) ) + +#define IUpdateHistoryEntry_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#define IUpdateHistoryEntry_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IUpdateHistoryEntry_get_Date(This,retval) \ + ( (This)->lpVtbl -> get_Date(This,retval) ) + +#define IUpdateHistoryEntry_get_UpdateIdentity(This,retval) \ + ( (This)->lpVtbl -> get_UpdateIdentity(This,retval) ) + +#define IUpdateHistoryEntry_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdateHistoryEntry_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdateHistoryEntry_get_UnmappedResultCode(This,retval) \ + ( (This)->lpVtbl -> get_UnmappedResultCode(This,retval) ) + +#define IUpdateHistoryEntry_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateHistoryEntry_get_ServerSelection(This,retval) \ + ( (This)->lpVtbl -> get_ServerSelection(This,retval) ) + +#define IUpdateHistoryEntry_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateHistoryEntry_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdateHistoryEntry_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdateHistoryEntry_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateHistoryEntry_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntry2_INTERFACE_DEFINED__ +#define __IUpdateHistoryEntry2_INTERFACE_DEFINED__ + +/* interface IUpdateHistoryEntry2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateHistoryEntry2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c2bfb780-4539-4132-ab8c-0a8772013ab6") + IUpdateHistoryEntry2 : public IUpdateHistoryEntry + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Categories( + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateHistoryEntry2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateHistoryEntry2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateHistoryEntry2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateHistoryEntry2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Operation )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__out UpdateOperation *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Date )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UpdateIdentity )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateIdentity **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Title )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Description )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UnmappedResultCode )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServerSelection )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__out ServerSelection *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationSteps )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UninstallationNotes )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SupportUrl )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Categories )( + __RPC__in IUpdateHistoryEntry2 * This, + /* [retval][out] */ __RPC__deref_out_opt ICategoryCollection **retval); + + END_INTERFACE + } IUpdateHistoryEntry2Vtbl; + + interface IUpdateHistoryEntry2 + { + CONST_VTBL struct IUpdateHistoryEntry2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateHistoryEntry2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateHistoryEntry2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateHistoryEntry2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateHistoryEntry2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateHistoryEntry2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateHistoryEntry2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateHistoryEntry2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateHistoryEntry2_get_Operation(This,retval) \ + ( (This)->lpVtbl -> get_Operation(This,retval) ) + +#define IUpdateHistoryEntry2_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#define IUpdateHistoryEntry2_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IUpdateHistoryEntry2_get_Date(This,retval) \ + ( (This)->lpVtbl -> get_Date(This,retval) ) + +#define IUpdateHistoryEntry2_get_UpdateIdentity(This,retval) \ + ( (This)->lpVtbl -> get_UpdateIdentity(This,retval) ) + +#define IUpdateHistoryEntry2_get_Title(This,retval) \ + ( (This)->lpVtbl -> get_Title(This,retval) ) + +#define IUpdateHistoryEntry2_get_Description(This,retval) \ + ( (This)->lpVtbl -> get_Description(This,retval) ) + +#define IUpdateHistoryEntry2_get_UnmappedResultCode(This,retval) \ + ( (This)->lpVtbl -> get_UnmappedResultCode(This,retval) ) + +#define IUpdateHistoryEntry2_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateHistoryEntry2_get_ServerSelection(This,retval) \ + ( (This)->lpVtbl -> get_ServerSelection(This,retval) ) + +#define IUpdateHistoryEntry2_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateHistoryEntry2_get_UninstallationSteps(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationSteps(This,retval) ) + +#define IUpdateHistoryEntry2_get_UninstallationNotes(This,retval) \ + ( (This)->lpVtbl -> get_UninstallationNotes(This,retval) ) + +#define IUpdateHistoryEntry2_get_SupportUrl(This,retval) \ + ( (This)->lpVtbl -> get_SupportUrl(This,retval) ) + + +#define IUpdateHistoryEntry2_get_Categories(This,retval) \ + ( (This)->lpVtbl -> get_Categories(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateHistoryEntry2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateHistoryEntryCollection_INTERFACE_DEFINED__ +#define __IUpdateHistoryEntryCollection_INTERFACE_DEFINED__ + +/* interface IUpdateHistoryEntryCollection */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateHistoryEntryCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a7f04f3c-a290-435b-aadf-a116c3357a5c") + IUpdateHistoryEntryCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntry **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateHistoryEntryCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateHistoryEntryCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateHistoryEntryCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateHistoryEntryCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntry **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IUpdateHistoryEntryCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IUpdateHistoryEntryCollectionVtbl; + + interface IUpdateHistoryEntryCollection + { + CONST_VTBL struct IUpdateHistoryEntryCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateHistoryEntryCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateHistoryEntryCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateHistoryEntryCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateHistoryEntryCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateHistoryEntryCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateHistoryEntryCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateHistoryEntryCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateHistoryEntryCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IUpdateHistoryEntryCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IUpdateHistoryEntryCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateHistoryEntryCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateSearcher_INTERFACE_DEFINED__ +#define __IUpdateSearcher_INTERFACE_DEFINED__ + +/* interface IUpdateSearcher */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateSearcher; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8f45abf1-f9ae-4b95-a933-f0f66e5056ea") + IUpdateSearcher : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CanAutomaticallyUpgradeService( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_CanAutomaticallyUpgradeService( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ClientApplicationID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ClientApplicationID( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IncludePotentiallySupersededUpdates( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_IncludePotentiallySupersededUpdates( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServerSelection( + /* [retval][out] */ __RPC__out ServerSelection *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ServerSelection( + /* [in] */ ServerSelection value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE BeginSearch( + /* [in] */ __RPC__in BSTR criteria, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt ISearchJob **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EndSearch( + /* [in] */ __RPC__in_opt ISearchJob *searchJob, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EscapeString( + /* [in] */ __RPC__in BSTR unescaped, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE QueryHistory( + /* [in] */ LONG startIndex, + /* [in] */ LONG count, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntryCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Search( + /* [in] */ __RPC__in BSTR criteria, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Online( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Online( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetTotalHistoryCount( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServiceID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ServiceID( + /* [in] */ __RPC__in BSTR value) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateSearcherVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateSearcher * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateSearcher * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateSearcher * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateSearcher * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateSearcher * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutomaticallyUpgradeService )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CanAutomaticallyUpgradeService )( + __RPC__in IUpdateSearcher * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IncludePotentiallySupersededUpdates )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IncludePotentiallySupersededUpdates )( + __RPC__in IUpdateSearcher * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServerSelection )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__out ServerSelection *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ServerSelection )( + __RPC__in IUpdateSearcher * This, + /* [in] */ ServerSelection value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginSearch )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in BSTR criteria, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt ISearchJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndSearch )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in_opt ISearchJob *searchJob, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EscapeString )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in BSTR unescaped, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *QueryHistory )( + __RPC__in IUpdateSearcher * This, + /* [in] */ LONG startIndex, + /* [in] */ LONG count, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntryCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Search )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in BSTR criteria, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Online )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Online )( + __RPC__in IUpdateSearcher * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTotalHistoryCount )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateSearcher * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ServiceID )( + __RPC__in IUpdateSearcher * This, + /* [in] */ __RPC__in BSTR value); + + END_INTERFACE + } IUpdateSearcherVtbl; + + interface IUpdateSearcher + { + CONST_VTBL struct IUpdateSearcherVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateSearcher_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateSearcher_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateSearcher_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateSearcher_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateSearcher_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateSearcher_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateSearcher_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateSearcher_get_CanAutomaticallyUpgradeService(This,retval) \ + ( (This)->lpVtbl -> get_CanAutomaticallyUpgradeService(This,retval) ) + +#define IUpdateSearcher_put_CanAutomaticallyUpgradeService(This,value) \ + ( (This)->lpVtbl -> put_CanAutomaticallyUpgradeService(This,value) ) + +#define IUpdateSearcher_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateSearcher_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateSearcher_get_IncludePotentiallySupersededUpdates(This,retval) \ + ( (This)->lpVtbl -> get_IncludePotentiallySupersededUpdates(This,retval) ) + +#define IUpdateSearcher_put_IncludePotentiallySupersededUpdates(This,value) \ + ( (This)->lpVtbl -> put_IncludePotentiallySupersededUpdates(This,value) ) + +#define IUpdateSearcher_get_ServerSelection(This,retval) \ + ( (This)->lpVtbl -> get_ServerSelection(This,retval) ) + +#define IUpdateSearcher_put_ServerSelection(This,value) \ + ( (This)->lpVtbl -> put_ServerSelection(This,value) ) + +#define IUpdateSearcher_BeginSearch(This,criteria,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginSearch(This,criteria,onCompleted,state,retval) ) + +#define IUpdateSearcher_EndSearch(This,searchJob,retval) \ + ( (This)->lpVtbl -> EndSearch(This,searchJob,retval) ) + +#define IUpdateSearcher_EscapeString(This,unescaped,retval) \ + ( (This)->lpVtbl -> EscapeString(This,unescaped,retval) ) + +#define IUpdateSearcher_QueryHistory(This,startIndex,count,retval) \ + ( (This)->lpVtbl -> QueryHistory(This,startIndex,count,retval) ) + +#define IUpdateSearcher_Search(This,criteria,retval) \ + ( (This)->lpVtbl -> Search(This,criteria,retval) ) + +#define IUpdateSearcher_get_Online(This,retval) \ + ( (This)->lpVtbl -> get_Online(This,retval) ) + +#define IUpdateSearcher_put_Online(This,value) \ + ( (This)->lpVtbl -> put_Online(This,value) ) + +#define IUpdateSearcher_GetTotalHistoryCount(This,retval) \ + ( (This)->lpVtbl -> GetTotalHistoryCount(This,retval) ) + +#define IUpdateSearcher_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateSearcher_put_ServiceID(This,value) \ + ( (This)->lpVtbl -> put_ServiceID(This,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateSearcher_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateSearcher2_INTERFACE_DEFINED__ +#define __IUpdateSearcher2_INTERFACE_DEFINED__ + +/* interface IUpdateSearcher2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateSearcher2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4cbdcb2d-1589-4beb-bd1c-3e582ff0add0") + IUpdateSearcher2 : public IUpdateSearcher + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IgnoreDownloadPriority( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_IgnoreDownloadPriority( + /* [in] */ VARIANT_BOOL value) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateSearcher2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateSearcher2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateSearcher2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateSearcher2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateSearcher2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutomaticallyUpgradeService )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CanAutomaticallyUpgradeService )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IncludePotentiallySupersededUpdates )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IncludePotentiallySupersededUpdates )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServerSelection )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__out ServerSelection *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ServerSelection )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ ServerSelection value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginSearch )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in BSTR criteria, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt ISearchJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndSearch )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in_opt ISearchJob *searchJob, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EscapeString )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in BSTR unescaped, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *QueryHistory )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ LONG startIndex, + /* [in] */ LONG count, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntryCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Search )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in BSTR criteria, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Online )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Online )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTotalHistoryCount )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ServiceID )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IgnoreDownloadPriority )( + __RPC__in IUpdateSearcher2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IgnoreDownloadPriority )( + __RPC__in IUpdateSearcher2 * This, + /* [in] */ VARIANT_BOOL value); + + END_INTERFACE + } IUpdateSearcher2Vtbl; + + interface IUpdateSearcher2 + { + CONST_VTBL struct IUpdateSearcher2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateSearcher2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateSearcher2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateSearcher2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateSearcher2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateSearcher2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateSearcher2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateSearcher2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateSearcher2_get_CanAutomaticallyUpgradeService(This,retval) \ + ( (This)->lpVtbl -> get_CanAutomaticallyUpgradeService(This,retval) ) + +#define IUpdateSearcher2_put_CanAutomaticallyUpgradeService(This,value) \ + ( (This)->lpVtbl -> put_CanAutomaticallyUpgradeService(This,value) ) + +#define IUpdateSearcher2_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateSearcher2_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateSearcher2_get_IncludePotentiallySupersededUpdates(This,retval) \ + ( (This)->lpVtbl -> get_IncludePotentiallySupersededUpdates(This,retval) ) + +#define IUpdateSearcher2_put_IncludePotentiallySupersededUpdates(This,value) \ + ( (This)->lpVtbl -> put_IncludePotentiallySupersededUpdates(This,value) ) + +#define IUpdateSearcher2_get_ServerSelection(This,retval) \ + ( (This)->lpVtbl -> get_ServerSelection(This,retval) ) + +#define IUpdateSearcher2_put_ServerSelection(This,value) \ + ( (This)->lpVtbl -> put_ServerSelection(This,value) ) + +#define IUpdateSearcher2_BeginSearch(This,criteria,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginSearch(This,criteria,onCompleted,state,retval) ) + +#define IUpdateSearcher2_EndSearch(This,searchJob,retval) \ + ( (This)->lpVtbl -> EndSearch(This,searchJob,retval) ) + +#define IUpdateSearcher2_EscapeString(This,unescaped,retval) \ + ( (This)->lpVtbl -> EscapeString(This,unescaped,retval) ) + +#define IUpdateSearcher2_QueryHistory(This,startIndex,count,retval) \ + ( (This)->lpVtbl -> QueryHistory(This,startIndex,count,retval) ) + +#define IUpdateSearcher2_Search(This,criteria,retval) \ + ( (This)->lpVtbl -> Search(This,criteria,retval) ) + +#define IUpdateSearcher2_get_Online(This,retval) \ + ( (This)->lpVtbl -> get_Online(This,retval) ) + +#define IUpdateSearcher2_put_Online(This,value) \ + ( (This)->lpVtbl -> put_Online(This,value) ) + +#define IUpdateSearcher2_GetTotalHistoryCount(This,retval) \ + ( (This)->lpVtbl -> GetTotalHistoryCount(This,retval) ) + +#define IUpdateSearcher2_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateSearcher2_put_ServiceID(This,value) \ + ( (This)->lpVtbl -> put_ServiceID(This,value) ) + + +#define IUpdateSearcher2_get_IgnoreDownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_IgnoreDownloadPriority(This,retval) ) + +#define IUpdateSearcher2_put_IgnoreDownloadPriority(This,value) \ + ( (This)->lpVtbl -> put_IgnoreDownloadPriority(This,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateSearcher2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateSearcher3_INTERFACE_DEFINED__ +#define __IUpdateSearcher3_INTERFACE_DEFINED__ + +/* interface IUpdateSearcher3 */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateSearcher3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("04C6895D-EAF2-4034-97F3-311DE9BE413A") + IUpdateSearcher3 : public IUpdateSearcher2 + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_SearchScope( + /* [retval][out] */ __RPC__out SearchScope *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_SearchScope( + /* [in] */ SearchScope value) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateSearcher3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateSearcher3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateSearcher3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateSearcher3 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateSearcher3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanAutomaticallyUpgradeService )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_CanAutomaticallyUpgradeService )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IncludePotentiallySupersededUpdates )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IncludePotentiallySupersededUpdates )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServerSelection )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out ServerSelection *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ServerSelection )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ ServerSelection value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginSearch )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in BSTR criteria, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt ISearchJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndSearch )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in_opt ISearchJob *searchJob, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EscapeString )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in BSTR unescaped, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *QueryHistory )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ LONG startIndex, + /* [in] */ LONG count, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntryCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Search )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in BSTR criteria, + /* [retval][out] */ __RPC__deref_out_opt ISearchResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Online )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Online )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTotalHistoryCount )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ServiceID )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IgnoreDownloadPriority )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IgnoreDownloadPriority )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SearchScope )( + __RPC__in IUpdateSearcher3 * This, + /* [retval][out] */ __RPC__out SearchScope *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_SearchScope )( + __RPC__in IUpdateSearcher3 * This, + /* [in] */ SearchScope value); + + END_INTERFACE + } IUpdateSearcher3Vtbl; + + interface IUpdateSearcher3 + { + CONST_VTBL struct IUpdateSearcher3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateSearcher3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateSearcher3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateSearcher3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateSearcher3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateSearcher3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateSearcher3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateSearcher3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateSearcher3_get_CanAutomaticallyUpgradeService(This,retval) \ + ( (This)->lpVtbl -> get_CanAutomaticallyUpgradeService(This,retval) ) + +#define IUpdateSearcher3_put_CanAutomaticallyUpgradeService(This,value) \ + ( (This)->lpVtbl -> put_CanAutomaticallyUpgradeService(This,value) ) + +#define IUpdateSearcher3_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateSearcher3_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateSearcher3_get_IncludePotentiallySupersededUpdates(This,retval) \ + ( (This)->lpVtbl -> get_IncludePotentiallySupersededUpdates(This,retval) ) + +#define IUpdateSearcher3_put_IncludePotentiallySupersededUpdates(This,value) \ + ( (This)->lpVtbl -> put_IncludePotentiallySupersededUpdates(This,value) ) + +#define IUpdateSearcher3_get_ServerSelection(This,retval) \ + ( (This)->lpVtbl -> get_ServerSelection(This,retval) ) + +#define IUpdateSearcher3_put_ServerSelection(This,value) \ + ( (This)->lpVtbl -> put_ServerSelection(This,value) ) + +#define IUpdateSearcher3_BeginSearch(This,criteria,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginSearch(This,criteria,onCompleted,state,retval) ) + +#define IUpdateSearcher3_EndSearch(This,searchJob,retval) \ + ( (This)->lpVtbl -> EndSearch(This,searchJob,retval) ) + +#define IUpdateSearcher3_EscapeString(This,unescaped,retval) \ + ( (This)->lpVtbl -> EscapeString(This,unescaped,retval) ) + +#define IUpdateSearcher3_QueryHistory(This,startIndex,count,retval) \ + ( (This)->lpVtbl -> QueryHistory(This,startIndex,count,retval) ) + +#define IUpdateSearcher3_Search(This,criteria,retval) \ + ( (This)->lpVtbl -> Search(This,criteria,retval) ) + +#define IUpdateSearcher3_get_Online(This,retval) \ + ( (This)->lpVtbl -> get_Online(This,retval) ) + +#define IUpdateSearcher3_put_Online(This,value) \ + ( (This)->lpVtbl -> put_Online(This,value) ) + +#define IUpdateSearcher3_GetTotalHistoryCount(This,retval) \ + ( (This)->lpVtbl -> GetTotalHistoryCount(This,retval) ) + +#define IUpdateSearcher3_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateSearcher3_put_ServiceID(This,value) \ + ( (This)->lpVtbl -> put_ServiceID(This,value) ) + + +#define IUpdateSearcher3_get_IgnoreDownloadPriority(This,retval) \ + ( (This)->lpVtbl -> get_IgnoreDownloadPriority(This,retval) ) + +#define IUpdateSearcher3_put_IgnoreDownloadPriority(This,value) \ + ( (This)->lpVtbl -> put_IgnoreDownloadPriority(This,value) ) + + +#define IUpdateSearcher3_get_SearchScope(This,retval) \ + ( (This)->lpVtbl -> get_SearchScope(This,retval) ) + +#define IUpdateSearcher3_put_SearchScope(This,value) \ + ( (This)->lpVtbl -> put_SearchScope(This,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateSearcher3_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateDownloadResult_INTERFACE_DEFINED__ +#define __IUpdateDownloadResult_INTERFACE_DEFINED__ + +/* interface IUpdateDownloadResult */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateDownloadResult; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("bf99af76-b575-42ad-8aa4-33cbb5477af1") + IUpdateDownloadResult : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HResult( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ResultCode( + /* [retval][out] */ __RPC__out OperationResultCode *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateDownloadResultVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateDownloadResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateDownloadResult * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateDownloadResult * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateDownloadResult * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateDownloadResult * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateDownloadResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateDownloadResult * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IUpdateDownloadResult * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in IUpdateDownloadResult * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + END_INTERFACE + } IUpdateDownloadResultVtbl; + + interface IUpdateDownloadResult + { + CONST_VTBL struct IUpdateDownloadResultVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateDownloadResult_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateDownloadResult_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateDownloadResult_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateDownloadResult_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateDownloadResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateDownloadResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateDownloadResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateDownloadResult_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IUpdateDownloadResult_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateDownloadResult_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadResult_INTERFACE_DEFINED__ +#define __IDownloadResult_INTERFACE_DEFINED__ + +/* interface IDownloadResult */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadResult; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("daa4fdd0-4727-4dbe-a1e7-745dca317144") + IDownloadResult : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HResult( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ResultCode( + /* [retval][out] */ __RPC__out OperationResultCode *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetUpdateResult( + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadResult **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDownloadResultVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadResult * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadResult * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IDownloadResult * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IDownloadResult * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IDownloadResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDownloadResult * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IDownloadResult * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in IDownloadResult * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetUpdateResult )( + __RPC__in IDownloadResult * This, + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadResult **retval); + + END_INTERFACE + } IDownloadResultVtbl; + + interface IDownloadResult + { + CONST_VTBL struct IDownloadResultVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadResult_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadResult_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadResult_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadResult_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IDownloadResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IDownloadResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IDownloadResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IDownloadResult_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IDownloadResult_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#define IDownloadResult_GetUpdateResult(This,updateIndex,retval) \ + ( (This)->lpVtbl -> GetUpdateResult(This,updateIndex,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadResult_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadProgress_INTERFACE_DEFINED__ +#define __IDownloadProgress_INTERFACE_DEFINED__ + +/* interface IDownloadProgress */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadProgress; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d31a5bac-f719-4178-9dbb-5e2cb47fd18a") + IDownloadProgress : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdateBytesDownloaded( + /* [retval][out] */ __RPC__out DECIMAL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdateBytesToDownload( + /* [retval][out] */ __RPC__out DECIMAL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdateIndex( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_PercentComplete( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_TotalBytesDownloaded( + /* [retval][out] */ __RPC__out DECIMAL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_TotalBytesToDownload( + /* [retval][out] */ __RPC__out DECIMAL *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetUpdateResult( + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadResult **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdateDownloadPhase( + /* [retval][out] */ __RPC__out DownloadPhase *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdatePercentComplete( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDownloadProgressVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadProgress * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadProgress * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadProgress * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IDownloadProgress * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IDownloadProgress * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IDownloadProgress * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDownloadProgress * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdateBytesDownloaded )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdateBytesToDownload )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdateIndex )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PercentComplete )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TotalBytesDownloaded )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_TotalBytesToDownload )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out DECIMAL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetUpdateResult )( + __RPC__in IDownloadProgress * This, + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloadResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdateDownloadPhase )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out DownloadPhase *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdatePercentComplete )( + __RPC__in IDownloadProgress * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IDownloadProgressVtbl; + + interface IDownloadProgress + { + CONST_VTBL struct IDownloadProgressVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadProgress_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadProgress_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadProgress_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadProgress_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IDownloadProgress_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IDownloadProgress_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IDownloadProgress_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IDownloadProgress_get_CurrentUpdateBytesDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdateBytesDownloaded(This,retval) ) + +#define IDownloadProgress_get_CurrentUpdateBytesToDownload(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdateBytesToDownload(This,retval) ) + +#define IDownloadProgress_get_CurrentUpdateIndex(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdateIndex(This,retval) ) + +#define IDownloadProgress_get_PercentComplete(This,retval) \ + ( (This)->lpVtbl -> get_PercentComplete(This,retval) ) + +#define IDownloadProgress_get_TotalBytesDownloaded(This,retval) \ + ( (This)->lpVtbl -> get_TotalBytesDownloaded(This,retval) ) + +#define IDownloadProgress_get_TotalBytesToDownload(This,retval) \ + ( (This)->lpVtbl -> get_TotalBytesToDownload(This,retval) ) + +#define IDownloadProgress_GetUpdateResult(This,updateIndex,retval) \ + ( (This)->lpVtbl -> GetUpdateResult(This,updateIndex,retval) ) + +#define IDownloadProgress_get_CurrentUpdateDownloadPhase(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdateDownloadPhase(This,retval) ) + +#define IDownloadProgress_get_CurrentUpdatePercentComplete(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdatePercentComplete(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadProgress_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadJob_INTERFACE_DEFINED__ +#define __IDownloadJob_INTERFACE_DEFINED__ + +/* interface IDownloadJob */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadJob; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("c574de85-7358-43f6-aae8-8697e62d8ba7") + IDownloadJob : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AsyncState( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsCompleted( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Updates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CleanUp( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetProgress( + /* [retval][out] */ __RPC__deref_out_opt IDownloadProgress **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RequestAbort( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDownloadJobVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadJob * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadJob * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadJob * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IDownloadJob * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IDownloadJob * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IDownloadJob * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDownloadJob * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AsyncState )( + __RPC__in IDownloadJob * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsCompleted )( + __RPC__in IDownloadJob * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in IDownloadJob * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CleanUp )( + __RPC__in IDownloadJob * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetProgress )( + __RPC__in IDownloadJob * This, + /* [retval][out] */ __RPC__deref_out_opt IDownloadProgress **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RequestAbort )( + __RPC__in IDownloadJob * This); + + END_INTERFACE + } IDownloadJobVtbl; + + interface IDownloadJob + { + CONST_VTBL struct IDownloadJobVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadJob_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadJob_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadJob_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadJob_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IDownloadJob_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IDownloadJob_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IDownloadJob_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IDownloadJob_get_AsyncState(This,retval) \ + ( (This)->lpVtbl -> get_AsyncState(This,retval) ) + +#define IDownloadJob_get_IsCompleted(This,retval) \ + ( (This)->lpVtbl -> get_IsCompleted(This,retval) ) + +#define IDownloadJob_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#define IDownloadJob_CleanUp(This) \ + ( (This)->lpVtbl -> CleanUp(This) ) + +#define IDownloadJob_GetProgress(This,retval) \ + ( (This)->lpVtbl -> GetProgress(This,retval) ) + +#define IDownloadJob_RequestAbort(This) \ + ( (This)->lpVtbl -> RequestAbort(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadJob_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadCompletedCallbackArgs_INTERFACE_DEFINED__ +#define __IDownloadCompletedCallbackArgs_INTERFACE_DEFINED__ + +/* interface IDownloadCompletedCallbackArgs */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadCompletedCallbackArgs; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("fa565b23-498c-47a0-979d-e7d5b1813360") + IDownloadCompletedCallbackArgs : public IDispatch + { + public: + }; + +#else /* C style interface */ + + typedef struct IDownloadCompletedCallbackArgsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadCompletedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadCompletedCallbackArgs * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadCompletedCallbackArgs * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IDownloadCompletedCallbackArgs * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IDownloadCompletedCallbackArgs * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IDownloadCompletedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDownloadCompletedCallbackArgs * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } IDownloadCompletedCallbackArgsVtbl; + + interface IDownloadCompletedCallbackArgs + { + CONST_VTBL struct IDownloadCompletedCallbackArgsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadCompletedCallbackArgs_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadCompletedCallbackArgs_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadCompletedCallbackArgs_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadCompletedCallbackArgs_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IDownloadCompletedCallbackArgs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IDownloadCompletedCallbackArgs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IDownloadCompletedCallbackArgs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadCompletedCallbackArgs_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadCompletedCallback_INTERFACE_DEFINED__ +#define __IDownloadCompletedCallback_INTERFACE_DEFINED__ + +/* interface IDownloadCompletedCallback */ +/* [unique][uuid][nonextensible][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadCompletedCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("77254866-9f5b-4c8e-b9e2-c77a8530d64b") + IDownloadCompletedCallback : public IUnknown + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Invoke( + /* [in] */ __RPC__in_opt IDownloadJob *downloadJob, + /* [in] */ __RPC__in_opt IDownloadCompletedCallbackArgs *callbackArgs) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDownloadCompletedCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadCompletedCallback * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadCompletedCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadCompletedCallback * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + __RPC__in IDownloadCompletedCallback * This, + /* [in] */ __RPC__in_opt IDownloadJob *downloadJob, + /* [in] */ __RPC__in_opt IDownloadCompletedCallbackArgs *callbackArgs); + + END_INTERFACE + } IDownloadCompletedCallbackVtbl; + + interface IDownloadCompletedCallback + { + CONST_VTBL struct IDownloadCompletedCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadCompletedCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadCompletedCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadCompletedCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadCompletedCallback_Invoke(This,downloadJob,callbackArgs) \ + ( (This)->lpVtbl -> Invoke(This,downloadJob,callbackArgs) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadCompletedCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadProgressChangedCallbackArgs_INTERFACE_DEFINED__ +#define __IDownloadProgressChangedCallbackArgs_INTERFACE_DEFINED__ + +/* interface IDownloadProgressChangedCallbackArgs */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadProgressChangedCallbackArgs; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("324ff2c6-4981-4b04-9412-57481745ab24") + IDownloadProgressChangedCallbackArgs : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Progress( + /* [retval][out] */ __RPC__deref_out_opt IDownloadProgress **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDownloadProgressChangedCallbackArgsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadProgressChangedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadProgressChangedCallbackArgs * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadProgressChangedCallbackArgs * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IDownloadProgressChangedCallbackArgs * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IDownloadProgressChangedCallbackArgs * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IDownloadProgressChangedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IDownloadProgressChangedCallbackArgs * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + __RPC__in IDownloadProgressChangedCallbackArgs * This, + /* [retval][out] */ __RPC__deref_out_opt IDownloadProgress **retval); + + END_INTERFACE + } IDownloadProgressChangedCallbackArgsVtbl; + + interface IDownloadProgressChangedCallbackArgs + { + CONST_VTBL struct IDownloadProgressChangedCallbackArgsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadProgressChangedCallbackArgs_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadProgressChangedCallbackArgs_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadProgressChangedCallbackArgs_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadProgressChangedCallbackArgs_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IDownloadProgressChangedCallbackArgs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IDownloadProgressChangedCallbackArgs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IDownloadProgressChangedCallbackArgs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IDownloadProgressChangedCallbackArgs_get_Progress(This,retval) \ + ( (This)->lpVtbl -> get_Progress(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadProgressChangedCallbackArgs_INTERFACE_DEFINED__ */ + + +#ifndef __IDownloadProgressChangedCallback_INTERFACE_DEFINED__ +#define __IDownloadProgressChangedCallback_INTERFACE_DEFINED__ + +/* interface IDownloadProgressChangedCallback */ +/* [unique][uuid][nonextensible][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IDownloadProgressChangedCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8c3f1cdd-6173-4591-aebd-a56a53ca77c1") + IDownloadProgressChangedCallback : public IUnknown + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Invoke( + /* [in] */ __RPC__in_opt IDownloadJob *downloadJob, + /* [in] */ __RPC__in_opt IDownloadProgressChangedCallbackArgs *callbackArgs) = 0; + + }; + +#else /* C style interface */ + + typedef struct IDownloadProgressChangedCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IDownloadProgressChangedCallback * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IDownloadProgressChangedCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IDownloadProgressChangedCallback * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + __RPC__in IDownloadProgressChangedCallback * This, + /* [in] */ __RPC__in_opt IDownloadJob *downloadJob, + /* [in] */ __RPC__in_opt IDownloadProgressChangedCallbackArgs *callbackArgs); + + END_INTERFACE + } IDownloadProgressChangedCallbackVtbl; + + interface IDownloadProgressChangedCallback + { + CONST_VTBL struct IDownloadProgressChangedCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDownloadProgressChangedCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDownloadProgressChangedCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDownloadProgressChangedCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDownloadProgressChangedCallback_Invoke(This,downloadJob,callbackArgs) \ + ( (This)->lpVtbl -> Invoke(This,downloadJob,callbackArgs) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDownloadProgressChangedCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateDownloader_INTERFACE_DEFINED__ +#define __IUpdateDownloader_INTERFACE_DEFINED__ + +/* interface IUpdateDownloader */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateDownloader; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("68f1c6f9-7ecc-4666-a464-247fe12496c3") + IUpdateDownloader : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ClientApplicationID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ClientApplicationID( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsForced( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_IsForced( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Priority( + /* [retval][out] */ __RPC__out DownloadPriority *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Priority( + /* [in] */ DownloadPriority value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Updates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Updates( + /* [in] */ __RPC__in_opt IUpdateCollection *value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE BeginDownload( + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IDownloadJob **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Download( + /* [retval][out] */ __RPC__deref_out_opt IDownloadResult **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EndDownload( + /* [in] */ __RPC__in_opt IDownloadJob *value, + /* [retval][out] */ __RPC__deref_out_opt IDownloadResult **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateDownloaderVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateDownloader * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateDownloader * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateDownloader * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateDownloader * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateDownloader * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateDownloader * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateDownloader * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateDownloader * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateDownloader * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsForced )( + __RPC__in IUpdateDownloader * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsForced )( + __RPC__in IUpdateDownloader * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Priority )( + __RPC__in IUpdateDownloader * This, + /* [retval][out] */ __RPC__out DownloadPriority *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Priority )( + __RPC__in IUpdateDownloader * This, + /* [in] */ DownloadPriority value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in IUpdateDownloader * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Updates )( + __RPC__in IUpdateDownloader * This, + /* [in] */ __RPC__in_opt IUpdateCollection *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginDownload )( + __RPC__in IUpdateDownloader * This, + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IDownloadJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Download )( + __RPC__in IUpdateDownloader * This, + /* [retval][out] */ __RPC__deref_out_opt IDownloadResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndDownload )( + __RPC__in IUpdateDownloader * This, + /* [in] */ __RPC__in_opt IDownloadJob *value, + /* [retval][out] */ __RPC__deref_out_opt IDownloadResult **retval); + + END_INTERFACE + } IUpdateDownloaderVtbl; + + interface IUpdateDownloader + { + CONST_VTBL struct IUpdateDownloaderVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateDownloader_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateDownloader_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateDownloader_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateDownloader_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateDownloader_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateDownloader_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateDownloader_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateDownloader_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateDownloader_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateDownloader_get_IsForced(This,retval) \ + ( (This)->lpVtbl -> get_IsForced(This,retval) ) + +#define IUpdateDownloader_put_IsForced(This,value) \ + ( (This)->lpVtbl -> put_IsForced(This,value) ) + +#define IUpdateDownloader_get_Priority(This,retval) \ + ( (This)->lpVtbl -> get_Priority(This,retval) ) + +#define IUpdateDownloader_put_Priority(This,value) \ + ( (This)->lpVtbl -> put_Priority(This,value) ) + +#define IUpdateDownloader_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#define IUpdateDownloader_put_Updates(This,value) \ + ( (This)->lpVtbl -> put_Updates(This,value) ) + +#define IUpdateDownloader_BeginDownload(This,onProgressChanged,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginDownload(This,onProgressChanged,onCompleted,state,retval) ) + +#define IUpdateDownloader_Download(This,retval) \ + ( (This)->lpVtbl -> Download(This,retval) ) + +#define IUpdateDownloader_EndDownload(This,value,retval) \ + ( (This)->lpVtbl -> EndDownload(This,value,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateDownloader_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateInstallationResult_INTERFACE_DEFINED__ +#define __IUpdateInstallationResult_INTERFACE_DEFINED__ + +/* interface IUpdateInstallationResult */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateInstallationResult; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("d940f0f8-3cbb-4fd0-993f-471e7f2328ad") + IUpdateInstallationResult : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HResult( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootRequired( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ResultCode( + /* [retval][out] */ __RPC__out OperationResultCode *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateInstallationResultVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateInstallationResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateInstallationResult * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateInstallationResult * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateInstallationResult * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateInstallationResult * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateInstallationResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateInstallationResult * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IUpdateInstallationResult * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IUpdateInstallationResult * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in IUpdateInstallationResult * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + END_INTERFACE + } IUpdateInstallationResultVtbl; + + interface IUpdateInstallationResult + { + CONST_VTBL struct IUpdateInstallationResultVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateInstallationResult_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateInstallationResult_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateInstallationResult_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateInstallationResult_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateInstallationResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateInstallationResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateInstallationResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateInstallationResult_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IUpdateInstallationResult_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IUpdateInstallationResult_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateInstallationResult_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationResult_INTERFACE_DEFINED__ +#define __IInstallationResult_INTERFACE_DEFINED__ + +/* interface IInstallationResult */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationResult; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("a43c56d6-7451-48d4-af96-b6cd2d0d9b7a") + IInstallationResult : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_HResult( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootRequired( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ResultCode( + /* [retval][out] */ __RPC__out OperationResultCode *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetUpdateResult( + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstallationResult **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationResultVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationResult * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationResult * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationResult * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationResult * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationResult * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationResult * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_HResult )( + __RPC__in IInstallationResult * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequired )( + __RPC__in IInstallationResult * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ResultCode )( + __RPC__in IInstallationResult * This, + /* [retval][out] */ __RPC__out OperationResultCode *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetUpdateResult )( + __RPC__in IInstallationResult * This, + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstallationResult **retval); + + END_INTERFACE + } IInstallationResultVtbl; + + interface IInstallationResult + { + CONST_VTBL struct IInstallationResultVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationResult_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationResult_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationResult_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationResult_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationResult_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationResult_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationResult_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInstallationResult_get_HResult(This,retval) \ + ( (This)->lpVtbl -> get_HResult(This,retval) ) + +#define IInstallationResult_get_RebootRequired(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequired(This,retval) ) + +#define IInstallationResult_get_ResultCode(This,retval) \ + ( (This)->lpVtbl -> get_ResultCode(This,retval) ) + +#define IInstallationResult_GetUpdateResult(This,updateIndex,retval) \ + ( (This)->lpVtbl -> GetUpdateResult(This,updateIndex,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationResult_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationProgress_INTERFACE_DEFINED__ +#define __IInstallationProgress_INTERFACE_DEFINED__ + +/* interface IInstallationProgress */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationProgress; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("345c8244-43a3-4e32-a368-65f073b76f36") + IInstallationProgress : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdateIndex( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CurrentUpdatePercentComplete( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_PercentComplete( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetUpdateResult( + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstallationResult **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationProgressVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationProgress * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationProgress * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationProgress * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationProgress * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationProgress * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationProgress * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationProgress * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdateIndex )( + __RPC__in IInstallationProgress * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CurrentUpdatePercentComplete )( + __RPC__in IInstallationProgress * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_PercentComplete )( + __RPC__in IInstallationProgress * This, + /* [retval][out] */ __RPC__out LONG *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetUpdateResult )( + __RPC__in IInstallationProgress * This, + /* [in] */ LONG updateIndex, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstallationResult **retval); + + END_INTERFACE + } IInstallationProgressVtbl; + + interface IInstallationProgress + { + CONST_VTBL struct IInstallationProgressVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationProgress_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationProgress_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationProgress_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationProgress_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationProgress_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationProgress_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationProgress_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInstallationProgress_get_CurrentUpdateIndex(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdateIndex(This,retval) ) + +#define IInstallationProgress_get_CurrentUpdatePercentComplete(This,retval) \ + ( (This)->lpVtbl -> get_CurrentUpdatePercentComplete(This,retval) ) + +#define IInstallationProgress_get_PercentComplete(This,retval) \ + ( (This)->lpVtbl -> get_PercentComplete(This,retval) ) + +#define IInstallationProgress_GetUpdateResult(This,updateIndex,retval) \ + ( (This)->lpVtbl -> GetUpdateResult(This,updateIndex,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationProgress_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationJob_INTERFACE_DEFINED__ +#define __IInstallationJob_INTERFACE_DEFINED__ + +/* interface IInstallationJob */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationJob; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5c209f0b-bad5-432a-9556-4699bed2638a") + IInstallationJob : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AsyncState( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsCompleted( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Updates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CleanUp( void) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetProgress( + /* [retval][out] */ __RPC__deref_out_opt IInstallationProgress **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RequestAbort( void) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationJobVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationJob * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationJob * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationJob * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationJob * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationJob * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationJob * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationJob * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AsyncState )( + __RPC__in IInstallationJob * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsCompleted )( + __RPC__in IInstallationJob * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in IInstallationJob * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CleanUp )( + __RPC__in IInstallationJob * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetProgress )( + __RPC__in IInstallationJob * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationProgress **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RequestAbort )( + __RPC__in IInstallationJob * This); + + END_INTERFACE + } IInstallationJobVtbl; + + interface IInstallationJob + { + CONST_VTBL struct IInstallationJobVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationJob_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationJob_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationJob_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationJob_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationJob_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationJob_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationJob_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInstallationJob_get_AsyncState(This,retval) \ + ( (This)->lpVtbl -> get_AsyncState(This,retval) ) + +#define IInstallationJob_get_IsCompleted(This,retval) \ + ( (This)->lpVtbl -> get_IsCompleted(This,retval) ) + +#define IInstallationJob_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#define IInstallationJob_CleanUp(This) \ + ( (This)->lpVtbl -> CleanUp(This) ) + +#define IInstallationJob_GetProgress(This,retval) \ + ( (This)->lpVtbl -> GetProgress(This,retval) ) + +#define IInstallationJob_RequestAbort(This) \ + ( (This)->lpVtbl -> RequestAbort(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationJob_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationCompletedCallbackArgs_INTERFACE_DEFINED__ +#define __IInstallationCompletedCallbackArgs_INTERFACE_DEFINED__ + +/* interface IInstallationCompletedCallbackArgs */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationCompletedCallbackArgs; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("250e2106-8efb-4705-9653-ef13c581b6a1") + IInstallationCompletedCallbackArgs : public IDispatch + { + public: + }; + +#else /* C style interface */ + + typedef struct IInstallationCompletedCallbackArgsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationCompletedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationCompletedCallbackArgs * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationCompletedCallbackArgs * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationCompletedCallbackArgs * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationCompletedCallbackArgs * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationCompletedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationCompletedCallbackArgs * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + END_INTERFACE + } IInstallationCompletedCallbackArgsVtbl; + + interface IInstallationCompletedCallbackArgs + { + CONST_VTBL struct IInstallationCompletedCallbackArgsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationCompletedCallbackArgs_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationCompletedCallbackArgs_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationCompletedCallbackArgs_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationCompletedCallbackArgs_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationCompletedCallbackArgs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationCompletedCallbackArgs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationCompletedCallbackArgs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationCompletedCallbackArgs_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationCompletedCallback_INTERFACE_DEFINED__ +#define __IInstallationCompletedCallback_INTERFACE_DEFINED__ + +/* interface IInstallationCompletedCallback */ +/* [unique][uuid][nonextensible][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationCompletedCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("45f4f6f3-d602-4f98-9a8a-3efa152ad2d3") + IInstallationCompletedCallback : public IUnknown + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Invoke( + /* [in] */ __RPC__in_opt IInstallationJob *installationJob, + /* [in] */ __RPC__in_opt IInstallationCompletedCallbackArgs *callbackArgs) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationCompletedCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationCompletedCallback * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationCompletedCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationCompletedCallback * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + __RPC__in IInstallationCompletedCallback * This, + /* [in] */ __RPC__in_opt IInstallationJob *installationJob, + /* [in] */ __RPC__in_opt IInstallationCompletedCallbackArgs *callbackArgs); + + END_INTERFACE + } IInstallationCompletedCallbackVtbl; + + interface IInstallationCompletedCallback + { + CONST_VTBL struct IInstallationCompletedCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationCompletedCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationCompletedCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationCompletedCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationCompletedCallback_Invoke(This,installationJob,callbackArgs) \ + ( (This)->lpVtbl -> Invoke(This,installationJob,callbackArgs) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationCompletedCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationProgressChangedCallbackArgs_INTERFACE_DEFINED__ +#define __IInstallationProgressChangedCallbackArgs_INTERFACE_DEFINED__ + +/* interface IInstallationProgressChangedCallbackArgs */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationProgressChangedCallbackArgs; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("e4f14e1e-689d-4218-a0b9-bc189c484a01") + IInstallationProgressChangedCallbackArgs : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Progress( + /* [retval][out] */ __RPC__deref_out_opt IInstallationProgress **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationProgressChangedCallbackArgsVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationProgressChangedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationProgressChangedCallbackArgs * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationProgressChangedCallbackArgs * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationProgressChangedCallbackArgs * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationProgressChangedCallbackArgs * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationProgressChangedCallbackArgs * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationProgressChangedCallbackArgs * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Progress )( + __RPC__in IInstallationProgressChangedCallbackArgs * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationProgress **retval); + + END_INTERFACE + } IInstallationProgressChangedCallbackArgsVtbl; + + interface IInstallationProgressChangedCallbackArgs + { + CONST_VTBL struct IInstallationProgressChangedCallbackArgsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationProgressChangedCallbackArgs_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationProgressChangedCallbackArgs_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationProgressChangedCallbackArgs_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationProgressChangedCallbackArgs_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationProgressChangedCallbackArgs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationProgressChangedCallbackArgs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationProgressChangedCallbackArgs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInstallationProgressChangedCallbackArgs_get_Progress(This,retval) \ + ( (This)->lpVtbl -> get_Progress(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationProgressChangedCallbackArgs_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationProgressChangedCallback_INTERFACE_DEFINED__ +#define __IInstallationProgressChangedCallback_INTERFACE_DEFINED__ + +/* interface IInstallationProgressChangedCallback */ +/* [unique][uuid][nonextensible][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationProgressChangedCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("e01402d5-f8da-43ba-a012-38894bd048f1") + IInstallationProgressChangedCallback : public IUnknown + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Invoke( + /* [in] */ __RPC__in_opt IInstallationJob *installationJob, + /* [in] */ __RPC__in_opt IInstallationProgressChangedCallbackArgs *callbackArgs) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationProgressChangedCallbackVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationProgressChangedCallback * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationProgressChangedCallback * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationProgressChangedCallback * This); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + __RPC__in IInstallationProgressChangedCallback * This, + /* [in] */ __RPC__in_opt IInstallationJob *installationJob, + /* [in] */ __RPC__in_opt IInstallationProgressChangedCallbackArgs *callbackArgs); + + END_INTERFACE + } IInstallationProgressChangedCallbackVtbl; + + interface IInstallationProgressChangedCallback + { + CONST_VTBL struct IInstallationProgressChangedCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationProgressChangedCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationProgressChangedCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationProgressChangedCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationProgressChangedCallback_Invoke(This,installationJob,callbackArgs) \ + ( (This)->lpVtbl -> Invoke(This,installationJob,callbackArgs) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationProgressChangedCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateInstaller_INTERFACE_DEFINED__ +#define __IUpdateInstaller_INTERFACE_DEFINED__ + +/* interface IUpdateInstaller */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateInstaller; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7b929c68-ccdc-4226-96b1-8724600b54c2") + IUpdateInstaller : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ClientApplicationID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ClientApplicationID( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsForced( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_IsForced( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][restricted][propget][id] */ HRESULT STDMETHODCALLTYPE get_ParentHwnd( + /* [retval][out] */ __RPC__deref_out_opt HWND *retval) = 0; + + virtual /* [helpstring][restricted][propput][id] */ HRESULT STDMETHODCALLTYPE put_ParentHwnd( + /* [unique][in] */ __RPC__in_opt HWND value) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ParentWindow( + /* [unique][in] */ __RPC__in_opt IUnknown *value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ParentWindow( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Updates( + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_Updates( + /* [in] */ __RPC__in_opt IUpdateCollection *value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE BeginInstall( + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IInstallationJob **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE BeginUninstall( + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IInstallationJob **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EndInstall( + /* [in] */ __RPC__in_opt IInstallationJob *value, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EndUninstall( + /* [in] */ __RPC__in_opt IInstallationJob *value, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Install( + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RunWizard( + /* [defaultvalue][unique][in] */ __RPC__in_opt BSTR dialogTitle, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsBusy( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Uninstall( + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AllowSourcePrompts( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AllowSourcePrompts( + /* [in] */ VARIANT_BOOL value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RebootRequiredBeforeInstallation( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateInstallerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateInstaller * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateInstaller * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateInstaller * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateInstaller * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateInstaller * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsForced )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsForced )( + __RPC__in IUpdateInstaller * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentHwnd )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__deref_out_opt HWND *retval); + + /* [helpstring][restricted][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentHwnd )( + __RPC__in IUpdateInstaller * This, + /* [unique][in] */ __RPC__in_opt HWND value); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentWindow )( + __RPC__in IUpdateInstaller * This, + /* [unique][in] */ __RPC__in_opt IUnknown *value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentWindow )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Updates )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in_opt IUpdateCollection *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginInstall )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IInstallationJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginUninstall )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IInstallationJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndInstall )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in_opt IInstallationJob *value, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndUninstall )( + __RPC__in IUpdateInstaller * This, + /* [in] */ __RPC__in_opt IInstallationJob *value, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Install )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RunWizard )( + __RPC__in IUpdateInstaller * This, + /* [defaultvalue][unique][in] */ __RPC__in_opt BSTR dialogTitle, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBusy )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Uninstall )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowSourcePrompts )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowSourcePrompts )( + __RPC__in IUpdateInstaller * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequiredBeforeInstallation )( + __RPC__in IUpdateInstaller * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IUpdateInstallerVtbl; + + interface IUpdateInstaller + { + CONST_VTBL struct IUpdateInstallerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateInstaller_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateInstaller_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateInstaller_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateInstaller_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateInstaller_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateInstaller_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateInstaller_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateInstaller_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateInstaller_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateInstaller_get_IsForced(This,retval) \ + ( (This)->lpVtbl -> get_IsForced(This,retval) ) + +#define IUpdateInstaller_put_IsForced(This,value) \ + ( (This)->lpVtbl -> put_IsForced(This,value) ) + +#define IUpdateInstaller_get_ParentHwnd(This,retval) \ + ( (This)->lpVtbl -> get_ParentHwnd(This,retval) ) + +#define IUpdateInstaller_put_ParentHwnd(This,value) \ + ( (This)->lpVtbl -> put_ParentHwnd(This,value) ) + +#define IUpdateInstaller_put_ParentWindow(This,value) \ + ( (This)->lpVtbl -> put_ParentWindow(This,value) ) + +#define IUpdateInstaller_get_ParentWindow(This,retval) \ + ( (This)->lpVtbl -> get_ParentWindow(This,retval) ) + +#define IUpdateInstaller_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#define IUpdateInstaller_put_Updates(This,value) \ + ( (This)->lpVtbl -> put_Updates(This,value) ) + +#define IUpdateInstaller_BeginInstall(This,onProgressChanged,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginInstall(This,onProgressChanged,onCompleted,state,retval) ) + +#define IUpdateInstaller_BeginUninstall(This,onProgressChanged,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginUninstall(This,onProgressChanged,onCompleted,state,retval) ) + +#define IUpdateInstaller_EndInstall(This,value,retval) \ + ( (This)->lpVtbl -> EndInstall(This,value,retval) ) + +#define IUpdateInstaller_EndUninstall(This,value,retval) \ + ( (This)->lpVtbl -> EndUninstall(This,value,retval) ) + +#define IUpdateInstaller_Install(This,retval) \ + ( (This)->lpVtbl -> Install(This,retval) ) + +#define IUpdateInstaller_RunWizard(This,dialogTitle,retval) \ + ( (This)->lpVtbl -> RunWizard(This,dialogTitle,retval) ) + +#define IUpdateInstaller_get_IsBusy(This,retval) \ + ( (This)->lpVtbl -> get_IsBusy(This,retval) ) + +#define IUpdateInstaller_Uninstall(This,retval) \ + ( (This)->lpVtbl -> Uninstall(This,retval) ) + +#define IUpdateInstaller_get_AllowSourcePrompts(This,retval) \ + ( (This)->lpVtbl -> get_AllowSourcePrompts(This,retval) ) + +#define IUpdateInstaller_put_AllowSourcePrompts(This,value) \ + ( (This)->lpVtbl -> put_AllowSourcePrompts(This,value) ) + +#define IUpdateInstaller_get_RebootRequiredBeforeInstallation(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequiredBeforeInstallation(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateInstaller_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateInstaller2_INTERFACE_DEFINED__ +#define __IUpdateInstaller2_INTERFACE_DEFINED__ + +/* interface IUpdateInstaller2 */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateInstaller2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3442d4fe-224d-4cee-98cf-30e0c4d229e6") + IUpdateInstaller2 : public IUpdateInstaller + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ForceQuiet( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ForceQuiet( + /* [in] */ VARIANT_BOOL value) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateInstaller2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateInstaller2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateInstaller2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateInstaller2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateInstaller2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsForced )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsForced )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentHwnd )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__deref_out_opt HWND *retval); + + /* [helpstring][restricted][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentHwnd )( + __RPC__in IUpdateInstaller2 * This, + /* [unique][in] */ __RPC__in_opt HWND value); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentWindow )( + __RPC__in IUpdateInstaller2 * This, + /* [unique][in] */ __RPC__in_opt IUnknown *value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentWindow )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Updates )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in_opt IUpdateCollection *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginInstall )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IInstallationJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginUninstall )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in_opt IUnknown *onProgressChanged, + /* [in] */ __RPC__in_opt IUnknown *onCompleted, + /* [in] */ VARIANT state, + /* [retval][out] */ __RPC__deref_out_opt IInstallationJob **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndInstall )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in_opt IInstallationJob *value, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndUninstall )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ __RPC__in_opt IInstallationJob *value, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Install )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RunWizard )( + __RPC__in IUpdateInstaller2 * This, + /* [defaultvalue][unique][in] */ __RPC__in_opt BSTR dialogTitle, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsBusy )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Uninstall )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowSourcePrompts )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowSourcePrompts )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ VARIANT_BOOL value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequiredBeforeInstallation )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ForceQuiet )( + __RPC__in IUpdateInstaller2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ForceQuiet )( + __RPC__in IUpdateInstaller2 * This, + /* [in] */ VARIANT_BOOL value); + + END_INTERFACE + } IUpdateInstaller2Vtbl; + + interface IUpdateInstaller2 + { + CONST_VTBL struct IUpdateInstaller2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateInstaller2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateInstaller2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateInstaller2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateInstaller2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateInstaller2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateInstaller2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateInstaller2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateInstaller2_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateInstaller2_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateInstaller2_get_IsForced(This,retval) \ + ( (This)->lpVtbl -> get_IsForced(This,retval) ) + +#define IUpdateInstaller2_put_IsForced(This,value) \ + ( (This)->lpVtbl -> put_IsForced(This,value) ) + +#define IUpdateInstaller2_get_ParentHwnd(This,retval) \ + ( (This)->lpVtbl -> get_ParentHwnd(This,retval) ) + +#define IUpdateInstaller2_put_ParentHwnd(This,value) \ + ( (This)->lpVtbl -> put_ParentHwnd(This,value) ) + +#define IUpdateInstaller2_put_ParentWindow(This,value) \ + ( (This)->lpVtbl -> put_ParentWindow(This,value) ) + +#define IUpdateInstaller2_get_ParentWindow(This,retval) \ + ( (This)->lpVtbl -> get_ParentWindow(This,retval) ) + +#define IUpdateInstaller2_get_Updates(This,retval) \ + ( (This)->lpVtbl -> get_Updates(This,retval) ) + +#define IUpdateInstaller2_put_Updates(This,value) \ + ( (This)->lpVtbl -> put_Updates(This,value) ) + +#define IUpdateInstaller2_BeginInstall(This,onProgressChanged,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginInstall(This,onProgressChanged,onCompleted,state,retval) ) + +#define IUpdateInstaller2_BeginUninstall(This,onProgressChanged,onCompleted,state,retval) \ + ( (This)->lpVtbl -> BeginUninstall(This,onProgressChanged,onCompleted,state,retval) ) + +#define IUpdateInstaller2_EndInstall(This,value,retval) \ + ( (This)->lpVtbl -> EndInstall(This,value,retval) ) + +#define IUpdateInstaller2_EndUninstall(This,value,retval) \ + ( (This)->lpVtbl -> EndUninstall(This,value,retval) ) + +#define IUpdateInstaller2_Install(This,retval) \ + ( (This)->lpVtbl -> Install(This,retval) ) + +#define IUpdateInstaller2_RunWizard(This,dialogTitle,retval) \ + ( (This)->lpVtbl -> RunWizard(This,dialogTitle,retval) ) + +#define IUpdateInstaller2_get_IsBusy(This,retval) \ + ( (This)->lpVtbl -> get_IsBusy(This,retval) ) + +#define IUpdateInstaller2_Uninstall(This,retval) \ + ( (This)->lpVtbl -> Uninstall(This,retval) ) + +#define IUpdateInstaller2_get_AllowSourcePrompts(This,retval) \ + ( (This)->lpVtbl -> get_AllowSourcePrompts(This,retval) ) + +#define IUpdateInstaller2_put_AllowSourcePrompts(This,value) \ + ( (This)->lpVtbl -> put_AllowSourcePrompts(This,value) ) + +#define IUpdateInstaller2_get_RebootRequiredBeforeInstallation(This,retval) \ + ( (This)->lpVtbl -> get_RebootRequiredBeforeInstallation(This,retval) ) + + +#define IUpdateInstaller2_get_ForceQuiet(This,retval) \ + ( (This)->lpVtbl -> get_ForceQuiet(This,retval) ) + +#define IUpdateInstaller2_put_ForceQuiet(This,value) \ + ( (This)->lpVtbl -> put_ForceQuiet(This,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateInstaller2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateSession_INTERFACE_DEFINED__ +#define __IUpdateSession_INTERFACE_DEFINED__ + +/* interface IUpdateSession */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateSession; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("816858a4-260d-4260-933a-2585f1abc76b") + IUpdateSession : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ClientApplicationID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ClientApplicationID( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ReadOnly( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_WebProxy( + /* [retval][out] */ __RPC__deref_out_opt IWebProxy **retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_WebProxy( + /* [unique][in] */ __RPC__in_opt IWebProxy *value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateUpdateSearcher( + /* [retval][out] */ __RPC__deref_out_opt IUpdateSearcher **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateUpdateDownloader( + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloader **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateUpdateInstaller( + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstaller **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateSessionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateSession * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateSession * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateSession * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateSession * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateSession * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateSession * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateSession * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateSession * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateSession * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IUpdateSession * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WebProxy )( + __RPC__in IUpdateSession * This, + /* [retval][out] */ __RPC__deref_out_opt IWebProxy **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WebProxy )( + __RPC__in IUpdateSession * This, + /* [unique][in] */ __RPC__in_opt IWebProxy *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateSearcher )( + __RPC__in IUpdateSession * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateSearcher **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateDownloader )( + __RPC__in IUpdateSession * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloader **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateInstaller )( + __RPC__in IUpdateSession * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstaller **retval); + + END_INTERFACE + } IUpdateSessionVtbl; + + interface IUpdateSession + { + CONST_VTBL struct IUpdateSessionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateSession_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateSession_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateSession_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateSession_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateSession_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateSession_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateSession_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateSession_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateSession_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateSession_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IUpdateSession_get_WebProxy(This,retval) \ + ( (This)->lpVtbl -> get_WebProxy(This,retval) ) + +#define IUpdateSession_put_WebProxy(This,value) \ + ( (This)->lpVtbl -> put_WebProxy(This,value) ) + +#define IUpdateSession_CreateUpdateSearcher(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateSearcher(This,retval) ) + +#define IUpdateSession_CreateUpdateDownloader(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateDownloader(This,retval) ) + +#define IUpdateSession_CreateUpdateInstaller(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateInstaller(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateSession_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateSession2_INTERFACE_DEFINED__ +#define __IUpdateSession2_INTERFACE_DEFINED__ + +/* interface IUpdateSession2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateSession2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("91caf7b0-eb23-49ed-9937-c52d817f46f7") + IUpdateSession2 : public IUpdateSession + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_UserLocale( + /* [retval][out] */ __RPC__out LCID *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_UserLocale( + /* [in] */ LCID lcid) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateSession2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateSession2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateSession2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateSession2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateSession2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateSession2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateSession2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateSession2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateSession2 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WebProxy )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__deref_out_opt IWebProxy **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WebProxy )( + __RPC__in IUpdateSession2 * This, + /* [unique][in] */ __RPC__in_opt IWebProxy *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateSearcher )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateSearcher **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateDownloader )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloader **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateInstaller )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstaller **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserLocale )( + __RPC__in IUpdateSession2 * This, + /* [retval][out] */ __RPC__out LCID *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserLocale )( + __RPC__in IUpdateSession2 * This, + /* [in] */ LCID lcid); + + END_INTERFACE + } IUpdateSession2Vtbl; + + interface IUpdateSession2 + { + CONST_VTBL struct IUpdateSession2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateSession2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateSession2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateSession2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateSession2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateSession2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateSession2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateSession2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateSession2_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateSession2_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateSession2_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IUpdateSession2_get_WebProxy(This,retval) \ + ( (This)->lpVtbl -> get_WebProxy(This,retval) ) + +#define IUpdateSession2_put_WebProxy(This,value) \ + ( (This)->lpVtbl -> put_WebProxy(This,value) ) + +#define IUpdateSession2_CreateUpdateSearcher(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateSearcher(This,retval) ) + +#define IUpdateSession2_CreateUpdateDownloader(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateDownloader(This,retval) ) + +#define IUpdateSession2_CreateUpdateInstaller(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateInstaller(This,retval) ) + + +#define IUpdateSession2_get_UserLocale(This,retval) \ + ( (This)->lpVtbl -> get_UserLocale(This,retval) ) + +#define IUpdateSession2_put_UserLocale(This,lcid) \ + ( (This)->lpVtbl -> put_UserLocale(This,lcid) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateSession2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateSession3_INTERFACE_DEFINED__ +#define __IUpdateSession3_INTERFACE_DEFINED__ + +/* interface IUpdateSession3 */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateSession3; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("918EFD1E-B5D8-4c90-8540-AEB9BDC56F9D") + IUpdateSession3 : public IUpdateSession2 + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CreateUpdateServiceManager( + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceManager2 **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE QueryHistory( + /* [in] */ __RPC__in BSTR criteria, + /* [in] */ LONG startIndex, + /* [in] */ LONG count, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntryCollection **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateSession3Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateSession3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateSession3 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateSession3 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateSession3 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateSession3 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateSession3 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateSession3 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateSession3 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ReadOnly )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_WebProxy )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__deref_out_opt IWebProxy **retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_WebProxy )( + __RPC__in IUpdateSession3 * This, + /* [unique][in] */ __RPC__in_opt IWebProxy *value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateSearcher )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateSearcher **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateDownloader )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateDownloader **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateInstaller )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateInstaller **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_UserLocale )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__out LCID *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_UserLocale )( + __RPC__in IUpdateSession3 * This, + /* [in] */ LCID lcid); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *CreateUpdateServiceManager )( + __RPC__in IUpdateSession3 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceManager2 **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *QueryHistory )( + __RPC__in IUpdateSession3 * This, + /* [in] */ __RPC__in BSTR criteria, + /* [in] */ LONG startIndex, + /* [in] */ LONG count, + /* [retval][out] */ __RPC__deref_out_opt IUpdateHistoryEntryCollection **retval); + + END_INTERFACE + } IUpdateSession3Vtbl; + + interface IUpdateSession3 + { + CONST_VTBL struct IUpdateSession3Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateSession3_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateSession3_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateSession3_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateSession3_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateSession3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateSession3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateSession3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateSession3_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateSession3_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateSession3_get_ReadOnly(This,retval) \ + ( (This)->lpVtbl -> get_ReadOnly(This,retval) ) + +#define IUpdateSession3_get_WebProxy(This,retval) \ + ( (This)->lpVtbl -> get_WebProxy(This,retval) ) + +#define IUpdateSession3_put_WebProxy(This,value) \ + ( (This)->lpVtbl -> put_WebProxy(This,value) ) + +#define IUpdateSession3_CreateUpdateSearcher(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateSearcher(This,retval) ) + +#define IUpdateSession3_CreateUpdateDownloader(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateDownloader(This,retval) ) + +#define IUpdateSession3_CreateUpdateInstaller(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateInstaller(This,retval) ) + + +#define IUpdateSession3_get_UserLocale(This,retval) \ + ( (This)->lpVtbl -> get_UserLocale(This,retval) ) + +#define IUpdateSession3_put_UserLocale(This,lcid) \ + ( (This)->lpVtbl -> put_UserLocale(This,lcid) ) + + +#define IUpdateSession3_CreateUpdateServiceManager(This,retval) \ + ( (This)->lpVtbl -> CreateUpdateServiceManager(This,retval) ) + +#define IUpdateSession3_QueryHistory(This,criteria,startIndex,count,retval) \ + ( (This)->lpVtbl -> QueryHistory(This,criteria,startIndex,count,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateSession3_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateService_INTERFACE_DEFINED__ +#define __IUpdateService_INTERFACE_DEFINED__ + +/* interface IUpdateService */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateService; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("76b3b17e-aed6-4da5-85f0-83587f81abe3") + IUpdateService : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Name( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ContentValidationCert( + /* [retval][out] */ __RPC__out VARIANT *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ExpirationDate( + /* [retval][out] */ __RPC__out DATE *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsManaged( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsRegisteredWithAU( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IssueDate( + /* [retval][out] */ __RPC__out DATE *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_OffersWindowsUpdates( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RedirectUrls( + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServiceID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsScanPackageService( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_CanRegisterWithAU( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServiceUrl( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_SetupPrefix( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateServiceVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateService * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateService * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateService * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateService * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateService * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateService * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateService * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContentValidationCert )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExpirationDate )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsManaged )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsRegisteredWithAU )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IssueDate )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_OffersWindowsUpdates )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectUrls )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsScanPackageService )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRegisterWithAU )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceUrl )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SetupPrefix )( + __RPC__in IUpdateService * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + END_INTERFACE + } IUpdateServiceVtbl; + + interface IUpdateService + { + CONST_VTBL struct IUpdateServiceVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateService_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateService_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateService_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateService_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateService_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateService_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateService_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateService_get_Name(This,retval) \ + ( (This)->lpVtbl -> get_Name(This,retval) ) + +#define IUpdateService_get_ContentValidationCert(This,retval) \ + ( (This)->lpVtbl -> get_ContentValidationCert(This,retval) ) + +#define IUpdateService_get_ExpirationDate(This,retval) \ + ( (This)->lpVtbl -> get_ExpirationDate(This,retval) ) + +#define IUpdateService_get_IsManaged(This,retval) \ + ( (This)->lpVtbl -> get_IsManaged(This,retval) ) + +#define IUpdateService_get_IsRegisteredWithAU(This,retval) \ + ( (This)->lpVtbl -> get_IsRegisteredWithAU(This,retval) ) + +#define IUpdateService_get_IssueDate(This,retval) \ + ( (This)->lpVtbl -> get_IssueDate(This,retval) ) + +#define IUpdateService_get_OffersWindowsUpdates(This,retval) \ + ( (This)->lpVtbl -> get_OffersWindowsUpdates(This,retval) ) + +#define IUpdateService_get_RedirectUrls(This,retval) \ + ( (This)->lpVtbl -> get_RedirectUrls(This,retval) ) + +#define IUpdateService_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateService_get_IsScanPackageService(This,retval) \ + ( (This)->lpVtbl -> get_IsScanPackageService(This,retval) ) + +#define IUpdateService_get_CanRegisterWithAU(This,retval) \ + ( (This)->lpVtbl -> get_CanRegisterWithAU(This,retval) ) + +#define IUpdateService_get_ServiceUrl(This,retval) \ + ( (This)->lpVtbl -> get_ServiceUrl(This,retval) ) + +#define IUpdateService_get_SetupPrefix(This,retval) \ + ( (This)->lpVtbl -> get_SetupPrefix(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateService_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateService2_INTERFACE_DEFINED__ +#define __IUpdateService2_INTERFACE_DEFINED__ + +/* interface IUpdateService2 */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateService2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1518b460-6518-4172-940f-c75883b24ceb") + IUpdateService2 : public IUpdateService + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsDefaultAUService( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateService2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateService2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateService2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateService2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateService2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateService2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateService2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateService2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Name )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ContentValidationCert )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ExpirationDate )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsManaged )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsRegisteredWithAU )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IssueDate )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out DATE *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_OffersWindowsUpdates )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RedirectUrls )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__deref_out_opt IStringCollection **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsScanPackageService )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_CanRegisterWithAU )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceUrl )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_SetupPrefix )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsDefaultAUService )( + __RPC__in IUpdateService2 * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + END_INTERFACE + } IUpdateService2Vtbl; + + interface IUpdateService2 + { + CONST_VTBL struct IUpdateService2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateService2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateService2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateService2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateService2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateService2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateService2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateService2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateService2_get_Name(This,retval) \ + ( (This)->lpVtbl -> get_Name(This,retval) ) + +#define IUpdateService2_get_ContentValidationCert(This,retval) \ + ( (This)->lpVtbl -> get_ContentValidationCert(This,retval) ) + +#define IUpdateService2_get_ExpirationDate(This,retval) \ + ( (This)->lpVtbl -> get_ExpirationDate(This,retval) ) + +#define IUpdateService2_get_IsManaged(This,retval) \ + ( (This)->lpVtbl -> get_IsManaged(This,retval) ) + +#define IUpdateService2_get_IsRegisteredWithAU(This,retval) \ + ( (This)->lpVtbl -> get_IsRegisteredWithAU(This,retval) ) + +#define IUpdateService2_get_IssueDate(This,retval) \ + ( (This)->lpVtbl -> get_IssueDate(This,retval) ) + +#define IUpdateService2_get_OffersWindowsUpdates(This,retval) \ + ( (This)->lpVtbl -> get_OffersWindowsUpdates(This,retval) ) + +#define IUpdateService2_get_RedirectUrls(This,retval) \ + ( (This)->lpVtbl -> get_RedirectUrls(This,retval) ) + +#define IUpdateService2_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateService2_get_IsScanPackageService(This,retval) \ + ( (This)->lpVtbl -> get_IsScanPackageService(This,retval) ) + +#define IUpdateService2_get_CanRegisterWithAU(This,retval) \ + ( (This)->lpVtbl -> get_CanRegisterWithAU(This,retval) ) + +#define IUpdateService2_get_ServiceUrl(This,retval) \ + ( (This)->lpVtbl -> get_ServiceUrl(This,retval) ) + +#define IUpdateService2_get_SetupPrefix(This,retval) \ + ( (This)->lpVtbl -> get_SetupPrefix(This,retval) ) + + +#define IUpdateService2_get_IsDefaultAUService(This,retval) \ + ( (This)->lpVtbl -> get_IsDefaultAUService(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateService2_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateServiceCollection_INTERFACE_DEFINED__ +#define __IUpdateServiceCollection_INTERFACE_DEFINED__ + +/* interface IUpdateServiceCollection */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateServiceCollection; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9b0353aa-0e52-44ff-b8b0-1f7fa0437f88") + IUpdateServiceCollection : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Item( + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get__NewEnum( + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateServiceCollectionVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateServiceCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateServiceCollection * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateServiceCollection * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateServiceCollection * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateServiceCollection * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateServiceCollection * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateServiceCollection * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Item )( + __RPC__in IUpdateServiceCollection * This, + /* [in] */ LONG index, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get__NewEnum )( + __RPC__in IUpdateServiceCollection * This, + /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Count )( + __RPC__in IUpdateServiceCollection * This, + /* [retval][out] */ __RPC__out LONG *retval); + + END_INTERFACE + } IUpdateServiceCollectionVtbl; + + interface IUpdateServiceCollection + { + CONST_VTBL struct IUpdateServiceCollectionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateServiceCollection_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateServiceCollection_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateServiceCollection_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateServiceCollection_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateServiceCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateServiceCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateServiceCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateServiceCollection_get_Item(This,index,retval) \ + ( (This)->lpVtbl -> get_Item(This,index,retval) ) + +#define IUpdateServiceCollection_get__NewEnum(This,retval) \ + ( (This)->lpVtbl -> get__NewEnum(This,retval) ) + +#define IUpdateServiceCollection_get_Count(This,retval) \ + ( (This)->lpVtbl -> get_Count(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateServiceCollection_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateServiceRegistration_INTERFACE_DEFINED__ +#define __IUpdateServiceRegistration_INTERFACE_DEFINED__ + +/* interface IUpdateServiceRegistration */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateServiceRegistration; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("dde02280-12b3-4e0b-937b-6747f6acb286") + IUpdateServiceRegistration : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_RegistrationState( + /* [retval][out] */ __RPC__out UpdateServiceRegistrationState *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ServiceID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_IsPendingRegistrationWithAU( + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; + + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Service( + /* [retval][out] */ __RPC__deref_out_opt IUpdateService2 **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateServiceRegistrationVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateServiceRegistration * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateServiceRegistration * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateServiceRegistration * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateServiceRegistration * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateServiceRegistration * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateServiceRegistration * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateServiceRegistration * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RegistrationState )( + __RPC__in IUpdateServiceRegistration * This, + /* [retval][out] */ __RPC__out UpdateServiceRegistrationState *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ServiceID )( + __RPC__in IUpdateServiceRegistration * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsPendingRegistrationWithAU )( + __RPC__in IUpdateServiceRegistration * This, + /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Service )( + __RPC__in IUpdateServiceRegistration * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService2 **retval); + + END_INTERFACE + } IUpdateServiceRegistrationVtbl; + + interface IUpdateServiceRegistration + { + CONST_VTBL struct IUpdateServiceRegistrationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateServiceRegistration_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateServiceRegistration_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateServiceRegistration_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateServiceRegistration_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateServiceRegistration_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateServiceRegistration_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateServiceRegistration_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateServiceRegistration_get_RegistrationState(This,retval) \ + ( (This)->lpVtbl -> get_RegistrationState(This,retval) ) + +#define IUpdateServiceRegistration_get_ServiceID(This,retval) \ + ( (This)->lpVtbl -> get_ServiceID(This,retval) ) + +#define IUpdateServiceRegistration_get_IsPendingRegistrationWithAU(This,retval) \ + ( (This)->lpVtbl -> get_IsPendingRegistrationWithAU(This,retval) ) + +#define IUpdateServiceRegistration_get_Service(This,retval) \ + ( (This)->lpVtbl -> get_Service(This,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateServiceRegistration_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateServiceManager_INTERFACE_DEFINED__ +#define __IUpdateServiceManager_INTERFACE_DEFINED__ + +/* interface IUpdateServiceManager */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateServiceManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("23857e3c-02ba-44a3-9423-b1c900805f37") + IUpdateServiceManager : public IDispatch + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_Services( + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceCollection **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddService( + /* [in] */ __RPC__in BSTR serviceID, + /* [in] */ __RPC__in BSTR authorizationCabPath, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterServiceWithAU( + /* [in] */ __RPC__in BSTR serviceID) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RemoveService( + /* [in] */ __RPC__in BSTR serviceID) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterServiceWithAU( + /* [in] */ __RPC__in BSTR serviceID) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddScanPackageService( + /* [in] */ __RPC__in BSTR serviceName, + /* [in] */ __RPC__in BSTR scanFileLocation, + /* [defaultvalue][in] */ LONG flags, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **ppService) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetOption( + /* [in] */ __RPC__in BSTR optionName, + /* [in] */ VARIANT optionValue) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateServiceManagerVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateServiceManager * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateServiceManager * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateServiceManager * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateServiceManager * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Services )( + __RPC__in IUpdateServiceManager * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddService )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in BSTR serviceID, + /* [in] */ __RPC__in BSTR authorizationCabPath, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterServiceWithAU )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in BSTR serviceID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RemoveService )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in BSTR serviceID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterServiceWithAU )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in BSTR serviceID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddScanPackageService )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in BSTR serviceName, + /* [in] */ __RPC__in BSTR scanFileLocation, + /* [defaultvalue][in] */ LONG flags, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **ppService); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetOption )( + __RPC__in IUpdateServiceManager * This, + /* [in] */ __RPC__in BSTR optionName, + /* [in] */ VARIANT optionValue); + + END_INTERFACE + } IUpdateServiceManagerVtbl; + + interface IUpdateServiceManager + { + CONST_VTBL struct IUpdateServiceManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateServiceManager_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateServiceManager_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateServiceManager_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateServiceManager_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateServiceManager_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateServiceManager_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateServiceManager_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateServiceManager_get_Services(This,retval) \ + ( (This)->lpVtbl -> get_Services(This,retval) ) + +#define IUpdateServiceManager_AddService(This,serviceID,authorizationCabPath,retval) \ + ( (This)->lpVtbl -> AddService(This,serviceID,authorizationCabPath,retval) ) + +#define IUpdateServiceManager_RegisterServiceWithAU(This,serviceID) \ + ( (This)->lpVtbl -> RegisterServiceWithAU(This,serviceID) ) + +#define IUpdateServiceManager_RemoveService(This,serviceID) \ + ( (This)->lpVtbl -> RemoveService(This,serviceID) ) + +#define IUpdateServiceManager_UnregisterServiceWithAU(This,serviceID) \ + ( (This)->lpVtbl -> UnregisterServiceWithAU(This,serviceID) ) + +#define IUpdateServiceManager_AddScanPackageService(This,serviceName,scanFileLocation,flags,ppService) \ + ( (This)->lpVtbl -> AddScanPackageService(This,serviceName,scanFileLocation,flags,ppService) ) + +#define IUpdateServiceManager_SetOption(This,optionName,optionValue) \ + ( (This)->lpVtbl -> SetOption(This,optionName,optionValue) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateServiceManager_INTERFACE_DEFINED__ */ + + +#ifndef __IUpdateServiceManager2_INTERFACE_DEFINED__ +#define __IUpdateServiceManager2_INTERFACE_DEFINED__ + +/* interface IUpdateServiceManager2 */ +/* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IUpdateServiceManager2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0bb8531d-7e8d-424f-986c-a0b8f60a3e7b") + IUpdateServiceManager2 : public IUpdateServiceManager + { + public: + virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_ClientApplicationID( + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval) = 0; + + virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_ClientApplicationID( + /* [in] */ __RPC__in BSTR value) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE QueryServiceRegistration( + /* [in] */ __RPC__in BSTR serviceID, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceRegistration **retval) = 0; + + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE AddService2( + /* [in] */ __RPC__in BSTR serviceID, + /* [in] */ LONG flags, + /* [in] */ __RPC__in BSTR authorizationCabPath, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceRegistration **retval) = 0; + + }; + +#else /* C style interface */ + + typedef struct IUpdateServiceManager2Vtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IUpdateServiceManager2 * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IUpdateServiceManager2 * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IUpdateServiceManager2 * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IUpdateServiceManager2 * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Services )( + __RPC__in IUpdateServiceManager2 * This, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceCollection **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddService )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceID, + /* [in] */ __RPC__in BSTR authorizationCabPath, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterServiceWithAU )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RemoveService )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterServiceWithAU )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceID); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddScanPackageService )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceName, + /* [in] */ __RPC__in BSTR scanFileLocation, + /* [defaultvalue][in] */ LONG flags, + /* [retval][out] */ __RPC__deref_out_opt IUpdateService **ppService); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetOption )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR optionName, + /* [in] */ VARIANT optionValue); + + /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( + __RPC__in IUpdateServiceManager2 * This, + /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); + + /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR value); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *QueryServiceRegistration )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceID, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceRegistration **retval); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *AddService2 )( + __RPC__in IUpdateServiceManager2 * This, + /* [in] */ __RPC__in BSTR serviceID, + /* [in] */ LONG flags, + /* [in] */ __RPC__in BSTR authorizationCabPath, + /* [retval][out] */ __RPC__deref_out_opt IUpdateServiceRegistration **retval); + + END_INTERFACE + } IUpdateServiceManager2Vtbl; + + interface IUpdateServiceManager2 + { + CONST_VTBL struct IUpdateServiceManager2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IUpdateServiceManager2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IUpdateServiceManager2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IUpdateServiceManager2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IUpdateServiceManager2_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IUpdateServiceManager2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IUpdateServiceManager2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IUpdateServiceManager2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IUpdateServiceManager2_get_Services(This,retval) \ + ( (This)->lpVtbl -> get_Services(This,retval) ) + +#define IUpdateServiceManager2_AddService(This,serviceID,authorizationCabPath,retval) \ + ( (This)->lpVtbl -> AddService(This,serviceID,authorizationCabPath,retval) ) + +#define IUpdateServiceManager2_RegisterServiceWithAU(This,serviceID) \ + ( (This)->lpVtbl -> RegisterServiceWithAU(This,serviceID) ) + +#define IUpdateServiceManager2_RemoveService(This,serviceID) \ + ( (This)->lpVtbl -> RemoveService(This,serviceID) ) + +#define IUpdateServiceManager2_UnregisterServiceWithAU(This,serviceID) \ + ( (This)->lpVtbl -> UnregisterServiceWithAU(This,serviceID) ) + +#define IUpdateServiceManager2_AddScanPackageService(This,serviceName,scanFileLocation,flags,ppService) \ + ( (This)->lpVtbl -> AddScanPackageService(This,serviceName,scanFileLocation,flags,ppService) ) + +#define IUpdateServiceManager2_SetOption(This,optionName,optionValue) \ + ( (This)->lpVtbl -> SetOption(This,optionName,optionValue) ) + + +#define IUpdateServiceManager2_get_ClientApplicationID(This,retval) \ + ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) + +#define IUpdateServiceManager2_put_ClientApplicationID(This,value) \ + ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) + +#define IUpdateServiceManager2_QueryServiceRegistration(This,serviceID,retval) \ + ( (This)->lpVtbl -> QueryServiceRegistration(This,serviceID,retval) ) + +#define IUpdateServiceManager2_AddService2(This,serviceID,flags,authorizationCabPath,retval) \ + ( (This)->lpVtbl -> AddService2(This,serviceID,flags,authorizationCabPath,retval) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IUpdateServiceManager2_INTERFACE_DEFINED__ */ + + +#ifndef __IInstallationAgent_INTERFACE_DEFINED__ +#define __IInstallationAgent_INTERFACE_DEFINED__ + +/* interface IInstallationAgent */ +/* [unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ + + +EXTERN_C const IID IID_IInstallationAgent; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("925cbc18-a2ea-4648-bf1c-ec8badcfe20a") + IInstallationAgent : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RecordInstallationResult( + /* [in] */ __RPC__in BSTR installationResultCookie, + /* [in] */ LONG hresult, + /* [in] */ __RPC__in_opt IStringCollection *extendedReportingData) = 0; + + }; + +#else /* C style interface */ + + typedef struct IInstallationAgentVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + __RPC__in IInstallationAgent * This, + /* [in] */ __RPC__in REFIID riid, + /* [annotation][iid_is][out] */ + __RPC__deref_out void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + __RPC__in IInstallationAgent * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + __RPC__in IInstallationAgent * This); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( + __RPC__in IInstallationAgent * This, + /* [out] */ __RPC__out UINT *pctinfo); + + HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( + __RPC__in IInstallationAgent * This, + /* [in] */ UINT iTInfo, + /* [in] */ LCID lcid, + /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); + + HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( + __RPC__in IInstallationAgent * This, + /* [in] */ __RPC__in REFIID riid, + /* [size_is][in] */ __RPC__in_ecount_full(cNames) LPOLESTR *rgszNames, + /* [range][in] */ __RPC__in_range(0,16384) UINT cNames, + /* [in] */ LCID lcid, + /* [size_is][out] */ __RPC__out_ecount_full(cNames) DISPID *rgDispId); + + /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )( + IInstallationAgent * This, + /* [in] */ DISPID dispIdMember, + /* [in] */ REFIID riid, + /* [in] */ LCID lcid, + /* [in] */ WORD wFlags, + /* [out][in] */ DISPPARAMS *pDispParams, + /* [out] */ VARIANT *pVarResult, + /* [out] */ EXCEPINFO *pExcepInfo, + /* [out] */ UINT *puArgErr); + + /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RecordInstallationResult )( + __RPC__in IInstallationAgent * This, + /* [in] */ __RPC__in BSTR installationResultCookie, + /* [in] */ LONG hresult, + /* [in] */ __RPC__in_opt IStringCollection *extendedReportingData); + + END_INTERFACE + } IInstallationAgentVtbl; + + interface IInstallationAgent + { + CONST_VTBL struct IInstallationAgentVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IInstallationAgent_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IInstallationAgent_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IInstallationAgent_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IInstallationAgent_GetTypeInfoCount(This,pctinfo) \ + ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) + +#define IInstallationAgent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ + ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) + +#define IInstallationAgent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ + ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) + +#define IInstallationAgent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ + ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) + + +#define IInstallationAgent_RecordInstallationResult(This,installationResultCookie,hresult,extendedReportingData) \ + ( (This)->lpVtbl -> RecordInstallationResult(This,installationResultCookie,hresult,extendedReportingData) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IInstallationAgent_INTERFACE_DEFINED__ */ + + + +#ifndef __WUApiLib_LIBRARY_DEFINED__ +#define __WUApiLib_LIBRARY_DEFINED__ + +/* library WUApiLib */ +/* [helpstring][version][uuid] */ + +typedef /* [v1_enum][helpstring][public] */ +enum tagUpdateLockdownOption + { uloForWebsiteAccess = 0x1 + } UpdateLockdownOption; + +typedef /* [v1_enum][helpstring][public] */ +enum tagAddServiceFlag + { asfAllowPendingRegistration = 0x1, + asfAllowOnlineRegistration = 0x2, + asfRegisterServiceWithAU = 0x4 + } AddServiceFlag; + +typedef /* [v1_enum][helpstring][public] */ +enum tagUpdateServiceOption + { usoNonVolatileService = 0x1 + } UpdateServiceOption; + + + + + + + + + + + + + + + + + + + + + + + + +EXTERN_C const IID LIBID_WUApiLib; + +EXTERN_C const CLSID CLSID_StringCollection; + +#ifdef __cplusplus + +class DECLSPEC_UUID("72C97D74-7C3B-40AE-B77D-ABDB22EBA6FB") +StringCollection; +#endif + +EXTERN_C const CLSID CLSID_UpdateSearcher; + +#ifdef __cplusplus + +class DECLSPEC_UUID("B699E5E8-67FF-4177-88B0-3684A3388BFB") +UpdateSearcher; +#endif + +EXTERN_C const CLSID CLSID_WebProxy; + +#ifdef __cplusplus + +class DECLSPEC_UUID("650503cf-9108-4ddc-a2ce-6c2341e1c582") +WebProxy; +#endif + +EXTERN_C const CLSID CLSID_SystemInformation; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C01B9BA0-BEA7-41BA-B604-D0A36F469133") +SystemInformation; +#endif + +EXTERN_C const CLSID CLSID_WindowsUpdateAgentInfo; + +#ifdef __cplusplus + +class DECLSPEC_UUID("C2E88C2F-6F5B-4AAA-894B-55C847AD3A2D") +WindowsUpdateAgentInfo; +#endif + +EXTERN_C const CLSID CLSID_AutomaticUpdates; + +#ifdef __cplusplus + +class DECLSPEC_UUID("BFE18E9C-6D87-4450-B37C-E02F0B373803") +AutomaticUpdates; +#endif + +EXTERN_C const CLSID CLSID_UpdateCollection; + +#ifdef __cplusplus + +class DECLSPEC_UUID("13639463-00DB-4646-803D-528026140D88") +UpdateCollection; +#endif + +EXTERN_C const CLSID CLSID_UpdateDownloader; + +#ifdef __cplusplus + +class DECLSPEC_UUID("5BAF654A-5A07-4264-A255-9FF54C7151E7") +UpdateDownloader; +#endif + +EXTERN_C const CLSID CLSID_UpdateInstaller; + +#ifdef __cplusplus + +class DECLSPEC_UUID("D2E0FE7F-D23E-48E1-93C0-6FA8CC346474") +UpdateInstaller; +#endif + +EXTERN_C const CLSID CLSID_UpdateSession; + +#ifdef __cplusplus + +class DECLSPEC_UUID("4CB43D7F-7EEE-4906-8698-60DA1C38F2FE") +UpdateSession; +#endif + +EXTERN_C const CLSID CLSID_UpdateServiceManager; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F8D253D9-89A4-4DAA-87B6-1168369F0B21") +UpdateServiceManager; +#endif + +EXTERN_C const CLSID CLSID_InstallationAgent; + +#ifdef __cplusplus + +class DECLSPEC_UUID("317E92FC-1679-46FD-A0B5-F08914DD8623") +InstallationAgent; +#endif +#endif /* __WUApiLib_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +unsigned long __RPC_USER BSTR_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in BSTR * ); +unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * ); +unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * ); +void __RPC_USER BSTR_UserFree( __RPC__in unsigned long *, __RPC__in BSTR * ); + +unsigned long __RPC_USER HWND_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in HWND * ); +unsigned char * __RPC_USER HWND_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * ); +unsigned char * __RPC_USER HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * ); +void __RPC_USER HWND_UserFree( __RPC__in unsigned long *, __RPC__in HWND * ); + +unsigned long __RPC_USER VARIANT_UserSize( __RPC__in unsigned long *, unsigned long , __RPC__in VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserMarshal( __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * ); +unsigned char * __RPC_USER VARIANT_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * ); +void __RPC_USER VARIANT_UserFree( __RPC__in unsigned long *, __RPC__in VARIANT * ); + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + + diff --git a/include/wuerror.h b/include/wuerror.h new file mode 100644 index 0000000..af6defe --- /dev/null +++ b/include/wuerror.h @@ -0,0 +1,2581 @@ +/*************************************************************************** +* * +* wuerror.mc -- error code definitions for Windows Update. * +* * +* Copyright (c) Microsoft Corporation. All rights reserved. * +* * +***************************************************************************/ +#ifndef _WUERROR_ +#define _WUERROR_ + +#if defined (_MSC_VER) && (_MSC_VER >= 1020) && !defined(__midl) +#pragma once +#endif + +#ifdef RC_INVOKED +#define _HRESULT_TYPEDEF_(_sc) _sc +#else // RC_INVOKED +#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc) +#endif // RC_INVOKED + + +/////////////////////////////////////////////////////////////////////////////// +// Windows Update Success Codes +/////////////////////////////////////////////////////////////////////////////// +// +// Values are 32 bit values laid out as follows: +// +// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +// +---+-+-+-----------------------+-------------------------------+ +// |Sev|C|R| Facility | Code | +// +---+-+-+-----------------------+-------------------------------+ +// +// where +// +// Sev - is the severity code +// +// 00 - Success +// 01 - Informational +// 10 - Warning +// 11 - Error +// +// C - is the Customer code flag +// +// R - is a reserved bit +// +// Facility - is the facility code +// +// Code - is the facility's status code +// +// +// Define the facility codes +// + + +// +// Define the severity codes +// + + +// +// MessageId: WU_S_SERVICE_STOP +// +// MessageText: +// +// Windows Update Agent was stopped successfully. +// +#define WU_S_SERVICE_STOP _HRESULT_TYPEDEF_(0x00240001L) + +// +// MessageId: WU_S_SELFUPDATE +// +// MessageText: +// +// Windows Update Agent updated itself. +// +#define WU_S_SELFUPDATE _HRESULT_TYPEDEF_(0x00240002L) + +// +// MessageId: WU_S_UPDATE_ERROR +// +// MessageText: +// +// Operation completed successfully but there were errors applying the updates. +// +#define WU_S_UPDATE_ERROR _HRESULT_TYPEDEF_(0x00240003L) + +// +// MessageId: WU_S_MARKED_FOR_DISCONNECT +// +// MessageText: +// +// A callback was marked to be disconnected later because the request to disconnect the operation came while a callback was executing. +// +#define WU_S_MARKED_FOR_DISCONNECT _HRESULT_TYPEDEF_(0x00240004L) + +// +// MessageId: WU_S_REBOOT_REQUIRED +// +// MessageText: +// +// The system must be restarted to complete installation of the update. +// +#define WU_S_REBOOT_REQUIRED _HRESULT_TYPEDEF_(0x00240005L) + +// +// MessageId: WU_S_ALREADY_INSTALLED +// +// MessageText: +// +// The update to be installed is already installed on the system. +// +#define WU_S_ALREADY_INSTALLED _HRESULT_TYPEDEF_(0x00240006L) + +// +// MessageId: WU_S_ALREADY_UNINSTALLED +// +// MessageText: +// +// The update to be removed is not installed on the system. +// +#define WU_S_ALREADY_UNINSTALLED _HRESULT_TYPEDEF_(0x00240007L) + +// +// MessageId: WU_S_ALREADY_DOWNLOADED +// +// MessageText: +// +// The update to be downloaded has already been downloaded. +// +#define WU_S_ALREADY_DOWNLOADED _HRESULT_TYPEDEF_(0x00240008L) + +// +// MessageId: WU_S_UH_INSTALLSTILLPENDING +// +// MessageText: +// +// The installation operation for the update is still in progress. +// +#define WU_S_UH_INSTALLSTILLPENDING _HRESULT_TYPEDEF_(0x00242015L) + +/////////////////////////////////////////////////////////////////////////////// +// Windows Update Error Codes +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_NO_SERVICE +// +// MessageText: +// +// Windows Update Agent was unable to provide the service. +// +#define WU_E_NO_SERVICE _HRESULT_TYPEDEF_(0x80240001L) + +// +// MessageId: WU_E_MAX_CAPACITY_REACHED +// +// MessageText: +// +// The maximum capacity of the service was exceeded. +// +#define WU_E_MAX_CAPACITY_REACHED _HRESULT_TYPEDEF_(0x80240002L) + +// +// MessageId: WU_E_UNKNOWN_ID +// +// MessageText: +// +// An ID cannot be found. +// +#define WU_E_UNKNOWN_ID _HRESULT_TYPEDEF_(0x80240003L) + +// +// MessageId: WU_E_NOT_INITIALIZED +// +// MessageText: +// +// The object could not be initialized. +// +#define WU_E_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x80240004L) + +// +// MessageId: WU_E_RANGEOVERLAP +// +// MessageText: +// +// The update handler requested a byte range overlapping a previously requested range. +// +#define WU_E_RANGEOVERLAP _HRESULT_TYPEDEF_(0x80240005L) + +// +// MessageId: WU_E_TOOMANYRANGES +// +// MessageText: +// +// The requested number of byte ranges exceeds the maximum number (2^31 - 1). +// +#define WU_E_TOOMANYRANGES _HRESULT_TYPEDEF_(0x80240006L) + +// +// MessageId: WU_E_INVALIDINDEX +// +// MessageText: +// +// The index to a collection was invalid. +// +#define WU_E_INVALIDINDEX _HRESULT_TYPEDEF_(0x80240007L) + +// +// MessageId: WU_E_ITEMNOTFOUND +// +// MessageText: +// +// The key for the item queried could not be found. +// +#define WU_E_ITEMNOTFOUND _HRESULT_TYPEDEF_(0x80240008L) + +// +// MessageId: WU_E_OPERATIONINPROGRESS +// +// MessageText: +// +// Another conflicting operation was in progress. Some operations such as installation cannot be performed twice simultaneously. +// +#define WU_E_OPERATIONINPROGRESS _HRESULT_TYPEDEF_(0x80240009L) + +// +// MessageId: WU_E_COULDNOTCANCEL +// +// MessageText: +// +// Cancellation of the operation was not allowed. +// +#define WU_E_COULDNOTCANCEL _HRESULT_TYPEDEF_(0x8024000AL) + +// +// MessageId: WU_E_CALL_CANCELLED +// +// MessageText: +// +// Operation was cancelled. +// +#define WU_E_CALL_CANCELLED _HRESULT_TYPEDEF_(0x8024000BL) + +// +// MessageId: WU_E_NOOP +// +// MessageText: +// +// No operation was required. +// +#define WU_E_NOOP _HRESULT_TYPEDEF_(0x8024000CL) + +// +// MessageId: WU_E_XML_MISSINGDATA +// +// MessageText: +// +// Windows Update Agent could not find required information in the update's XML data. +// +#define WU_E_XML_MISSINGDATA _HRESULT_TYPEDEF_(0x8024000DL) + +// +// MessageId: WU_E_XML_INVALID +// +// MessageText: +// +// Windows Update Agent found invalid information in the update's XML data. +// +#define WU_E_XML_INVALID _HRESULT_TYPEDEF_(0x8024000EL) + +// +// MessageId: WU_E_CYCLE_DETECTED +// +// MessageText: +// +// Circular update relationships were detected in the metadata. +// +#define WU_E_CYCLE_DETECTED _HRESULT_TYPEDEF_(0x8024000FL) + +// +// MessageId: WU_E_TOO_DEEP_RELATION +// +// MessageText: +// +// Update relationships too deep to evaluate were evaluated. +// +#define WU_E_TOO_DEEP_RELATION _HRESULT_TYPEDEF_(0x80240010L) + +// +// MessageId: WU_E_INVALID_RELATIONSHIP +// +// MessageText: +// +// An invalid update relationship was detected. +// +#define WU_E_INVALID_RELATIONSHIP _HRESULT_TYPEDEF_(0x80240011L) + +// +// MessageId: WU_E_REG_VALUE_INVALID +// +// MessageText: +// +// An invalid registry value was read. +// +#define WU_E_REG_VALUE_INVALID _HRESULT_TYPEDEF_(0x80240012L) + +// +// MessageId: WU_E_DUPLICATE_ITEM +// +// MessageText: +// +// Operation tried to add a duplicate item to a list. +// +#define WU_E_DUPLICATE_ITEM _HRESULT_TYPEDEF_(0x80240013L) + +// +// MessageId: WU_E_INVALID_INSTALL_REQUESTED +// +// MessageText: +// +// Updates requested for install are not installable by caller. +// +#define WU_E_INVALID_INSTALL_REQUESTED _HRESULT_TYPEDEF_(0x80240014L) + +// +// MessageId: WU_E_INSTALL_NOT_ALLOWED +// +// MessageText: +// +// Operation tried to install while another installation was in progress or the system was pending a mandatory restart. +// +#define WU_E_INSTALL_NOT_ALLOWED _HRESULT_TYPEDEF_(0x80240016L) + +// +// MessageId: WU_E_NOT_APPLICABLE +// +// MessageText: +// +// Operation was not performed because there are no applicable updates. +// +#define WU_E_NOT_APPLICABLE _HRESULT_TYPEDEF_(0x80240017L) + +// +// MessageId: WU_E_NO_USERTOKEN +// +// MessageText: +// +// Operation failed because a required user token is missing. +// +#define WU_E_NO_USERTOKEN _HRESULT_TYPEDEF_(0x80240018L) + +// +// MessageId: WU_E_EXCLUSIVE_INSTALL_CONFLICT +// +// MessageText: +// +// An exclusive update cannot be installed with other updates at the same time. +// +#define WU_E_EXCLUSIVE_INSTALL_CONFLICT _HRESULT_TYPEDEF_(0x80240019L) + +// +// MessageId: WU_E_POLICY_NOT_SET +// +// MessageText: +// +// A policy value was not set. +// +#define WU_E_POLICY_NOT_SET _HRESULT_TYPEDEF_(0x8024001AL) + +// +// MessageId: WU_E_SELFUPDATE_IN_PROGRESS +// +// MessageText: +// +// The operation could not be performed because the Windows Update Agent is self-updating. +// +#define WU_E_SELFUPDATE_IN_PROGRESS _HRESULT_TYPEDEF_(0x8024001BL) + +// +// MessageId: WU_E_INVALID_UPDATE +// +// MessageText: +// +// An update contains invalid metadata. +// +#define WU_E_INVALID_UPDATE _HRESULT_TYPEDEF_(0x8024001DL) + +// +// MessageId: WU_E_SERVICE_STOP +// +// MessageText: +// +// Operation did not complete because the service or system was being shut down. +// +#define WU_E_SERVICE_STOP _HRESULT_TYPEDEF_(0x8024001EL) + +// +// MessageId: WU_E_NO_CONNECTION +// +// MessageText: +// +// Operation did not complete because the network connection was unavailable. +// +#define WU_E_NO_CONNECTION _HRESULT_TYPEDEF_(0x8024001FL) + +// +// MessageId: WU_E_NO_INTERACTIVE_USER +// +// MessageText: +// +// Operation did not complete because there is no logged-on interactive user. +// +#define WU_E_NO_INTERACTIVE_USER _HRESULT_TYPEDEF_(0x80240020L) + +// +// MessageId: WU_E_TIME_OUT +// +// MessageText: +// +// Operation did not complete because it timed out. +// +#define WU_E_TIME_OUT _HRESULT_TYPEDEF_(0x80240021L) + +// +// MessageId: WU_E_ALL_UPDATES_FAILED +// +// MessageText: +// +// Operation failed for all the updates. +// +#define WU_E_ALL_UPDATES_FAILED _HRESULT_TYPEDEF_(0x80240022L) + +// +// MessageId: WU_E_EULAS_DECLINED +// +// MessageText: +// +// The license terms for all updates were declined. +// +#define WU_E_EULAS_DECLINED _HRESULT_TYPEDEF_(0x80240023L) + +// +// MessageId: WU_E_NO_UPDATE +// +// MessageText: +// +// There are no updates. +// +#define WU_E_NO_UPDATE _HRESULT_TYPEDEF_(0x80240024L) + +// +// MessageId: WU_E_USER_ACCESS_DISABLED +// +// MessageText: +// +// Group Policy settings prevented access to Windows Update. +// +#define WU_E_USER_ACCESS_DISABLED _HRESULT_TYPEDEF_(0x80240025L) + +// +// MessageId: WU_E_INVALID_UPDATE_TYPE +// +// MessageText: +// +// The type of update is invalid. +// +#define WU_E_INVALID_UPDATE_TYPE _HRESULT_TYPEDEF_(0x80240026L) + +// +// MessageId: WU_E_URL_TOO_LONG +// +// MessageText: +// +// The URL exceeded the maximum length. +// +#define WU_E_URL_TOO_LONG _HRESULT_TYPEDEF_(0x80240027L) + +// +// MessageId: WU_E_UNINSTALL_NOT_ALLOWED +// +// MessageText: +// +// The update could not be uninstalled because the request did not originate from a WSUS server. +// +#define WU_E_UNINSTALL_NOT_ALLOWED _HRESULT_TYPEDEF_(0x80240028L) + +// +// MessageId: WU_E_INVALID_PRODUCT_LICENSE +// +// MessageText: +// +// Search may have missed some updates before there is an unlicensed application on the system. +// +#define WU_E_INVALID_PRODUCT_LICENSE _HRESULT_TYPEDEF_(0x80240029L) + +// +// MessageId: WU_E_MISSING_HANDLER +// +// MessageText: +// +// A component required to detect applicable updates was missing. +// +#define WU_E_MISSING_HANDLER _HRESULT_TYPEDEF_(0x8024002AL) + +// +// MessageId: WU_E_LEGACYSERVER +// +// MessageText: +// +// An operation did not complete because it requires a newer version of server. +// +#define WU_E_LEGACYSERVER _HRESULT_TYPEDEF_(0x8024002BL) + +// +// MessageId: WU_E_BIN_SOURCE_ABSENT +// +// MessageText: +// +// A delta-compressed update could not be installed because it required the source. +// +#define WU_E_BIN_SOURCE_ABSENT _HRESULT_TYPEDEF_(0x8024002CL) + +// +// MessageId: WU_E_SOURCE_ABSENT +// +// MessageText: +// +// A full-file update could not be installed because it required the source. +// +#define WU_E_SOURCE_ABSENT _HRESULT_TYPEDEF_(0x8024002DL) + +// +// MessageId: WU_E_WU_DISABLED +// +// MessageText: +// +// Access to an unmanaged server is not allowed. +// +#define WU_E_WU_DISABLED _HRESULT_TYPEDEF_(0x8024002EL) + +// +// MessageId: WU_E_CALL_CANCELLED_BY_POLICY +// +// MessageText: +// +// Operation did not complete because the DisableWindowsUpdateAccess policy was set. +// +#define WU_E_CALL_CANCELLED_BY_POLICY _HRESULT_TYPEDEF_(0x8024002FL) + +// +// MessageId: WU_E_INVALID_PROXY_SERVER +// +// MessageText: +// +// The format of the proxy list was invalid. +// +#define WU_E_INVALID_PROXY_SERVER _HRESULT_TYPEDEF_(0x80240030L) + +// +// MessageId: WU_E_INVALID_FILE +// +// MessageText: +// +// The file is in the wrong format. +// +#define WU_E_INVALID_FILE _HRESULT_TYPEDEF_(0x80240031L) + +// +// MessageId: WU_E_INVALID_CRITERIA +// +// MessageText: +// +// The search criteria string was invalid. +// +#define WU_E_INVALID_CRITERIA _HRESULT_TYPEDEF_(0x80240032L) + +// +// MessageId: WU_E_EULA_UNAVAILABLE +// +// MessageText: +// +// License terms could not be downloaded. +// +#define WU_E_EULA_UNAVAILABLE _HRESULT_TYPEDEF_(0x80240033L) + +// +// MessageId: WU_E_DOWNLOAD_FAILED +// +// MessageText: +// +// Update failed to download. +// +#define WU_E_DOWNLOAD_FAILED _HRESULT_TYPEDEF_(0x80240034L) + +// +// MessageId: WU_E_UPDATE_NOT_PROCESSED +// +// MessageText: +// +// The update was not processed. +// +#define WU_E_UPDATE_NOT_PROCESSED _HRESULT_TYPEDEF_(0x80240035L) + +// +// MessageId: WU_E_INVALID_OPERATION +// +// MessageText: +// +// The object's current state did not allow the operation. +// +#define WU_E_INVALID_OPERATION _HRESULT_TYPEDEF_(0x80240036L) + +// +// MessageId: WU_E_NOT_SUPPORTED +// +// MessageText: +// +// The functionality for the operation is not supported. +// +#define WU_E_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80240037L) + +// +// MessageId: WU_E_WINHTTP_INVALID_FILE +// +// MessageText: +// +// The downloaded file has an unexpected content type. +// +#define WU_E_WINHTTP_INVALID_FILE _HRESULT_TYPEDEF_(0x80240038L) + +// +// MessageId: WU_E_TOO_MANY_RESYNC +// +// MessageText: +// +// Agent is asked by server to resync too many times. +// +#define WU_E_TOO_MANY_RESYNC _HRESULT_TYPEDEF_(0x80240039L) + +// +// MessageId: WU_E_NO_SERVER_CORE_SUPPORT +// +// MessageText: +// +// WUA API method does not run on Server Core installation. +// +#define WU_E_NO_SERVER_CORE_SUPPORT _HRESULT_TYPEDEF_(0x80240040L) + +// +// MessageId: WU_E_SYSPREP_IN_PROGRESS +// +// MessageText: +// +// Service is not available while sysprep is running. +// +#define WU_E_SYSPREP_IN_PROGRESS _HRESULT_TYPEDEF_(0x80240041L) + +// +// MessageId: WU_E_UNKNOWN_SERVICE +// +// MessageText: +// +// The update service is no longer registered with AU. +// +#define WU_E_UNKNOWN_SERVICE _HRESULT_TYPEDEF_(0x80240042L) + +// +// MessageId: WU_E_NO_UI_SUPPORT +// +// MessageText: +// +// There is no support for WUA UI. +// +#define WU_E_NO_UI_SUPPORT _HRESULT_TYPEDEF_(0x80240043L) + +// +// MessageId: WU_E_PER_MACHINE_UPDATE_ACCESS_DENIED +// +// MessageText: +// +// Only administrators can perform this operation on per-machine updates. +// +#define WU_E_PER_MACHINE_UPDATE_ACCESS_DENIED _HRESULT_TYPEDEF_(0x80240044L) + +// +// MessageId: WU_E_UNSUPPORTED_SEARCHSCOPE +// +// MessageText: +// +// A search was attempted with a scope that is not currently supported for this type of search. +// +#define WU_E_UNSUPPORTED_SEARCHSCOPE _HRESULT_TYPEDEF_(0x80240045L) + +// +// MessageId: WU_E_BAD_FILE_URL +// +// MessageText: +// +// The URL does not point to a file. +// +#define WU_E_BAD_FILE_URL _HRESULT_TYPEDEF_(0x80240046L) + +// +// MessageId: WU_E_NOTSUPPORTED +// +// MessageText: +// +// The operation requested is not supported. +// +#define WU_E_NOTSUPPORTED _HRESULT_TYPEDEF_(0x80240047L) + +// +// MessageId: WU_E_INVALID_NOTIFICATION_INFO +// +// MessageText: +// +// The featured update notification info returned by the server is invalid. +// +#define WU_E_INVALID_NOTIFICATION_INFO _HRESULT_TYPEDEF_(0x80240048L) + +// +// MessageId: WU_E_UNEXPECTED +// +// MessageText: +// +// An operation failed due to reasons not covered by another error code. +// +#define WU_E_UNEXPECTED _HRESULT_TYPEDEF_(0x80240FFFL) + +/////////////////////////////////////////////////////////////////////////////// +// Windows Installer minor errors +// +// The following errors are used to indicate that part of a search failed for +// MSI problems. Another part of the search may successfully return updates. +// All MSI minor codes should share the same error code range so that the caller +// tell that they are related to Windows Installer. +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_MSI_WRONG_VERSION +// +// MessageText: +// +// Search may have missed some updates because the Windows Installer is less than version 3.1. +// +#define WU_E_MSI_WRONG_VERSION _HRESULT_TYPEDEF_(0x80241001L) + +// +// MessageId: WU_E_MSI_NOT_CONFIGURED +// +// MessageText: +// +// Search may have missed some updates because the Windows Installer is not configured. +// +#define WU_E_MSI_NOT_CONFIGURED _HRESULT_TYPEDEF_(0x80241002L) + +// +// MessageId: WU_E_MSP_DISABLED +// +// MessageText: +// +// Search may have missed some updates because policy has disabled Windows Installer patching. +// +#define WU_E_MSP_DISABLED _HRESULT_TYPEDEF_(0x80241003L) + +// +// MessageId: WU_E_MSI_WRONG_APP_CONTEXT +// +// MessageText: +// +// An update could not be applied because the application is installed per-user. +// +#define WU_E_MSI_WRONG_APP_CONTEXT _HRESULT_TYPEDEF_(0x80241004L) + +// +// MessageId: WU_E_MSP_UNEXPECTED +// +// MessageText: +// +// Search may have missed some updates because there was a failure of the Windows Installer. +// +#define WU_E_MSP_UNEXPECTED _HRESULT_TYPEDEF_(0x80241FFFL) + +/////////////////////////////////////////////////////////////////////////////// +// Protocol Talker errors +// +// The following map to SOAPCLIENT_ERRORs from atlsoap.h. These errors +// are obtained from calling GetClientError() on the CClientWebService +// object. +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_PT_SOAPCLIENT_BASE +// +// MessageText: +// +// WU_E_PT_SOAPCLIENT_* error codes map to the SOAPCLIENT_ERROR enum of the ATL Server Library. +// +#define WU_E_PT_SOAPCLIENT_BASE _HRESULT_TYPEDEF_(0x80244000L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_INITIALIZE +// +// MessageText: +// +// Same as SOAPCLIENT_INITIALIZE_ERROR - initialization of the SOAP client failed, possibly because of an MSXML installation failure. +// +#define WU_E_PT_SOAPCLIENT_INITIALIZE _HRESULT_TYPEDEF_(0x80244001L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_OUTOFMEMORY +// +// MessageText: +// +// Same as SOAPCLIENT_OUTOFMEMORY - SOAP client failed because it ran out of memory. +// +#define WU_E_PT_SOAPCLIENT_OUTOFMEMORY _HRESULT_TYPEDEF_(0x80244002L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_GENERATE +// +// MessageText: +// +// Same as SOAPCLIENT_GENERATE_ERROR - SOAP client failed to generate the request. +// +#define WU_E_PT_SOAPCLIENT_GENERATE _HRESULT_TYPEDEF_(0x80244003L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_CONNECT +// +// MessageText: +// +// Same as SOAPCLIENT_CONNECT_ERROR - SOAP client failed to connect to the server. +// +#define WU_E_PT_SOAPCLIENT_CONNECT _HRESULT_TYPEDEF_(0x80244004L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_SEND +// +// MessageText: +// +// Same as SOAPCLIENT_SEND_ERROR - SOAP client failed to send a message for reasons of WU_E_WINHTTP_* error codes. +// +#define WU_E_PT_SOAPCLIENT_SEND _HRESULT_TYPEDEF_(0x80244005L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_SERVER +// +// MessageText: +// +// Same as SOAPCLIENT_SERVER_ERROR - SOAP client failed because there was a server error. +// +#define WU_E_PT_SOAPCLIENT_SERVER _HRESULT_TYPEDEF_(0x80244006L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_SOAPFAULT +// +// MessageText: +// +// Same as SOAPCLIENT_SOAPFAULT - SOAP client failed because there was a SOAP fault for reasons of WU_E_PT_SOAP_* error codes. +// +#define WU_E_PT_SOAPCLIENT_SOAPFAULT _HRESULT_TYPEDEF_(0x80244007L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_PARSEFAULT +// +// MessageText: +// +// Same as SOAPCLIENT_PARSEFAULT_ERROR - SOAP client failed to parse a SOAP fault. +// +#define WU_E_PT_SOAPCLIENT_PARSEFAULT _HRESULT_TYPEDEF_(0x80244008L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_READ +// +// MessageText: +// +// Same as SOAPCLIENT_READ_ERROR - SOAP client failed while reading the response from the server. +// +#define WU_E_PT_SOAPCLIENT_READ _HRESULT_TYPEDEF_(0x80244009L) + +// +// MessageId: WU_E_PT_SOAPCLIENT_PARSE +// +// MessageText: +// +// Same as SOAPCLIENT_PARSE_ERROR - SOAP client failed to parse the response from the server. +// +#define WU_E_PT_SOAPCLIENT_PARSE _HRESULT_TYPEDEF_(0x8024400AL) + +// The following map to SOAP_ERROR_CODEs from atlsoap.h. These errors +// are obtained from the m_fault.m_soapErrCode member on the +// CClientWebService object when GetClientError() returned +// SOAPCLIENT_SOAPFAULT. +// +// MessageId: WU_E_PT_SOAP_VERSION +// +// MessageText: +// +// Same as SOAP_E_VERSION_MISMATCH - SOAP client found an unrecognizable namespace for the SOAP envelope. +// +#define WU_E_PT_SOAP_VERSION _HRESULT_TYPEDEF_(0x8024400BL) + +// +// MessageId: WU_E_PT_SOAP_MUST_UNDERSTAND +// +// MessageText: +// +// Same as SOAP_E_MUST_UNDERSTAND - SOAP client was unable to understand a header. +// +#define WU_E_PT_SOAP_MUST_UNDERSTAND _HRESULT_TYPEDEF_(0x8024400CL) + +// +// MessageId: WU_E_PT_SOAP_CLIENT +// +// MessageText: +// +// Same as SOAP_E_CLIENT - SOAP client found the message was malformed; fix before resending. +// +#define WU_E_PT_SOAP_CLIENT _HRESULT_TYPEDEF_(0x8024400DL) + +// +// MessageId: WU_E_PT_SOAP_SERVER +// +// MessageText: +// +// Same as SOAP_E_SERVER - The SOAP message could not be processed due to a server error; resend later. +// +#define WU_E_PT_SOAP_SERVER _HRESULT_TYPEDEF_(0x8024400EL) + +// +// MessageId: WU_E_PT_WMI_ERROR +// +// MessageText: +// +// There was an unspecified Windows Management Instrumentation (WMI) error. +// +#define WU_E_PT_WMI_ERROR _HRESULT_TYPEDEF_(0x8024400FL) + +// +// MessageId: WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS +// +// MessageText: +// +// The number of round trips to the server exceeded the maximum limit. +// +#define WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS _HRESULT_TYPEDEF_(0x80244010L) + +// +// MessageId: WU_E_PT_SUS_SERVER_NOT_SET +// +// MessageText: +// +// WUServer policy value is missing in the registry. +// +#define WU_E_PT_SUS_SERVER_NOT_SET _HRESULT_TYPEDEF_(0x80244011L) + +// +// MessageId: WU_E_PT_DOUBLE_INITIALIZATION +// +// MessageText: +// +// Initialization failed because the object was already initialized. +// +#define WU_E_PT_DOUBLE_INITIALIZATION _HRESULT_TYPEDEF_(0x80244012L) + +// +// MessageId: WU_E_PT_INVALID_COMPUTER_NAME +// +// MessageText: +// +// The computer name could not be determined. +// +#define WU_E_PT_INVALID_COMPUTER_NAME _HRESULT_TYPEDEF_(0x80244013L) + +// +// MessageId: WU_E_PT_REFRESH_CACHE_REQUIRED +// +// MessageText: +// +// The reply from the server indicates that the server was changed or the cookie was invalid; refresh the state of the internal cache and retry. +// +#define WU_E_PT_REFRESH_CACHE_REQUIRED _HRESULT_TYPEDEF_(0x80244015L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_BAD_REQUEST +// +// MessageText: +// +// Same as HTTP status 400 - the server could not process the request due to invalid syntax. +// +#define WU_E_PT_HTTP_STATUS_BAD_REQUEST _HRESULT_TYPEDEF_(0x80244016L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_DENIED +// +// MessageText: +// +// Same as HTTP status 401 - the requested resource requires user authentication. +// +#define WU_E_PT_HTTP_STATUS_DENIED _HRESULT_TYPEDEF_(0x80244017L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_FORBIDDEN +// +// MessageText: +// +// Same as HTTP status 403 - server understood the request, but declined to fulfill it. +// +#define WU_E_PT_HTTP_STATUS_FORBIDDEN _HRESULT_TYPEDEF_(0x80244018L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_NOT_FOUND +// +// MessageText: +// +// Same as HTTP status 404 - the server cannot find the requested URI (Uniform Resource Identifier). +// +// +#define WU_E_PT_HTTP_STATUS_NOT_FOUND _HRESULT_TYPEDEF_(0x80244019L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_BAD_METHOD +// +// MessageText: +// +// Same as HTTP status 405 - the HTTP method is not allowed. +// +#define WU_E_PT_HTTP_STATUS_BAD_METHOD _HRESULT_TYPEDEF_(0x8024401AL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ +// +// MessageText: +// +// Same as HTTP status 407 - proxy authentication is required. +// +#define WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ _HRESULT_TYPEDEF_(0x8024401BL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT +// +// MessageText: +// +// Same as HTTP status 408 - the server timed out waiting for the request. +// +#define WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT _HRESULT_TYPEDEF_(0x8024401CL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_CONFLICT +// +// MessageText: +// +// Same as HTTP status 409 - the request was not completed due to a conflict with the current state of the resource. +// +#define WU_E_PT_HTTP_STATUS_CONFLICT _HRESULT_TYPEDEF_(0x8024401DL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_GONE +// +// MessageText: +// +// Same as HTTP status 410 - requested resource is no longer available at the server. +// +#define WU_E_PT_HTTP_STATUS_GONE _HRESULT_TYPEDEF_(0x8024401EL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_SERVER_ERROR +// +// MessageText: +// +// Same as HTTP status 500 - an error internal to the server prevented fulfilling the request. +// +#define WU_E_PT_HTTP_STATUS_SERVER_ERROR _HRESULT_TYPEDEF_(0x8024401FL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_NOT_SUPPORTED +// +// MessageText: +// +// Same as HTTP status 500 - server does not support the functionality required to fulfill the request. +// +#define WU_E_PT_HTTP_STATUS_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80244020L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_BAD_GATEWAY +// +// MessageText: +// +// Same as HTTP status 502 - the server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request. +// +#define WU_E_PT_HTTP_STATUS_BAD_GATEWAY _HRESULT_TYPEDEF_(0x80244021L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL +// +// MessageText: +// +// Same as HTTP status 503 - the service is temporarily overloaded. +// +#define WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL _HRESULT_TYPEDEF_(0x80244022L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT +// +// MessageText: +// +// Same as HTTP status 503 - the request was timed out waiting for a gateway. +// +#define WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT _HRESULT_TYPEDEF_(0x80244023L) + +// +// MessageId: WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP +// +// MessageText: +// +// Same as HTTP status 505 - the server does not support the HTTP protocol version used for the request. +// +#define WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP _HRESULT_TYPEDEF_(0x80244024L) + +// +// MessageId: WU_E_PT_FILE_LOCATIONS_CHANGED +// +// MessageText: +// +// Operation failed due to a changed file location; refresh internal state and resend. +// +#define WU_E_PT_FILE_LOCATIONS_CHANGED _HRESULT_TYPEDEF_(0x80244025L) + +// +// MessageId: WU_E_PT_REGISTRATION_NOT_SUPPORTED +// +// MessageText: +// +// Operation failed because Windows Update Agent does not support registration with a non-WSUS server. +// +#define WU_E_PT_REGISTRATION_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80244026L) + +// +// MessageId: WU_E_PT_NO_AUTH_PLUGINS_REQUESTED +// +// MessageText: +// +// The server returned an empty authentication information list. +// +#define WU_E_PT_NO_AUTH_PLUGINS_REQUESTED _HRESULT_TYPEDEF_(0x80244027L) + +// +// MessageId: WU_E_PT_NO_AUTH_COOKIES_CREATED +// +// MessageText: +// +// Windows Update Agent was unable to create any valid authentication cookies. +// +#define WU_E_PT_NO_AUTH_COOKIES_CREATED _HRESULT_TYPEDEF_(0x80244028L) + +// +// MessageId: WU_E_PT_INVALID_CONFIG_PROP +// +// MessageText: +// +// A configuration property value was wrong. +// +#define WU_E_PT_INVALID_CONFIG_PROP _HRESULT_TYPEDEF_(0x80244029L) + +// +// MessageId: WU_E_PT_CONFIG_PROP_MISSING +// +// MessageText: +// +// A configuration property value was missing. +// +#define WU_E_PT_CONFIG_PROP_MISSING _HRESULT_TYPEDEF_(0x8024402AL) + +// +// MessageId: WU_E_PT_HTTP_STATUS_NOT_MAPPED +// +// MessageText: +// +// The HTTP request could not be completed and the reason did not correspond to any of the WU_E_PT_HTTP_* error codes. +// +#define WU_E_PT_HTTP_STATUS_NOT_MAPPED _HRESULT_TYPEDEF_(0x8024402BL) + +// +// MessageId: WU_E_PT_WINHTTP_NAME_NOT_RESOLVED +// +// MessageText: +// +// Same as ERROR_WINHTTP_NAME_NOT_RESOLVED - the proxy server or target server name cannot be resolved. +// +#define WU_E_PT_WINHTTP_NAME_NOT_RESOLVED _HRESULT_TYPEDEF_(0x8024402CL) + +// +// MessageId: WU_E_PT_SAME_REDIR_ID +// +// MessageText: +// +// Windows Update Agent failed to download a redirector cabinet file with a new redirectorId value from the server during the recovery. +// +#define WU_E_PT_SAME_REDIR_ID _HRESULT_TYPEDEF_(0x8024502DL) + +// +// MessageId: WU_E_PT_NO_MANAGED_RECOVER +// +// MessageText: +// +// A redirector recovery action did not complete because the server is managed. +// +#define WU_E_PT_NO_MANAGED_RECOVER _HRESULT_TYPEDEF_(0x8024502EL) + +// +// MessageId: WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS +// +// MessageText: +// +// External cab file processing completed with some errors. +// +#define WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS _HRESULT_TYPEDEF_(0x8024402FL) + +// +// MessageId: WU_E_PT_ECP_INIT_FAILED +// +// MessageText: +// +// The external cab processor initialization did not complete. +// +#define WU_E_PT_ECP_INIT_FAILED _HRESULT_TYPEDEF_(0x80244030L) + +// +// MessageId: WU_E_PT_ECP_INVALID_FILE_FORMAT +// +// MessageText: +// +// The format of a metadata file was invalid. +// +#define WU_E_PT_ECP_INVALID_FILE_FORMAT _HRESULT_TYPEDEF_(0x80244031L) + +// +// MessageId: WU_E_PT_ECP_INVALID_METADATA +// +// MessageText: +// +// External cab processor found invalid metadata. +// +#define WU_E_PT_ECP_INVALID_METADATA _HRESULT_TYPEDEF_(0x80244032L) + +// +// MessageId: WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST +// +// MessageText: +// +// The file digest could not be extracted from an external cab file. +// +#define WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST _HRESULT_TYPEDEF_(0x80244033L) + +// +// MessageId: WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE +// +// MessageText: +// +// An external cab file could not be decompressed. +// +#define WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE _HRESULT_TYPEDEF_(0x80244034L) + +// +// MessageId: WU_E_PT_ECP_FILE_LOCATION_ERROR +// +// MessageText: +// +// External cab processor was unable to get file locations. +// +#define WU_E_PT_ECP_FILE_LOCATION_ERROR _HRESULT_TYPEDEF_(0x80244035L) + +// +// MessageId: WU_E_PT_CATALOG_SYNC_REQUIRED +// +// MessageText: +// +// The server does not support category-specific search; Full catalog search has to be issued instead. +// +#define WU_E_PT_CATALOG_SYNC_REQUIRED _HRESULT_TYPEDEF_(0x80240436L) + +// +// MessageId: WU_E_PT_UNEXPECTED +// +// MessageText: +// +// A communication error not covered by another WU_E_PT_* error code. +// +#define WU_E_PT_UNEXPECTED _HRESULT_TYPEDEF_(0x80244FFFL) + +/////////////////////////////////////////////////////////////////////////////// +// Redirector errors +// +// The following errors are generated by the components that download and +// parse the wuredir.cab +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_REDIRECTOR_LOAD_XML +// +// MessageText: +// +// The redirector XML document could not be loaded into the DOM class. +// +#define WU_E_REDIRECTOR_LOAD_XML _HRESULT_TYPEDEF_(0x80245001L) + +// +// MessageId: WU_E_REDIRECTOR_S_FALSE +// +// MessageText: +// +// The redirector XML document is missing some required information. +// +#define WU_E_REDIRECTOR_S_FALSE _HRESULT_TYPEDEF_(0x80245002L) + +// +// MessageId: WU_E_REDIRECTOR_ID_SMALLER +// +// MessageText: +// +// The redirectorId in the downloaded redirector cab is less than in the cached cab. +// +#define WU_E_REDIRECTOR_ID_SMALLER _HRESULT_TYPEDEF_(0x80245003L) + +// +// MessageId: WU_E_REDIRECTOR_UNEXPECTED +// +// MessageText: +// +// The redirector failed for reasons not covered by another WU_E_REDIRECTOR_* error code. +// +#define WU_E_REDIRECTOR_UNEXPECTED _HRESULT_TYPEDEF_(0x80245FFFL) + +/////////////////////////////////////////////////////////////////////////////// +// driver util errors +// +// The device PnP enumerated device was pruned from the SystemSpec because +// one of the hardware or compatible IDs matched an installed printer driver. +// This is not considered a fatal error and the device is simply skipped. +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_DRV_PRUNED +// +// MessageText: +// +// A driver was skipped. +// +#define WU_E_DRV_PRUNED _HRESULT_TYPEDEF_(0x8024C001L) + +// +// MessageId: WU_E_DRV_NOPROP_OR_LEGACY +// +// MessageText: +// +// A property for the driver could not be found. It may not conform with required specifications. +// +#define WU_E_DRV_NOPROP_OR_LEGACY _HRESULT_TYPEDEF_(0x8024C002L) + +// +// MessageId: WU_E_DRV_REG_MISMATCH +// +// MessageText: +// +// The registry type read for the driver does not match the expected type. +// +#define WU_E_DRV_REG_MISMATCH _HRESULT_TYPEDEF_(0x8024C003L) + +// +// MessageId: WU_E_DRV_NO_METADATA +// +// MessageText: +// +// The driver update is missing metadata. +// +#define WU_E_DRV_NO_METADATA _HRESULT_TYPEDEF_(0x8024C004L) + +// +// MessageId: WU_E_DRV_MISSING_ATTRIBUTE +// +// MessageText: +// +// The driver update is missing a required attribute. +// +#define WU_E_DRV_MISSING_ATTRIBUTE _HRESULT_TYPEDEF_(0x8024C005L) + +// +// MessageId: WU_E_DRV_SYNC_FAILED +// +// MessageText: +// +// Driver synchronization failed. +// +#define WU_E_DRV_SYNC_FAILED _HRESULT_TYPEDEF_(0x8024C006L) + +// +// MessageId: WU_E_DRV_NO_PRINTER_CONTENT +// +// MessageText: +// +// Information required for the synchronization of applicable printers is missing. +// +#define WU_E_DRV_NO_PRINTER_CONTENT _HRESULT_TYPEDEF_(0x8024C007L) + +// +// MessageId: WU_E_DRV_UNEXPECTED +// +// MessageText: +// +// A driver error not covered by another WU_E_DRV_* code. +// +#define WU_E_DRV_UNEXPECTED _HRESULT_TYPEDEF_(0x8024CFFFL) + +////////////////////////////////////////////////////////////////////////////// +// data store errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_DS_SHUTDOWN +// +// MessageText: +// +// An operation failed because Windows Update Agent is shutting down. +// +#define WU_E_DS_SHUTDOWN _HRESULT_TYPEDEF_(0x80248000L) + +// +// MessageId: WU_E_DS_INUSE +// +// MessageText: +// +// An operation failed because the data store was in use. +// +#define WU_E_DS_INUSE _HRESULT_TYPEDEF_(0x80248001L) + +// +// MessageId: WU_E_DS_INVALID +// +// MessageText: +// +// The current and expected states of the data store do not match. +// +#define WU_E_DS_INVALID _HRESULT_TYPEDEF_(0x80248002L) + +// +// MessageId: WU_E_DS_TABLEMISSING +// +// MessageText: +// +// The data store is missing a table. +// +#define WU_E_DS_TABLEMISSING _HRESULT_TYPEDEF_(0x80248003L) + +// +// MessageId: WU_E_DS_TABLEINCORRECT +// +// MessageText: +// +// The data store contains a table with unexpected columns. +// +#define WU_E_DS_TABLEINCORRECT _HRESULT_TYPEDEF_(0x80248004L) + +// +// MessageId: WU_E_DS_INVALIDTABLENAME +// +// MessageText: +// +// A table could not be opened because the table is not in the data store. +// +#define WU_E_DS_INVALIDTABLENAME _HRESULT_TYPEDEF_(0x80248005L) + +// +// MessageId: WU_E_DS_BADVERSION +// +// MessageText: +// +// The current and expected versions of the data store do not match. +// +#define WU_E_DS_BADVERSION _HRESULT_TYPEDEF_(0x80248006L) + +// +// MessageId: WU_E_DS_NODATA +// +// MessageText: +// +// The information requested is not in the data store. +// +#define WU_E_DS_NODATA _HRESULT_TYPEDEF_(0x80248007L) + +// +// MessageId: WU_E_DS_MISSINGDATA +// +// MessageText: +// +// The data store is missing required information or has a NULL in a table column that requires a non-null value. +// +#define WU_E_DS_MISSINGDATA _HRESULT_TYPEDEF_(0x80248008L) + +// +// MessageId: WU_E_DS_MISSINGREF +// +// MessageText: +// +// The data store is missing required information or has a reference to missing license terms, file, localized property or linked row. +// +#define WU_E_DS_MISSINGREF _HRESULT_TYPEDEF_(0x80248009L) + +// +// MessageId: WU_E_DS_UNKNOWNHANDLER +// +// MessageText: +// +// The update was not processed because its update handler could not be recognized. +// +#define WU_E_DS_UNKNOWNHANDLER _HRESULT_TYPEDEF_(0x8024800AL) + +// +// MessageId: WU_E_DS_CANTDELETE +// +// MessageText: +// +// The update was not deleted because it is still referenced by one or more services. +// +#define WU_E_DS_CANTDELETE _HRESULT_TYPEDEF_(0x8024800BL) + +// +// MessageId: WU_E_DS_LOCKTIMEOUTEXPIRED +// +// MessageText: +// +// The data store section could not be locked within the allotted time. +// +#define WU_E_DS_LOCKTIMEOUTEXPIRED _HRESULT_TYPEDEF_(0x8024800CL) + +// +// MessageId: WU_E_DS_NOCATEGORIES +// +// MessageText: +// +// The category was not added because it contains no parent categories and is not a top-level category itself. +// +#define WU_E_DS_NOCATEGORIES _HRESULT_TYPEDEF_(0x8024800DL) + +// +// MessageId: WU_E_DS_ROWEXISTS +// +// MessageText: +// +// The row was not added because an existing row has the same primary key. +// +#define WU_E_DS_ROWEXISTS _HRESULT_TYPEDEF_(0x8024800EL) + +// +// MessageId: WU_E_DS_STOREFILELOCKED +// +// MessageText: +// +// The data store could not be initialized because it was locked by another process. +// +#define WU_E_DS_STOREFILELOCKED _HRESULT_TYPEDEF_(0x8024800FL) + +// +// MessageId: WU_E_DS_CANNOTREGISTER +// +// MessageText: +// +// The data store is not allowed to be registered with COM in the current process. +// +#define WU_E_DS_CANNOTREGISTER _HRESULT_TYPEDEF_(0x80248010L) + +// +// MessageId: WU_E_DS_UNABLETOSTART +// +// MessageText: +// +// Could not create a data store object in another process. +// +#define WU_E_DS_UNABLETOSTART _HRESULT_TYPEDEF_(0x80248011L) + +// +// MessageId: WU_E_DS_DUPLICATEUPDATEID +// +// MessageText: +// +// The server sent the same update to the client with two different revision IDs. +// +#define WU_E_DS_DUPLICATEUPDATEID _HRESULT_TYPEDEF_(0x80248013L) + +// +// MessageId: WU_E_DS_UNKNOWNSERVICE +// +// MessageText: +// +// An operation did not complete because the service is not in the data store. +// +#define WU_E_DS_UNKNOWNSERVICE _HRESULT_TYPEDEF_(0x80248014L) + +// +// MessageId: WU_E_DS_SERVICEEXPIRED +// +// MessageText: +// +// An operation did not complete because the registration of the service has expired. +// +#define WU_E_DS_SERVICEEXPIRED _HRESULT_TYPEDEF_(0x80248015L) + +// +// MessageId: WU_E_DS_DECLINENOTALLOWED +// +// MessageText: +// +// A request to hide an update was declined because it is a mandatory update or because it was deployed with a deadline. +// +#define WU_E_DS_DECLINENOTALLOWED _HRESULT_TYPEDEF_(0x80248016L) + +// +// MessageId: WU_E_DS_TABLESESSIONMISMATCH +// +// MessageText: +// +// A table was not closed because it is not associated with the session. +// +#define WU_E_DS_TABLESESSIONMISMATCH _HRESULT_TYPEDEF_(0x80248017L) + +// +// MessageId: WU_E_DS_SESSIONLOCKMISMATCH +// +// MessageText: +// +// A table was not closed because it is not associated with the session. +// +#define WU_E_DS_SESSIONLOCKMISMATCH _HRESULT_TYPEDEF_(0x80248018L) + +// +// MessageId: WU_E_DS_NEEDWINDOWSSERVICE +// +// MessageText: +// +// A request to remove the Windows Update service or to unregister it with Automatic Updates was declined because it is a built-in service and/or Automatic Updates cannot fall back to another service. +// +#define WU_E_DS_NEEDWINDOWSSERVICE _HRESULT_TYPEDEF_(0x80248019L) + +// +// MessageId: WU_E_DS_INVALIDOPERATION +// +// MessageText: +// +// A request was declined because the operation is not allowed. +// +#define WU_E_DS_INVALIDOPERATION _HRESULT_TYPEDEF_(0x8024801AL) + +// +// MessageId: WU_E_DS_SCHEMAMISMATCH +// +// MessageText: +// +// The schema of the current data store and the schema of a table in a backup XML document do not match. +// +#define WU_E_DS_SCHEMAMISMATCH _HRESULT_TYPEDEF_(0x8024801BL) + +// +// MessageId: WU_E_DS_RESETREQUIRED +// +// MessageText: +// +// The data store requires a session reset; release the session and retry with a new session. +// +#define WU_E_DS_RESETREQUIRED _HRESULT_TYPEDEF_(0x8024801CL) + +// +// MessageId: WU_E_DS_IMPERSONATED +// +// MessageText: +// +// A data store operation did not complete because it was requested with an impersonated identity. +// +#define WU_E_DS_IMPERSONATED _HRESULT_TYPEDEF_(0x8024801DL) + +// +// MessageId: WU_E_DS_UNEXPECTED +// +// MessageText: +// +// A data store error not covered by another WU_E_DS_* code. +// +#define WU_E_DS_UNEXPECTED _HRESULT_TYPEDEF_(0x80248FFFL) + +///////////////////////////////////////////////////////////////////////////// +//Inventory Errors +///////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_INVENTORY_PARSEFAILED +// +// MessageText: +// +// Parsing of the rule file failed. +// +#define WU_E_INVENTORY_PARSEFAILED _HRESULT_TYPEDEF_(0x80249001L) + +// +// MessageId: WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED +// +// MessageText: +// +// Failed to get the requested inventory type from the server. +// +#define WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED _HRESULT_TYPEDEF_(0x80249002L) + +// +// MessageId: WU_E_INVENTORY_RESULT_UPLOAD_FAILED +// +// MessageText: +// +// Failed to upload inventory result to the server. +// +#define WU_E_INVENTORY_RESULT_UPLOAD_FAILED _HRESULT_TYPEDEF_(0x80249003L) + +// +// MessageId: WU_E_INVENTORY_UNEXPECTED +// +// MessageText: +// +// There was an inventory error not covered by another error code. +// +#define WU_E_INVENTORY_UNEXPECTED _HRESULT_TYPEDEF_(0x80249004L) + +// +// MessageId: WU_E_INVENTORY_WMI_ERROR +// +// MessageText: +// +// A WMI error occurred when enumerating the instances for a particular class. +// +#define WU_E_INVENTORY_WMI_ERROR _HRESULT_TYPEDEF_(0x80249005L) + +///////////////////////////////////////////////////////////////////////////// +//AU Errors +///////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_AU_NOSERVICE +// +// MessageText: +// +// Automatic Updates was unable to service incoming requests. +// +#define WU_E_AU_NOSERVICE _HRESULT_TYPEDEF_(0x8024A000L) + +// +// MessageId: WU_E_AU_NONLEGACYSERVER +// +// MessageText: +// +// The old version of the Automatic Updates client has stopped because the WSUS server has been upgraded. +// +#define WU_E_AU_NONLEGACYSERVER _HRESULT_TYPEDEF_(0x8024A002L) + +// +// MessageId: WU_E_AU_LEGACYCLIENTDISABLED +// +// MessageText: +// +// The old version of the Automatic Updates client was disabled. +// +#define WU_E_AU_LEGACYCLIENTDISABLED _HRESULT_TYPEDEF_(0x8024A003L) + +// +// MessageId: WU_E_AU_PAUSED +// +// MessageText: +// +// Automatic Updates was unable to process incoming requests because it was paused. +// +#define WU_E_AU_PAUSED _HRESULT_TYPEDEF_(0x8024A004L) + +// +// MessageId: WU_E_AU_NO_REGISTERED_SERVICE +// +// MessageText: +// +// No unmanaged service is registered with AU. +// +#define WU_E_AU_NO_REGISTERED_SERVICE _HRESULT_TYPEDEF_(0x8024A005L) + +// +// MessageId: WU_E_AU_DETECT_SVCID_MISMATCH +// +// MessageText: +// +// The default service registered with AU changed during the search. +// +#define WU_E_AU_DETECT_SVCID_MISMATCH _HRESULT_TYPEDEF_(0x8024A006L) + +// +// MessageId: WU_E_AU_UNEXPECTED +// +// MessageText: +// +// An Automatic Updates error not covered by another WU_E_AU * code. +// +#define WU_E_AU_UNEXPECTED _HRESULT_TYPEDEF_(0x8024AFFFL) + +////////////////////////////////////////////////////////////////////////////// +// update handler errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_UH_REMOTEUNAVAILABLE +// +// MessageText: +// +// A request for a remote update handler could not be completed because no remote process is available. +// +#define WU_E_UH_REMOTEUNAVAILABLE _HRESULT_TYPEDEF_(0x80242000L) + +// +// MessageId: WU_E_UH_LOCALONLY +// +// MessageText: +// +// A request for a remote update handler could not be completed because the handler is local only. +// +#define WU_E_UH_LOCALONLY _HRESULT_TYPEDEF_(0x80242001L) + +// +// MessageId: WU_E_UH_UNKNOWNHANDLER +// +// MessageText: +// +// A request for an update handler could not be completed because the handler could not be recognized. +// +#define WU_E_UH_UNKNOWNHANDLER _HRESULT_TYPEDEF_(0x80242002L) + +// +// MessageId: WU_E_UH_REMOTEALREADYACTIVE +// +// MessageText: +// +// A remote update handler could not be created because one already exists. +// +#define WU_E_UH_REMOTEALREADYACTIVE _HRESULT_TYPEDEF_(0x80242003L) + +// +// MessageId: WU_E_UH_DOESNOTSUPPORTACTION +// +// MessageText: +// +// A request for the handler to install (uninstall) an update could not be completed because the update does not support install (uninstall). +// +#define WU_E_UH_DOESNOTSUPPORTACTION _HRESULT_TYPEDEF_(0x80242004L) + +// +// MessageId: WU_E_UH_WRONGHANDLER +// +// MessageText: +// +// An operation did not complete because the wrong handler was specified. +// +#define WU_E_UH_WRONGHANDLER _HRESULT_TYPEDEF_(0x80242005L) + +// +// MessageId: WU_E_UH_INVALIDMETADATA +// +// MessageText: +// +// A handler operation could not be completed because the update contains invalid metadata. +// +#define WU_E_UH_INVALIDMETADATA _HRESULT_TYPEDEF_(0x80242006L) + +// +// MessageId: WU_E_UH_INSTALLERHUNG +// +// MessageText: +// +// An operation could not be completed because the installer exceeded the time limit. +// +#define WU_E_UH_INSTALLERHUNG _HRESULT_TYPEDEF_(0x80242007L) + +// +// MessageId: WU_E_UH_OPERATIONCANCELLED +// +// MessageText: +// +// An operation being done by the update handler was cancelled. +// +#define WU_E_UH_OPERATIONCANCELLED _HRESULT_TYPEDEF_(0x80242008L) + +// +// MessageId: WU_E_UH_BADHANDLERXML +// +// MessageText: +// +// An operation could not be completed because the handler-specific metadata is invalid. +// +#define WU_E_UH_BADHANDLERXML _HRESULT_TYPEDEF_(0x80242009L) + +// +// MessageId: WU_E_UH_CANREQUIREINPUT +// +// MessageText: +// +// A request to the handler to install an update could not be completed because the update requires user input. +// +#define WU_E_UH_CANREQUIREINPUT _HRESULT_TYPEDEF_(0x8024200AL) + +// +// MessageId: WU_E_UH_INSTALLERFAILURE +// +// MessageText: +// +// The installer failed to install (uninstall) one or more updates. +// +#define WU_E_UH_INSTALLERFAILURE _HRESULT_TYPEDEF_(0x8024200BL) + +// +// MessageId: WU_E_UH_FALLBACKTOSELFCONTAINED +// +// MessageText: +// +// The update handler should download self-contained content rather than delta-compressed content for the update. +// +#define WU_E_UH_FALLBACKTOSELFCONTAINED _HRESULT_TYPEDEF_(0x8024200CL) + +// +// MessageId: WU_E_UH_NEEDANOTHERDOWNLOAD +// +// MessageText: +// +// The update handler did not install the update because it needs to be downloaded again. +// +#define WU_E_UH_NEEDANOTHERDOWNLOAD _HRESULT_TYPEDEF_(0x8024200DL) + +// +// MessageId: WU_E_UH_NOTIFYFAILURE +// +// MessageText: +// +// The update handler failed to send notification of the status of the install (uninstall) operation. +// +#define WU_E_UH_NOTIFYFAILURE _HRESULT_TYPEDEF_(0x8024200EL) + +// +// MessageId: WU_E_UH_INCONSISTENT_FILE_NAMES +// +// MessageText: +// +// The file names contained in the update metadata and in the update package are inconsistent. +// +#define WU_E_UH_INCONSISTENT_FILE_NAMES _HRESULT_TYPEDEF_(0x8024200FL) + +// +// MessageId: WU_E_UH_FALLBACKERROR +// +// MessageText: +// +// The update handler failed to fall back to the self-contained content. +// +#define WU_E_UH_FALLBACKERROR _HRESULT_TYPEDEF_(0x80242010L) + +// +// MessageId: WU_E_UH_TOOMANYDOWNLOADREQUESTS +// +// MessageText: +// +// The update handler has exceeded the maximum number of download requests. +// +#define WU_E_UH_TOOMANYDOWNLOADREQUESTS _HRESULT_TYPEDEF_(0x80242011L) + +// +// MessageId: WU_E_UH_UNEXPECTEDCBSRESPONSE +// +// MessageText: +// +// The update handler has received an unexpected response from CBS. +// +#define WU_E_UH_UNEXPECTEDCBSRESPONSE _HRESULT_TYPEDEF_(0x80242012L) + +// +// MessageId: WU_E_UH_BADCBSPACKAGEID +// +// MessageText: +// +// The update metadata contains an invalid CBS package identifier. +// +#define WU_E_UH_BADCBSPACKAGEID _HRESULT_TYPEDEF_(0x80242013L) + +// +// MessageId: WU_E_UH_POSTREBOOTSTILLPENDING +// +// MessageText: +// +// The post-reboot operation for the update is still in progress. +// +#define WU_E_UH_POSTREBOOTSTILLPENDING _HRESULT_TYPEDEF_(0x80242014L) + +// +// MessageId: WU_E_UH_POSTREBOOTRESULTUNKNOWN +// +// MessageText: +// +// The result of the post-reboot operation for the update could not be determined. +// +#define WU_E_UH_POSTREBOOTRESULTUNKNOWN _HRESULT_TYPEDEF_(0x80242015L) + +// +// MessageId: WU_E_UH_POSTREBOOTUNEXPECTEDSTATE +// +// MessageText: +// +// The state of the update after its post-reboot operation has completed is unexpected. +// +#define WU_E_UH_POSTREBOOTUNEXPECTEDSTATE _HRESULT_TYPEDEF_(0x80242016L) + +// +// MessageId: WU_E_UH_NEW_SERVICING_STACK_REQUIRED +// +// MessageText: +// +// The OS servicing stack must be updated before this update is downloaded or installed. +// +#define WU_E_UH_NEW_SERVICING_STACK_REQUIRED _HRESULT_TYPEDEF_(0x80242017L) + +// +// MessageId: WU_E_UH_CALLED_BACK_FAILURE +// +// MessageText: +// +// A callback installer called back with an error. +// +#define WU_E_UH_CALLED_BACK_FAILURE _HRESULT_TYPEDEF_(0x80242018L) + +// +// MessageId: WU_E_UH_CUSTOMINSTALLER_INVALID_SIGNATURE +// +// MessageText: +// +// The custom installer signature did not match the signature required by the update. +// +#define WU_E_UH_CUSTOMINSTALLER_INVALID_SIGNATURE _HRESULT_TYPEDEF_(0x80242019L) + +// +// MessageId: WU_E_UH_UNSUPPORTED_INSTALLCONTEXT +// +// MessageText: +// +// The installer does not support the installation configuration. +// +#define WU_E_UH_UNSUPPORTED_INSTALLCONTEXT _HRESULT_TYPEDEF_(0x8024201AL) + +// +// MessageId: WU_E_UH_INVALID_TARGETSESSION +// +// MessageText: +// +// The targeted session for isntall is invalid. +// +#define WU_E_UH_INVALID_TARGETSESSION _HRESULT_TYPEDEF_(0x8024201BL) + +// +// MessageId: WU_E_UH_UNEXPECTED +// +// MessageText: +// +// An update handler error not covered by another WU_E_UH_* code. +// +#define WU_E_UH_UNEXPECTED _HRESULT_TYPEDEF_(0x80242FFFL) + +////////////////////////////////////////////////////////////////////////////// +// download manager errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_DM_URLNOTAVAILABLE +// +// MessageText: +// +// A download manager operation could not be completed because the requested file does not have a URL. +// +#define WU_E_DM_URLNOTAVAILABLE _HRESULT_TYPEDEF_(0x80246001L) + +// +// MessageId: WU_E_DM_INCORRECTFILEHASH +// +// MessageText: +// +// A download manager operation could not be completed because the file digest was not recognized. +// +#define WU_E_DM_INCORRECTFILEHASH _HRESULT_TYPEDEF_(0x80246002L) + +// +// MessageId: WU_E_DM_UNKNOWNALGORITHM +// +// MessageText: +// +// A download manager operation could not be completed because the file metadata requested an unrecognized hash algorithm. +// +#define WU_E_DM_UNKNOWNALGORITHM _HRESULT_TYPEDEF_(0x80246003L) + +// +// MessageId: WU_E_DM_NEEDDOWNLOADREQUEST +// +// MessageText: +// +// An operation could not be completed because a download request is required from the download handler. +// +#define WU_E_DM_NEEDDOWNLOADREQUEST _HRESULT_TYPEDEF_(0x80246004L) + +// +// MessageId: WU_E_DM_NONETWORK +// +// MessageText: +// +// A download manager operation could not be completed because the network connection was unavailable. +// +#define WU_E_DM_NONETWORK _HRESULT_TYPEDEF_(0x80246005L) + +// +// MessageId: WU_E_DM_WRONGBITSVERSION +// +// MessageText: +// +// A download manager operation could not be completed because the version of Background Intelligent Transfer Service (BITS) is incompatible. +// +#define WU_E_DM_WRONGBITSVERSION _HRESULT_TYPEDEF_(0x80246006L) + +// +// MessageId: WU_E_DM_NOTDOWNLOADED +// +// MessageText: +// +// The update has not been downloaded. +// +#define WU_E_DM_NOTDOWNLOADED _HRESULT_TYPEDEF_(0x80246007L) + +// +// MessageId: WU_E_DM_FAILTOCONNECTTOBITS +// +// MessageText: +// +// A download manager operation failed because the download manager was unable to connect the Background Intelligent Transfer Service (BITS). +// +#define WU_E_DM_FAILTOCONNECTTOBITS _HRESULT_TYPEDEF_(0x80246008L) + +// +// MessageId: WU_E_DM_BITSTRANSFERERROR +// +// MessageText: +// +// A download manager operation failed because there was an unspecified Background Intelligent Transfer Service (BITS) transfer error. +// +#define WU_E_DM_BITSTRANSFERERROR _HRESULT_TYPEDEF_(0x80246009L) + +// +// MessageId: WU_E_DM_DOWNLOADLOCATIONCHANGED +// +// MessageText: +// +// A download must be restarted because the location of the source of the download has changed. +// +#define WU_E_DM_DOWNLOADLOCATIONCHANGED _HRESULT_TYPEDEF_(0x8024600AL) + +// +// MessageId: WU_E_DM_CONTENTCHANGED +// +// MessageText: +// +// A download must be restarted because the update content changed in a new revision. +// +#define WU_E_DM_CONTENTCHANGED _HRESULT_TYPEDEF_(0x8024600BL) + +// +// MessageId: WU_E_DM_UNEXPECTED +// +// MessageText: +// +// There was a download manager error not covered by another WU_E_DM_* error code. +// +#define WU_E_DM_UNEXPECTED _HRESULT_TYPEDEF_(0x80246FFFL) + +////////////////////////////////////////////////////////////////////////////// +// Setup/SelfUpdate errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_SETUP_INVALID_INFDATA +// +// MessageText: +// +// Windows Update Agent could not be updated because an INF file contains invalid information. +// +#define WU_E_SETUP_INVALID_INFDATA _HRESULT_TYPEDEF_(0x8024D001L) + +// +// MessageId: WU_E_SETUP_INVALID_IDENTDATA +// +// MessageText: +// +// Windows Update Agent could not be updated because the wuident.cab file contains invalid information. +// +#define WU_E_SETUP_INVALID_IDENTDATA _HRESULT_TYPEDEF_(0x8024D002L) + +// +// MessageId: WU_E_SETUP_ALREADY_INITIALIZED +// +// MessageText: +// +// Windows Update Agent could not be updated because of an internal error that caused setup initialization to be performed twice. +// +#define WU_E_SETUP_ALREADY_INITIALIZED _HRESULT_TYPEDEF_(0x8024D003L) + +// +// MessageId: WU_E_SETUP_NOT_INITIALIZED +// +// MessageText: +// +// Windows Update Agent could not be updated because setup initialization never completed successfully. +// +#define WU_E_SETUP_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x8024D004L) + +// +// MessageId: WU_E_SETUP_SOURCE_VERSION_MISMATCH +// +// MessageText: +// +// Windows Update Agent could not be updated because the versions specified in the INF do not match the actual source file versions. +// +#define WU_E_SETUP_SOURCE_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x8024D005L) + +// +// MessageId: WU_E_SETUP_TARGET_VERSION_GREATER +// +// MessageText: +// +// Windows Update Agent could not be updated because a WUA file on the target system is newer than the corresponding source file. +// +#define WU_E_SETUP_TARGET_VERSION_GREATER _HRESULT_TYPEDEF_(0x8024D006L) + +// +// MessageId: WU_E_SETUP_REGISTRATION_FAILED +// +// MessageText: +// +// Windows Update Agent could not be updated because regsvr32.exe returned an error. +// +#define WU_E_SETUP_REGISTRATION_FAILED _HRESULT_TYPEDEF_(0x8024D007L) + +// +// MessageId: WU_E_SELFUPDATE_SKIP_ON_FAILURE +// +// MessageText: +// +// An update to the Windows Update Agent was skipped because previous attempts to update have failed. +// +#define WU_E_SELFUPDATE_SKIP_ON_FAILURE _HRESULT_TYPEDEF_(0x8024D008L) + +// +// MessageId: WU_E_SETUP_SKIP_UPDATE +// +// MessageText: +// +// An update to the Windows Update Agent was skipped due to a directive in the wuident.cab file. +// +#define WU_E_SETUP_SKIP_UPDATE _HRESULT_TYPEDEF_(0x8024D009L) + +// +// MessageId: WU_E_SETUP_UNSUPPORTED_CONFIGURATION +// +// MessageText: +// +// Windows Update Agent could not be updated because the current system configuration is not supported. +// +#define WU_E_SETUP_UNSUPPORTED_CONFIGURATION _HRESULT_TYPEDEF_(0x8024D00AL) + +// +// MessageId: WU_E_SETUP_BLOCKED_CONFIGURATION +// +// MessageText: +// +// Windows Update Agent could not be updated because the system is configured to block the update. +// +#define WU_E_SETUP_BLOCKED_CONFIGURATION _HRESULT_TYPEDEF_(0x8024D00BL) + +// +// MessageId: WU_E_SETUP_REBOOT_TO_FIX +// +// MessageText: +// +// Windows Update Agent could not be updated because a restart of the system is required. +// +#define WU_E_SETUP_REBOOT_TO_FIX _HRESULT_TYPEDEF_(0x8024D00CL) + +// +// MessageId: WU_E_SETUP_ALREADYRUNNING +// +// MessageText: +// +// Windows Update Agent setup is already running. +// +#define WU_E_SETUP_ALREADYRUNNING _HRESULT_TYPEDEF_(0x8024D00DL) + +// +// MessageId: WU_E_SETUP_REBOOTREQUIRED +// +// MessageText: +// +// Windows Update Agent setup package requires a reboot to complete installation. +// +#define WU_E_SETUP_REBOOTREQUIRED _HRESULT_TYPEDEF_(0x8024D00EL) + +// +// MessageId: WU_E_SETUP_HANDLER_EXEC_FAILURE +// +// MessageText: +// +// Windows Update Agent could not be updated because the setup handler failed during execution. +// +#define WU_E_SETUP_HANDLER_EXEC_FAILURE _HRESULT_TYPEDEF_(0x8024D00FL) + +// +// MessageId: WU_E_SETUP_INVALID_REGISTRY_DATA +// +// MessageText: +// +// Windows Update Agent could not be updated because the registry contains invalid information. +// +#define WU_E_SETUP_INVALID_REGISTRY_DATA _HRESULT_TYPEDEF_(0x8024D010L) + +// +// MessageId: WU_E_SELFUPDATE_REQUIRED +// +// MessageText: +// +// Windows Update Agent must be updated before search can continue. +// +#define WU_E_SELFUPDATE_REQUIRED _HRESULT_TYPEDEF_(0x8024D011L) + +// +// MessageId: WU_E_SELFUPDATE_REQUIRED_ADMIN +// +// MessageText: +// +// Windows Update Agent must be updated before search can continue. An administrator is required to perform the operation. +// +#define WU_E_SELFUPDATE_REQUIRED_ADMIN _HRESULT_TYPEDEF_(0x8024D012L) + +// +// MessageId: WU_E_SETUP_WRONG_SERVER_VERSION +// +// MessageText: +// +// Windows Update Agent could not be updated because the server does not contain update information for this version. +// +#define WU_E_SETUP_WRONG_SERVER_VERSION _HRESULT_TYPEDEF_(0x8024D013L) + +// +// MessageId: WU_E_SETUP_UNEXPECTED +// +// MessageText: +// +// Windows Update Agent could not be updated because of an error not covered by another WU_E_SETUP_* error code. +// +#define WU_E_SETUP_UNEXPECTED _HRESULT_TYPEDEF_(0x8024DFFFL) + +////////////////////////////////////////////////////////////////////////////// +// expression evaluator errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_EE_UNKNOWN_EXPRESSION +// +// MessageText: +// +// An expression evaluator operation could not be completed because an expression was unrecognized. +// +#define WU_E_EE_UNKNOWN_EXPRESSION _HRESULT_TYPEDEF_(0x8024E001L) + +// +// MessageId: WU_E_EE_INVALID_EXPRESSION +// +// MessageText: +// +// An expression evaluator operation could not be completed because an expression was invalid. +// +#define WU_E_EE_INVALID_EXPRESSION _HRESULT_TYPEDEF_(0x8024E002L) + +// +// MessageId: WU_E_EE_MISSING_METADATA +// +// MessageText: +// +// An expression evaluator operation could not be completed because an expression contains an incorrect number of metadata nodes. +// +#define WU_E_EE_MISSING_METADATA _HRESULT_TYPEDEF_(0x8024E003L) + +// +// MessageId: WU_E_EE_INVALID_VERSION +// +// MessageText: +// +// An expression evaluator operation could not be completed because the version of the serialized expression data is invalid. +// +#define WU_E_EE_INVALID_VERSION _HRESULT_TYPEDEF_(0x8024E004L) + +// +// MessageId: WU_E_EE_NOT_INITIALIZED +// +// MessageText: +// +// The expression evaluator could not be initialized. +// +#define WU_E_EE_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x8024E005L) + +// +// MessageId: WU_E_EE_INVALID_ATTRIBUTEDATA +// +// MessageText: +// +// An expression evaluator operation could not be completed because there was an invalid attribute. +// +#define WU_E_EE_INVALID_ATTRIBUTEDATA _HRESULT_TYPEDEF_(0x8024E006L) + +// +// MessageId: WU_E_EE_CLUSTER_ERROR +// +// MessageText: +// +// An expression evaluator operation could not be completed because the cluster state of the computer could not be determined. +// +#define WU_E_EE_CLUSTER_ERROR _HRESULT_TYPEDEF_(0x8024E007L) + +// +// MessageId: WU_E_EE_UNEXPECTED +// +// MessageText: +// +// There was an expression evaluator error not covered by another WU_E_EE_* error code. +// +#define WU_E_EE_UNEXPECTED _HRESULT_TYPEDEF_(0x8024EFFFL) + +////////////////////////////////////////////////////////////////////////////// +// UI errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION +// +// MessageText: +// +// The results of download and installation could not be read from the registry due to an unrecognized data format version. +// +#define WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION _HRESULT_TYPEDEF_(0x80243001L) + +// +// MessageId: WU_E_INSTALLATION_RESULTS_INVALID_DATA +// +// MessageText: +// +// The results of download and installation could not be read from the registry due to an invalid data format. +// +#define WU_E_INSTALLATION_RESULTS_INVALID_DATA _HRESULT_TYPEDEF_(0x80243002L) + +// +// MessageId: WU_E_INSTALLATION_RESULTS_NOT_FOUND +// +// MessageText: +// +// The results of download and installation are not available; the operation may have failed to start. +// +#define WU_E_INSTALLATION_RESULTS_NOT_FOUND _HRESULT_TYPEDEF_(0x80243003L) + +// +// MessageId: WU_E_TRAYICON_FAILURE +// +// MessageText: +// +// A failure occurred when trying to create an icon in the taskbar notification area. +// +#define WU_E_TRAYICON_FAILURE _HRESULT_TYPEDEF_(0x80243004L) + +// +// MessageId: WU_E_NON_UI_MODE +// +// MessageText: +// +// Unable to show UI when in non-UI mode; WU client UI modules may not be installed. +// +#define WU_E_NON_UI_MODE _HRESULT_TYPEDEF_(0x80243FFDL) + +// +// MessageId: WU_E_WUCLTUI_UNSUPPORTED_VERSION +// +// MessageText: +// +// Unsupported version of WU client UI exported functions. +// +#define WU_E_WUCLTUI_UNSUPPORTED_VERSION _HRESULT_TYPEDEF_(0x80243FFEL) + +// +// MessageId: WU_E_AUCLIENT_UNEXPECTED +// +// MessageText: +// +// There was a user interface error not covered by another WU_E_AUCLIENT_* error code. +// +#define WU_E_AUCLIENT_UNEXPECTED _HRESULT_TYPEDEF_(0x80243FFFL) + +////////////////////////////////////////////////////////////////////////////// +// reporter errors +/////////////////////////////////////////////////////////////////////////////// +// +// MessageId: WU_E_REPORTER_EVENTCACHECORRUPT +// +// MessageText: +// +// The event cache file was defective. +// +#define WU_E_REPORTER_EVENTCACHECORRUPT _HRESULT_TYPEDEF_(0x8024F001L) + +// +// MessageId: WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED +// +// MessageText: +// +// The XML in the event namespace descriptor could not be parsed. +// +#define WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED _HRESULT_TYPEDEF_(0x8024F002L) + +// +// MessageId: WU_E_INVALID_EVENT +// +// MessageText: +// +// The XML in the event namespace descriptor could not be parsed. +// +#define WU_E_INVALID_EVENT _HRESULT_TYPEDEF_(0x8024F003L) + +// +// MessageId: WU_E_SERVER_BUSY +// +// MessageText: +// +// The server rejected an event because the server was too busy. +// +#define WU_E_SERVER_BUSY _HRESULT_TYPEDEF_(0x8024F004L) + +// +// MessageId: WU_E_CALLBACK_COOKIE_NOT_FOUND +// +// MessageText: +// +// The specified callback cookie is not found. +// +#define WU_E_CALLBACK_COOKIE_NOT_FOUND _HRESULT_TYPEDEF_(0x8024F005L) + +// +// MessageId: WU_E_REPORTER_UNEXPECTED +// +// MessageText: +// +// There was a reporter error not covered by another error code. +// +#define WU_E_REPORTER_UNEXPECTED _HRESULT_TYPEDEF_(0x8024FFFFL) + +// +// MessageId: WU_E_OL_INVALID_SCANFILE +// +// MessageText: +// +// An operation could not be completed because the scan package was invalid. +// +#define WU_E_OL_INVALID_SCANFILE _HRESULT_TYPEDEF_(0x80247001L) + +// +// MessageId: WU_E_OL_NEWCLIENT_REQUIRED +// +// MessageText: +// +// An operation could not be completed because the scan package requires a greater version of the Windows Update Agent. +// +#define WU_E_OL_NEWCLIENT_REQUIRED _HRESULT_TYPEDEF_(0x80247002L) + +// +// MessageId: WU_E_OL_UNEXPECTED +// +// MessageText: +// +// Search using the scan package failed. +// +#define WU_E_OL_UNEXPECTED _HRESULT_TYPEDEF_(0x80247FFFL) + +#endif //_WUERROR_ diff --git a/nsisplugin/EnableMicrosoftUpdate.c b/nsisplugin/EnableMicrosoftUpdate.c new file mode 100644 index 0000000..9ae2b7a --- /dev/null +++ b/nsisplugin/EnableMicrosoftUpdate.c @@ -0,0 +1,41 @@ +#define CINTERFACE +#define COBJMACROS +#include +#include +#include +#include "main.h" + +static const GUID our_CLSID_UpdateServiceManager = { 0xf8d253d9, 0x89a4, 0x4daa, { 0x87, 0xb6, 0x11, 0x68, 0x36, 0x9f, 0x0b, 0x21 } }; +static const GUID our_IID_IUpdateServiceManager2 = { 0x0bb8531d, 0x7e8d, 0x424f, { 0x98, 0x6c, 0xa0, 0xb8, 0xf6, 0x0a, 0x3e, 0x7b } }; + +static const LPWSTR MicrosoftUpdateServiceID = L"7971f918-a847-4430-9279-4a52d1efe18d"; + +EXTERN_C __declspec(dllexport) +void __cdecl EnableMicrosoftUpdate(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop, extra_parameters *extra) { + EXDLL_INIT(); + g_hwndParent = hwndParent; + + IUpdateServiceManager2 *serviceManager; + IUpdateServiceRegistration *registration; + + HRESULT hr = CoCreateInstance(our_CLSID_UpdateServiceManager, NULL, CLSCTX_INPROC_SERVER, our_IID_IUpdateServiceManager2, (void **)&serviceManager); + if (!SUCCEEDED(hr)) { + goto end; + } + + hr = IUpdateServiceManager2_AddService2(serviceManager, SysAllocString(MicrosoftUpdateServiceID), asfAllowPendingRegistration | asfAllowOnlineRegistration | asfRegisterServiceWithAU, SysAllocString(L""), ®istration); + if (!SUCCEEDED(hr)) { + goto end; + } + +end: + if (registration != NULL) { + IUpdateServiceManager2_Release(registration); + } + + if (serviceManager != NULL) { + IUpdateServiceManager2_Release(serviceManager); + } + + pushint(hr); +} diff --git a/nsisplugin/IsProcessRunning.c b/nsisplugin/IsProcessRunning.c new file mode 100644 index 0000000..ba8fda0 --- /dev/null +++ b/nsisplugin/IsProcessRunning.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include "main.h" + +EXTERN_C __declspec(dllexport) +void __cdecl IsProcessRunning(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop, extra_parameters *extra) { + EXDLL_INIT(); + g_hwndParent = hwndParent; + + LPTSTR process = (LPTSTR)malloc(string_size * sizeof(TCHAR)); + popstring(process); + CharLowerBuffW(process, wcslen(process)); + + // Yes, eat all of our SHRTs! + DWORD pids[SHRT_MAX]; + DWORD bytesReturned; + if (!EnumProcesses(pids, sizeof(pids), &bytesReturned)) { + pushstring(L"0"); + return; + } + + DWORD count = bytesReturned / sizeof(DWORD); + for (DWORD i = 0; i < count; ++i) { + HANDLE handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ, FALSE, pids[i]); + if (handle) { + WCHAR path[MAX_PATH]; + if (GetProcessImageFileName(handle, path, ARRAYSIZE(path))) { + LPWSTR basename = wcsrchr(path, L'\\'); + if (basename != NULL) { + basename += 1; + CharLowerBuffW(basename, wcslen(basename)); + if (_wcsicmp(process, basename) == 0) { + pushstring(L"1"); + CloseHandle(handle); + return; + } + } + } + CloseHandle(handle); + } + } + + pushstring(L"0"); +} diff --git a/nsisplugin/Makefile b/nsisplugin/Makefile new file mode 100644 index 0000000..d131958 --- /dev/null +++ b/nsisplugin/Makefile @@ -0,0 +1,110 @@ +FILES = \ + $(wildcard *.c) \ + ../include/nsis/pluginapi.c \ + ../Shared/HResult.c \ + ../Shared/WUErrors.c +RCFILES = resource.rc + +BIN = obj/LegacyUpdateNSIS.dll +DEF = $(patsubst %.dll,%.def,$(BIN)) +STATIC = $(patsubst %.dll,%.a,$(BIN)) +OBJ = $(foreach file,$(FILES),obj/$(notdir $(basename $(file)).o)) +RES = $(foreach file,$(RCFILES),obj/$(notdir $(basename $(file)).res)) + +PREFIX = i686-w64-mingw32- + +CC = $(PREFIX)g++ +RC = $(PREFIX)windres + +override DEBUG := $(or $(DEBUG),1) + +CFLAGS = \ + -std=c++11 \ + -march=i486 \ + -mdll \ + -municode \ + -DUNICODE \ + -D_UNICODE \ + $(if $(filter 1,$(DEBUG)),-D_DEBUG -g,-DNDEBUG -Os) \ + -D__USE_MINGW_ANSI_STDIO=0 \ + -D_USRDLL \ + -s \ + -fPIE \ + -ffunction-sections \ + -fdata-sections \ + -fno-unwind-tables \ + -fno-asynchronous-unwind-tables \ + -fno-exceptions \ + -fno-rtti \ + -flto \ + -Wno-write-strings \ + -I../include \ + -I../shared \ + -include stdafx.h + +LDFLAGS = \ + -nodefaultlibs \ + -nostartfiles \ + -nostdlib \ + -Wl,--gc-sections \ + -Wl,--no-seh \ + -Wl,--nxcompat \ + -Wl,--enable-auto-image-base \ + -Wl,--enable-stdcall-fixup \ + -Wl,--output-def,$(DEF) \ + -Wl,--out-implib,$(STATIC) \ + -Wl,--strip-all \ + -Wl,-e_DllMain \ + -lmsvcrt \ + -lgcc \ + -lpsapi \ + -lkernel32 \ + -luser32 \ + -lole32 \ + -loleaut32 + +RCFLAGS = \ + -F pe-i386 \ + -O coff + +all: before-all $(BIN) after-all + +before-all: + mkdir -p obj + +after-all: +ifeq ($(SIGN),1) + ../build/sign.sh $(BIN) +endif + cp $(BIN) ../setup/x86-unicode/ + +$(BIN): $(OBJ) $(RES) + $(CC) $^ $(CFLAGS) $(LDFLAGS) -o $@ + +obj/%.o: %.c + $(CC) $< $(CFLAGS) -c -o $@ + +obj/%.o: %.cpp + $(CC) $< $(CFLAGS) -c -o $@ + +obj/%.o: ../shared/%.c + $(CC) $< $(CFLAGS) -c -o $@ + +obj/%.o: ../shared/%.cpp + $(CC) $< $(CFLAGS) -c -o $@ + +obj/%.o: ../include/nsis/%.c + $(CC) $< $(CFLAGS) -c -o $@ + +obj/%.res: %.rc + $(RC) $< $(RCFLAGS) -o $@ + +clean: + rm -rf obj + +test: + $(MAKE) DEBUG=$(DEBUG) + cd ../setup && makensis test.nsi + cd ../setup && explorer.exe test.exe + +.PHONY: all before-all after-all clean test diff --git a/nsisplugin/MessageForHresult.c b/nsisplugin/MessageForHresult.c new file mode 100644 index 0000000..02367e8 --- /dev/null +++ b/nsisplugin/MessageForHresult.c @@ -0,0 +1,14 @@ +#include +#include +#include "../shared/HResult.h" + +EXTERN_C __declspec(dllexport) +void __cdecl MessageForHresult(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop, extra_parameters *extra) { + EXDLL_INIT(); + g_hwndParent = hwndParent; + + HRESULT hr = popint(); + LPWSTR message = GetMessageForHresult(hr); + pushstring(message); + LocalFree(message); +} diff --git a/nsisplugin/TaskbarProgress.c b/nsisplugin/TaskbarProgress.c new file mode 100644 index 0000000..181acef --- /dev/null +++ b/nsisplugin/TaskbarProgress.c @@ -0,0 +1,109 @@ +// Based on https://nsis.sourceforge.io/TaskbarProgress_plug-in - zlib licensed +// Cleaned up and refactored into C by Legacy Update +#define CINTERFACE +#define COBJMACROS +#include +#include +#include +#include +#include +#include "main.h" + +static const GUID our_CLSID_ITaskbarList = { 0x56fdf344, 0xfd6d, 0x11d0, { 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90 } }; +static const GUID our_IID_ITaskbarList3 = { 0xea1afb91, 0x9e28, 0x4b86, { 0x90, 0xe9, 0x9e, 0x9f, 0x8a, 0x5e, 0xef, 0xaf } }; + +ITaskbarList3 *g_taskbarList; +UINT g_totalRange; +WNDPROC g_origWndProc; + +LRESULT ProgressBarWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + if (g_origWndProc == NULL) { + return 0; + } + + switch (uMsg) { + case PBM_SETRANGE: + g_totalRange = LOWORD(lParam) + HIWORD(lParam); + break; + + case PBM_SETRANGE32: + g_totalRange = wParam + lParam; + break; + + case PBM_SETPOS: + if (g_taskbarList != NULL) { + ITaskbarList3_SetProgressValue(g_taskbarList, g_hwndParent, wParam, g_totalRange); + } + break; + + case WM_DESTROY: + SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)g_origWndProc); + + if (g_taskbarList != NULL) { + ITaskbarList3_SetProgressState(g_taskbarList, g_hwndParent, TBPF_NOPROGRESS); + ITaskbarList3_Release(g_taskbarList); + g_taskbarList = NULL; + } + + g_origWndProc = NULL; + break; + } + + return CallWindowProc(g_origWndProc, hwnd, uMsg, wParam, lParam); +} + +UINT_PTR NSISPluginCallback(enum NSPIM event) { + // Does nothing, but keeping a callback registered prevents NSIS from unloading the plugin + return 0; +} + +EXTERN_C __declspec(dllexport) +void __cdecl InitTaskbarProgress(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop, extra_parameters *extra) { + EXDLL_INIT(); + g_hwndParent = hwndParent; + + extra->RegisterPluginCallback(g_hInstance, NSISPluginCallback); + + if (g_taskbarList != NULL && g_origWndProc != NULL) { + // Already initialised + return; + } + + HWND innerWindow = FindWindowEx(g_hwndParent, NULL, L"#32770", NULL); + HWND progressBar = FindWindowEx(innerWindow, NULL, L"msctls_progress32", NULL); + PBRANGE range; + HRESULT hr; + + if (progressBar == NULL) { + goto fail; + } + + hr = CoCreateInstance(our_CLSID_ITaskbarList, NULL, CLSCTX_INPROC_SERVER, our_IID_ITaskbarList3, (void**)&g_taskbarList); + if (!SUCCEEDED(hr)) { + goto fail; + } + + hr = ITaskbarList3_HrInit(g_taskbarList); + if (!SUCCEEDED(hr)) { + goto fail; + } + + // Get the initial progress bar range + SendMessage(progressBar, PBM_GETRANGE, 0, (LPARAM)&range); + g_totalRange = range.iLow + range.iHigh; + + // Add our own window procedure so we can respond to progress bar updates + g_origWndProc = (WNDPROC)SetWindowLongPtr(progressBar, GWLP_WNDPROC, (LONG_PTR)ProgressBarWndProc); + if (g_origWndProc == NULL) { + goto fail; + } + return; + +fail: + if (g_taskbarList != NULL) { + ITaskbarList3_Release(g_taskbarList); + g_taskbarList = NULL; + } + + g_origWndProc = NULL; +} diff --git a/nsisplugin/main.c b/nsisplugin/main.c new file mode 100644 index 0000000..4bf78f6 --- /dev/null +++ b/nsisplugin/main.c @@ -0,0 +1,10 @@ +#include +#include + +HMODULE g_hInstance; +HWND g_hwndParent; + +EXTERN_C BOOL WINAPI DllMain(HMODULE hInstance, UINT iReason, LPVOID lpReserved) { + g_hInstance = hInstance; + return TRUE; +} diff --git a/nsisplugin/main.h b/nsisplugin/main.h new file mode 100644 index 0000000..8cc23f6 --- /dev/null +++ b/nsisplugin/main.h @@ -0,0 +1,4 @@ +#include + +EXTERN_C HMODULE g_hInstance; +EXTERN_C HWND g_hwndParent; diff --git a/nsisplugin/resource.h b/nsisplugin/resource.h new file mode 100644 index 0000000..e69de29 diff --git a/nsisplugin/resource.rc b/nsisplugin/resource.rc new file mode 100644 index 0000000..c665022 --- /dev/null +++ b/nsisplugin/resource.rc @@ -0,0 +1,53 @@ +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +#include +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(65001) + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,9,0,0 + PRODUCTVERSION 1,9,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Hashbang Productions" + VALUE "FileDescription", "Legacy Update Setup Helper" + VALUE "FileVersion", "1.9.0.0" + VALUE "InternalName", "LegacyUpdateNSIS.dll" + VALUE "LegalCopyright", "© Hashbang Productions. All rights reserved." + VALUE "OriginalFilename", "LegacyUpdateNSIS.dll" + VALUE "ProductName", "Legacy Update" + VALUE "ProductVersion", "1.9.0.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// diff --git a/nsisplugin/stdafx.h b/nsisplugin/stdafx.h new file mode 100644 index 0000000..d6480c0 --- /dev/null +++ b/nsisplugin/stdafx.h @@ -0,0 +1,16 @@ +#pragma once + +#ifndef STRICT +#define STRICT +#endif + +#define WINVER 0x0500 +#define _WIN32_WINNT 0x0500 + +#define ISOLATION_AWARE_ENABLED 1 // Enable comctl 6.0 (visual styles) + +#include "resource.h" + +#include + +EXTERN_C HWND g_hwndParent; diff --git a/setup/7z.exe b/setup/7z.exe new file mode 100644 index 0000000..fad2cfa Binary files /dev/null and b/setup/7z.exe differ diff --git a/setup/7zip.nsh b/setup/7zip.nsh new file mode 100644 index 0000000..d95c882 --- /dev/null +++ b/setup/7zip.nsh @@ -0,0 +1,4 @@ +Function Install7Zip + File 7z.exe + !insertmacro Install "7-Zip" "7z.exe" "/S" +FunctionEnd \ No newline at end of file diff --git a/setup/ActiveX.inf b/setup/ActiveX.inf new file mode 100644 index 0000000..b245ba9 --- /dev/null +++ b/setup/ActiveX.inf @@ -0,0 +1,9 @@ +[Version] +Signature="$CHICAGO$" +AdvancedINF=2.0 + +[Setup Hooks] +setup=setup + +[setup] +run="%EXTRACT_DIR%\setup.exe" diff --git a/setup/AeroWizard.nsh b/setup/AeroWizard.nsh new file mode 100644 index 0000000..80e2962 --- /dev/null +++ b/setup/AeroWizard.nsh @@ -0,0 +1,86 @@ +!macro SetFont font parent control + GetDlgItem $0 ${parent} ${control} + SendMessage $0 ${WM_SETFONT} ${font} 0 +!macroend + +!macro SetControlColor parent control color + GetDlgItem $0 ${parent} ${control} + SetCtlColors $0 ${color} SYSCLR:WINDOW +!macroend + +!macro SetBackground parent control + !insertmacro SetControlColor ${parent} ${control} SYSCLR:WINDOWTEXT +!macroend + +Var /GLOBAL ChildHwnd + +!macro -AeroWizardOnShow + ; Get the child window where the wizard page is + FindWindow $ChildHwnd "#32770" "" $HWNDPARENT + + ; Set font + ${If} ${AtLeastWinVista} + ; Aero wizard style + ${If} ${AtLeastWin11} + ; Semi-Fluent style + CreateFont $3 "Segoe UI Variable Display Semibold" 14 600 + !insertmacro SetControlColor $HWNDPARENT 1037 SYSCLR:WINDOWTEXT + ${Else} + CreateFont $3 "Segoe UI" 12 400 + !insertmacro SetControlColor $HWNDPARENT 1037 0x003399 + ${EndIf} + CreateFont $2 "Segoe UI" 8 400 + !insertmacro SetFont $3 $HWNDPARENT 1037 + !insertmacro SetFont $2 $HWNDPARENT 1 + !insertmacro SetFont $2 $HWNDPARENT 2 + !insertmacro SetFont $2 $HWNDPARENT 3 + !insertmacro SetFont $2 $HWNDPARENT 1028 + !insertmacro SetFont $2 $ChildHwnd 1000 + !insertmacro SetFont $2 $ChildHwnd 1004 + !insertmacro SetFont $2 $ChildHwnd 1006 + !insertmacro SetFont $2 $ChildHwnd 1016 + !insertmacro SetFont $2 $ChildHwnd 1022 + !insertmacro SetFont $2 $ChildHwnd 1023 + !insertmacro SetFont $2 $ChildHwnd 1029 + !insertmacro SetFont $2 $ChildHwnd 1027 + !insertmacro SetFont $2 $ChildHwnd 1032 + !insertmacro SetFont $2 $ChildHwnd 1043 + ${Else} + ; Wizard97 style + ${If} ${FileExists} "$FONTS\framd.ttf" + CreateFont $2 "Franklin Gothic Medium" 13 400 + !insertmacro SetFont $2 $HWNDPARENT 1037 + !insertmacro SetControlColor $HWNDPARENT 1037 0x003399 + ${Else} + CreateFont $2 "Verdana" 12 800 + !insertmacro SetFont $2 $HWNDPARENT 1037 + !insertmacro SetControlColor $HWNDPARENT 1037 SYSCLR:WINDOWTEXT + ${EndIf} + ${EndIf} + + ; Set white background + SetCtlColors $HWNDPARENT SYSCLR:WINDOWTEXT SYSCLR:WINDOW + SetCtlColors $ChildHwnd SYSCLR:WINDOWTEXT SYSCLR:WINDOW + !insertmacro SetBackground $ChildHwnd 1020 + !insertmacro SetBackground $ChildHwnd 1028 + !insertmacro SetBackground $ChildHwnd 1006 + !insertmacro SetBackground $ChildHwnd 1022 + !insertmacro SetBackground $ChildHwnd 1023 + !insertmacro SetBackground $ChildHwnd 1027 + !insertmacro SetBackground $ChildHwnd 1029 + !insertmacro SetBackground $ChildHwnd 1032 + !insertmacro SetBackground $ChildHwnd 1043 + + ; Activate taskbar progress bar plugin + ${If} ${AtLeastWin7} + LegacyUpdateNSIS::InitTaskbarProgress + ${EndIf} +!macroend + +Function AeroWizardOnShow + !insertmacro -AeroWizardOnShow +FunctionEnd + +Function un.AeroWizardOnShow + !insertmacro -AeroWizardOnShow +FunctionEnd diff --git a/setup/Common.nsh b/setup/Common.nsh new file mode 100644 index 0000000..83a82e8 --- /dev/null +++ b/setup/Common.nsh @@ -0,0 +1,258 @@ +!addplugindir /x86-unicode x86-unicode + +SetPluginUnload alwaysoff + +!if ${SIGN} == 1 + !finalize '../build/sign.sh "%1"' + !uninstfinalize '../build/sign.sh "%1"' +!endif + +!define IsNativeIA64 '${IsNativeMachineArchitecture} ${IMAGE_FILE_MACHINE_IA64}' + +Function GetArch + Var /GLOBAL Arch + ${If} $Arch == "" + ${If} ${IsNativeIA32} + StrCpy $Arch "x86" + ${ElseIf} ${IsNativeAMD64} + StrCpy $Arch "x64" + ${ElseIf} ${IsNativeIA64} + StrCpy $Arch "ia64" + ${Else} + StrCpy $Arch "" + ${EndIf} + ${EndIf} + Push $Arch +FunctionEnd + +!macro _HasFlag _a _b _t _f + !insertmacro _LOGICLIB_TEMP + ${GetParameters} $_LOGICLIB_TEMP + ClearErrors + ${GetOptions} $_LOGICLIB_TEMP `${_b}` $_LOGICLIB_TEMP + IfErrors `${_f}` `${_t}` +!macroend + +!define IsActiveXInstall `"" HasFlag "/activex"` +!define IsHelp `"" HasFlag "/?"` + +!macro DetailPrint text + SetDetailsPrint both + DetailPrint "${text}" + SetDetailsPrint listonly +!macroend + +Var /GLOBAL Download.ID + +!macro DownloadRequest url local extra + NSxfer::Request \ + /TIMEOUTCONNECT 60000 \ + /TIMEOUTRECONNECT 60000 \ + /OPTCONNECTTIMEOUT 60000 \ + /OPTRECEIVETIMEOUT 60000 \ + /OPTSENDTIMEOUT 60000 \ + /URL "${url}" \ + /LOCAL "${local}" \ + /INTERNETFLAGS ${INTERNET_FLAG_RELOAD}|${INTERNET_FLAG_NO_CACHE_WRITE}|${INTERNET_FLAG_KEEP_CONNECTION}|${INTERNET_FLAG_NO_COOKIES}|${INTERNET_FLAG_NO_UI} \ + /SECURITYFLAGS ${SECURITY_FLAG_STRENGTH_STRONG} \ + ${extra} \ + /END + Pop $Download.ID +!macroend + +Function DownloadWaitSilent + NSxfer::Wait /ID $Download.ID /MODE SILENT /END + NSxfer::Query /ID $Download.ID /ERRORCODE /ERRORTEXT /END +FunctionEnd + +Function DownloadWait + NSxfer::Wait /ID $Download.ID /MODE PAGE \ + /STATUSTEXT \ + "{TIMEREMAINING} left - {RECVSIZE} of {FILESIZE} ({SPEED})" \ + "{TIMEREMAINING} left - {TOTALRECVSIZE} of {TOTALFILESIZE} ({SPEED})" \ + /ABORT "Legacy Update" "Cancelling will terminate Legacy Update setup." \ + /END + NSxfer::Query /ID $Download.ID /ERRORCODE /ERRORTEXT /END +FunctionEnd + +!macro -Download name url filename verbose + !insertmacro DetailPrint "Downloading ${name}..." + !insertmacro DownloadRequest "${url}" "${filename}" "" + ${If} ${verbose} == 1 + Call DownloadWait + ${Else} + Call DownloadWaitSilent + ${EndIf} + Pop $1 + Pop $0 + ${If} $0 != "OK" + ${If} $1 != ${ERROR_INTERNET_OPERATION_CANCELLED} + MessageBox MB_USERICON "${name} failed to download.$\r$\n$\r$\n$0 ($1)" /SD IDOK + ${EndIf} + Delete /REBOOTOK "${filename}" + SetErrorLevel 1 + Abort + ${EndIf} +!macroend + +!macro Download name url filename verbose + ${If} ${FileExists} "$EXEDIR\${filename}" + ${If} $OUTDIR != "$EXEDIR" + SetOutPath "$EXEDIR" + ${EndIf} + StrCpy $0 "$EXEDIR\${filename}" + ${Else} + ${If} $OUTDIR != "$RunOnceDir" + SetOutPath "$RunOnceDir" + ${EndIf} + ${IfNot} ${FileExists} "$RunOnceDir\${filename}" + !insertmacro -Download '${name}' '${url}' '$RunOnceDir\${filename}' ${verbose} + ${EndIf} + StrCpy $0 "$RunOnceDir\${filename}" + ${EndIf} +!macroend + +Var /GLOBAL Exec.Command +Var /GLOBAL Exec.Name +Var /GLOBAL Exec.IsWusa + +Function ExecWithErrorHandling + Push $0 + ExecWait '$Exec.Command' $0 + ${If} $0 == ${ERROR_SUCCESS_REBOOT_REQUIRED} + SetRebootFlag true + ${ElseIf} $0 == ${ERROR_INSTALL_USEREXIT} + SetErrorLevel ${ERROR_INSTALL_USEREXIT} + Abort + ${ElseIf} $Exec.IsWusa == 1 + ${AndIf} $0 == 1 + ; wusa exits with 1 if the patch is already installed. Treat this as success. + DetailPrint "Installation skipped - already installed" + ${ElseIf} $Exec.IsWusa == 1 + ${AndIf} $0 == ${WU_S_ALREADY_INSTALLED} + DetailPrint "Installation skipped - already installed" + ${ElseIf} $Exec.IsWusa == 1 + ${AndIf} $0 == ${WU_E_NOT_APPLICABLE} + DetailPrint "Installation skipped - not applicable" + ${ElseIf} $0 != 0 + LegacyUpdateNSIS::MessageForHresult $0 + Pop $1 + MessageBox MB_USERICON "$Exec.Name failed to install.$\r$\n$\r$\n$1 ($0)" /SD IDOK + SetErrorLevel $0 + Abort + ${EndIf} + Pop $0 +FunctionEnd + +!macro ExecWithErrorHandling name command iswusa + StrCpy $Exec.Command '${command}' + StrCpy $Exec.Name '${name}' + StrCpy $Exec.IsWusa '${iswusa}' + Call ExecWithErrorHandling +!macroend + +!macro Install name filename args + !insertmacro DetailPrint "Installing ${name}..." + !insertmacro ExecWithErrorHandling '${name}' '"$0" ${args}' 0 +!macroend + +!macro InstallSP name filename + ; SPInstall.exe /norestart seems to be broken. We let it do a delayed restart, then cancel it. + !insertmacro DetailPrint "Extracting ${name}..." + !insertmacro ExecWithErrorHandling '${name}' '"$0" /X:"$PLUGINSDIR\${filename}"' 0 + !insertmacro DetailPrint "Installing ${name}..." + !insertmacro ExecWithErrorHandling '${name}' '"$PLUGINSDIR\${filename}\spinstall.exe" /unattend /nodialog /warnrestart:600' 0 + + ; If we successfully abort a shutdown, we'll get exit code 0, so we know a reboot is required. + ExecWait "$WINDIR\system32\shutdown.exe /a" $0 + ${If} $0 == 0 + SetRebootFlag true + ${EndIf} +!macroend + +!macro DownloadMSU kbid name url + !insertmacro Download '${name} (${kbid})' '${url}' '${kbid}.msu' 1 +!macroend + +!macro InstallMSU kbid name + ; Stop AU service before running wusa so it doesn't try checking for updates online first (which + ; may never complete before we install our patches). + !insertmacro DetailPrint "Installing ${name} (${kbid})..." + SetDetailsPrint none + ExecShellWait "" "$WINDIR\system32\net.exe" "stop wuauserv" SW_HIDE + SetDetailsPrint listonly + !insertmacro ExecWithErrorHandling '${name} (${kbid})' '$WINDIR\system32\wusa.exe /quiet /norestart "$0"' 1 +!macroend + +!macro EnsureAdminRights + ${IfNot} ${AtLeastWin2000} + MessageBox MB_USERICON "Legacy Update requires at least Windows 2000." /SD IDOK + SetErrorLevel ${ERROR_OLD_WIN_VERSION} + Quit + ${EndIf} + + System::Call '${IsUserAnAdmin}() .r0' + ${If} $0 == 0 + MessageBox MB_USERICON "Log on as an administrator to install Legacy Update." /SD IDOK + SetErrorLevel ${ERROR_ELEVATION_REQUIRED} + Quit + ${EndIf} +!macroend + +!macro InhibitSleep state + ${If} ${state} == 1 + System::Call '${SetThreadExecutionState}(${ES_CONTINUOUS}|${ES_SYSTEM_REQUIRED})' + ${Else} + System::Call '${SetThreadExecutionState}(${ES_CONTINUOUS})' + ${EndIf} +!macroend + +!macro TryWithRetry command error + ClearErrors + ${command} + IfErrors 0 +3 + MessageBox MB_RETRYCANCEL|MB_USERICON \ + '${error}$\r$\n$\r$\nIf Internet Explorer is open, close it and click Retry.' \ + /SD IDCANCEL \ + IDRETRY -3 + Abort +!macroend + +!macro TryFile file oname + !insertmacro TryWithRetry `File "/ONAME=${oname}" "${file}"` 'Unable to write to "${oname}".' +!macroend + +!macro TryDelete file + !insertmacro TryWithRetry `Delete "${file}"` 'Unable to delete "${file}".' +!macroend + +!macro TryRename src dest + !insertmacro TryWithRetry `Rename "${src}" "${dest}"` 'Unable to write to "${dest}".' +!macroend + +!macro RegisterDLL un arch file + ${If} "${un}" == "Un" + StrCpy $0 "/u" + ${Else} + StrCpy $0 "" + ${EndIf} + + ${If} "${arch}" == "x64" + ${DisableX64FSRedirection} + ${EndIf} + + ClearErrors + ExecWait '"$WINDIR\system32\regsvr32.exe" /s $0 "${file}"' + ${If} ${Errors} + ; Do it again non-silently so the user can see the error. + ExecWait '"$WINDIR\system32\regsvr32.exe" $0 "${file}"' + ${If} "${arch}" == "x64" + ${EnableX64FSRedirection} + ${EndIf} + Abort + ${EndIf} + + ${If} "${arch}" == "x64" + ${EnableX64FSRedirection} + ${EndIf} +!macroend diff --git a/setup/Constants.nsh b/setup/Constants.nsh new file mode 100644 index 0000000..0e66e52 --- /dev/null +++ b/setup/Constants.nsh @@ -0,0 +1,51 @@ +; Product +!define NAME "WUIsBack" +!define DOMAIN "legacyupdate.net" + +; Version +!getdllversion "..\Release\LegacyUpdate.dll" DLLVersion_ +!define LONGVERSION "${DLLVersion_1}.${DLLVersion_2}.${DLLVersion_3}.${DLLVersion_4}" +!define VERSION "${DLLVersion_1}.${DLLVersion_2}.${DLLVersion_3}" + +!if ${DLLVersion_3} == 0 + !define /redef VERSION "${DLLVersion_1}.${DLLVersion_2}" +!endif + +; Main URLs +!define WEBSITE "http://legacyupdate.net/" +!define UPDATE_URL "http://legacyupdate.net/windowsupdate/v6/" +!define UPDATE_URL_HTTPS "https://legacyupdate.net/windowsupdate/v6/" +!define WSUS_SERVER "http://fritzbox3272.controlliamo.com/WUIsBack/v6" +!define WSUS_SERVER_HTTPS "https://fritzbox3272.controlliamo.com/WUIsBack/v6" +!define TRUSTEDR "http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en" +!define WIN81UPGRADE_URL "https://go.microsoft.com/fwlink/?LinkId=798437" + +; Control Panel entry +!define CPL_GUID "{FFBE8D44-E9CF-4DD8-9FD6-976802C94D9C}" +!define CPL_APPNAME "LegacyUpdate" + +; RunOnce +!define RUNONCE_USERNAME "LegacyUpdateTemp" +!define RUNONCE_PASSWORD "Legacy_Update0" + +; Registry keys +!define REGPATH_LEGACYUPDATE_SETUP "Software\Hashbang Productions\Legacy Update\Setup" +!define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" +!define REGPATH_WUPOLICY "Software\Policies\Microsoft\Windows\WindowsUpdate" +!define REGPATH_WUAUPOLICY "${REGPATH_WUPOLICY}\AU" +!define REGPATH_WU "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate" +!define REGPATH_WU_SERVICES "${REGPATH_WU}\Services" +!define REGPATH_INETSETTINGS "Software\Microsoft\Windows\CurrentVersion\Internet Settings" +!define REGPATH_ZONEDOMAINS "${REGPATH_INETSETTINGS}\ZoneMap\Domains" +!define REGPATH_ZONEESCDOMAINS "${REGPATH_INETSETTINGS}\ZoneMap\EscDomains" +!define REGPATH_CPLNAMESPACE "Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\${CPL_GUID}" +!define REGPATH_CPLCLSID "CLSID\${CPL_GUID}" +!define REGPATH_WINLOGON "Software\Microsoft\Windows NT\CurrentVersion\Winlogon" +!define REGPATH_POSREADY "System\WPA\PosReady" +!define REGPATH_SCHANNEL_PROTOCOLS "System\CurrentControlSet\Control\SecurityProviders\SChannel\Protocols" +!define REGPATH_DOTNET_V2 "Software\Microsoft\.NETFramework\v2.0.50727" +!define REGPATH_DOTNET_V4 "Software\Microsoft\.NETFramework\v4.0.30319" +!define REGPATH_RUNONCE "Software\Microsoft\Windows\CurrentVersion\RunOnce" +!define REGPATH_PACKAGEINDEX "Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageIndex" +!define REGPATH_SERVICING_SHA2 "Software\Microsoft\Windows\CurrentVersion\Servicing\Codesigning\SHA2" +!define REGPATH_COMPONENT_THEMES "Software\Microsoft\Active Setup\Installed Components\{2C7339CF-2B09-4501-B3F3-F3508C9228ED}" diff --git a/setup/Download2KXP.nsh b/setup/Download2KXP.nsh new file mode 100644 index 0000000..eee57f2 --- /dev/null +++ b/setup/Download2KXP.nsh @@ -0,0 +1,122 @@ +Function GetUpdateLanguage + Var /GLOBAL UpdateLanguage + ${If} $UpdateLanguage == "" + ReadRegStr $UpdateLanguage HKLM "Hardware\Description\System" "Identifier" + ${If} $UpdateLanguage == "NEC PC-98" + StrCpy $UpdateLanguage "NEC98" + ${Else} + ReadRegStr $UpdateLanguage HKLM "System\CurrentControlSet\Control\Nls\Language" "InstallLanguage" + ReadINIStr $UpdateLanguage $PLUGINSDIR\Patches.ini Language $UpdateLanguage + ${EndIf} + ${EndIf} + Push $UpdateLanguage +FunctionEnd + +!macro NeedsSPHandler name os sp + Function Needs${name} + ${If} ${Is${os}} + ${AndIf} ${AtMostServicePack} ${sp} + Push 1 + ${Else} + Push 0 + ${EndIf} + FunctionEnd +!macroend + +!macro NeedsFileVersionHandler name file version + Function Needs${name} + ${GetFileVersion} "$SYSDIR\${file}" $0 + ${VersionCompare} $0 ${version} $1 + ${If} $1 == 2 ; Less than + Push 1 + ${Else} + Push 0 + ${EndIf} + FunctionEnd +!macroend + +Var /GLOBAL Patch.Key +Var /GLOBAL Patch.File +Var /GLOBAL Patch.Title + +Function -PatchHandler + Call GetUpdateLanguage + Call GetArch + Pop $1 + Pop $0 + ClearErrors + ReadINIStr $0 $PLUGINSDIR\Patches.ini "$Patch.Key" $0-$1 + ${If} ${Errors} + ; Language neutral + ClearErrors + ReadINIStr $0 $PLUGINSDIR\Patches.ini "$Patch.Key" $1 + ${If} ${Errors} + MessageBox MB_USERICON "$Patch.Title could not be installed.$\r$\n$\r$\nThe installed Windows language and/or architecture is not supported." /SD IDOK + SetErrorLevel 1 + Abort + ${EndIf} + ${EndIf} + !insertmacro Download "$Patch.Title" "$0" "$Patch.File" 1 +FunctionEnd + +!macro PatchHandler kbid title params + Function Download${kbid} + Call Needs${kbid} + Pop $0 + ${If} $0 == 1 + StrCpy $Patch.Key "${kbid}" + StrCpy $Patch.File "${kbid}.exe" + StrCpy $Patch.Title "${title}" + Call -PatchHandler + ${EndIf} + FunctionEnd + + Function Install${kbid} + Call Needs${kbid} + Pop $0 + ${If} $0 == 1 + Call Download${kbid} + !insertmacro Install "${title}" "${kbid}.exe" "${params}" + ${EndIf} + FunctionEnd +!macroend + +!insertmacro NeedsSPHandler "W2KSP4" "Win2000" 2 +!insertmacro NeedsSPHandler "XPSP2" "WinXP2002" 0 +!insertmacro NeedsSPHandler "XPSP3" "WinXP2002" 2 +!insertmacro NeedsSPHandler "XPESP3" "WinXP2002" 2 +!insertmacro NeedsSPHandler "2003SP2" "WinXP2003" 1 + +!insertmacro NeedsFileVersionHandler "KB835732" "kernel32.dll" "5.00.2195.6897" +!insertmacro NeedsFileVersionHandler "IE6" "mshtml.dll" "6.0.2600.0" + +!insertmacro PatchHandler "W2KSP4" "Windows 2000 Service Pack 4" "-u -z" +!insertmacro PatchHandler "KB835732" "Windows 2000 KB835732 Update" "/passive /norestart" +!insertmacro PatchHandler "XPSP2" "Windows XP Service Pack 2" "/passive /norestart" +!insertmacro PatchHandler "XPSP3" "Windows XP Service Pack 3" "/passive /norestart" +!insertmacro PatchHandler "2003SP2" "Windows XP x64 Edition/Server 2003 Service Pack 2" "/passive /norestart" +!insertmacro PatchHandler "XPESP3" "Windows XP Embedded Service Pack 3" "/passive /norestart" + +Function DownloadIE6 + Call NeedsIE6 + Pop $0 + ${If} $0 == 1 + StrCpy $Patch.Key "W2KIE6" + StrCpy $Patch.File "ie6sp1.cab" + StrCpy $Patch.Title "Internet Explorer 6 SP1" + Call -PatchHandler + ${EndIf} +FunctionEnd + +Function InstallIE6 + Call NeedsIE6 + Pop $0 + ${If} $0 == 1 + Call DownloadIE6 + !insertmacro DetailPrint "Extracting Internet Explorer 6 SP1..." + ExecShellWait "" "$WINDIR\system32\expand.exe" '"$OUTDIR\ie6sp1.cab" -F:ie6setup.exe "$PLUGINSDIR"' SW_HIDE + ExecShellWait "" "$WINDIR\system32\expand.exe" '"$OUTDIR\ie6sp1.cab" -F:iebatch.txt "$PLUGINSDIR"' SW_HIDE + !insertmacro DetailPrint "Installing Internet Explorer 6 SP1..." + !insertmacro ExecWithErrorHandling 'Internet Explorer 6 SP1' '"$PLUGINSDIR\ie6setup.exe" /q' 0 + ${EndIf} +FunctionEnd diff --git a/setup/Download8.nsh b/setup/Download8.nsh new file mode 100644 index 0000000..a6d2558 --- /dev/null +++ b/setup/Download8.nsh @@ -0,0 +1,46 @@ +; Windows 8 Servicing Stack +!insertmacro MSUHandler "KB4598297" "2021-01 Servicing Stack Update for Windows Server 2012" "Package_for_KB4598297" + +; Windows 8.1 Servicing Stack +!insertmacro MSUHandler "KB3021910" "2015-04 Servicing Stack Update for Windows 8.1" "Package_for_KB3021910" + +; Windows 8.1 Update 1 +!insertmacro MSUHandler "KB2919355" "Windows 8.1 Update 1" "Package_for_KB2919355" +!insertmacro MSUHandler "KB2932046" "Windows 8.1 Update 1" "Package_for_KB2932046" +!insertmacro MSUHandler "KB2959977" "Windows 8.1 Update 1" "Package_for_KB2959977" +!insertmacro MSUHandler "KB2937592" "Windows 8.1 Update 1" "Package_for_KB2937592" +!insertmacro MSUHandler "KB2934018" "Windows 8.1 Update 1" "Package_for_KB2934018" + +Function NeedsWin81Update1 + Call NeedsKB2919355 + Call NeedsKB2932046 + Call NeedsKB2937592 + Call NeedsKB2934018 + Pop $0 + Pop $1 + Pop $2 + Pop $3 + Pop $4 + + ${If} $0 == 1 + ${OrIf} $1 == 1 + ${OrIf} $2 == 1 + ${OrIf} $3 == 1 + Push 1 + ${Else} + Push 0 + ${EndIf} +FunctionEnd + +; Weird prerequisite to Update 1 that fixes the main KB2919355 update failing to install +Function DownloadClearCompressionFlag + Call GetArch + Pop $0 + ReadINIStr $0 $PLUGINSDIR\Patches.ini ClearCompressionFlag $0 + !insertmacro Download "Windows 8.1 Update 1 Preparation Tool" "$0" "ClearCompressionFlag.exe" 1 +FunctionEnd + +Function InstallClearCompressionFlag + Call DownloadClearCompressionFlag + !insertmacro Install "Windows 8.1 Update 1 Preparation Tool" "ClearCompressionFlag.exe" "" +FunctionEnd diff --git a/setup/DownloadVista7.nsh b/setup/DownloadVista7.nsh new file mode 100644 index 0000000..3cfe4e7 --- /dev/null +++ b/setup/DownloadVista7.nsh @@ -0,0 +1,145 @@ +Function GetComponentArch + Var /GLOBAL ComponentArch + ${If} $ComponentArch == "" + ${If} ${IsNativeIA32} + StrCpy $ComponentArch "x86" + ${ElseIf} ${IsNativeAMD64} + StrCpy $ComponentArch "amd64" + ${ElseIf} ${IsNativeIA64} + StrCpy $ComponentArch "ia64" + ${Else} + StrCpy $ComponentArch "" + ${EndIf} + ${EndIf} + Push $ComponentArch +FunctionEnd + +!macro SPHandler kbid title os sp + !insertmacro NeedsSPHandler "${kbid}" "${os}" "${sp}" + + Function Download${kbid} + Call Needs${kbid} + Pop $0 + ${If} $0 == 1 + Call GetArch + Pop $0 + ReadINIStr $0 $PLUGINSDIR\Patches.ini "${kbid}" $0 + !insertmacro Download "${title}" "$0" "${kbid}.exe" 1 + ${EndIf} + FunctionEnd + + Function Install${kbid} + Call Needs${kbid} + Pop $0 + ${If} $0 == 1 + Call Download${kbid} + !insertmacro InstallSP "${title}" "${kbid}.exe" + ${EndIf} + FunctionEnd +!macroend + +!macro MSUHandler kbid title packagename + Function Needs${kbid} + Call GetComponentArch + Pop $0 + ClearErrors + EnumRegKey $1 HKLM "${REGPATH_PACKAGEINDEX}\${packagename}~31bf3856ad364e35~$0~~0.0.0.0" 0 + ${If} ${Errors} + Push 1 + ${Else} + Push 0 + ${EndIf} + FunctionEnd + + Function Download${kbid} + Call Needs${kbid} + Pop $0 + ${If} $0 == 1 + Call GetArch + Pop $0 + ReadINIStr $1 $PLUGINSDIR\Patches.ini "${kbid}" $0 + !insertmacro DownloadMSU "${kbid}" "${title}" "$1" + ${EndIf} + FunctionEnd + + Function Install${kbid} + Call Needs${kbid} + Pop $0 + ${If} $0 == 1 + Call Download${kbid} + !insertmacro InstallMSU "${kbid}" "${title}" + ${EndIf} + FunctionEnd +!macroend + +; Service Packs +!insertmacro SPHandler "VistaSP1" "Windows Vista Service Pack 1" "WinVista" 0 +!insertmacro SPHandler "VistaSP2" "Windows Vista Service Pack 2" "WinVista" 1 +!insertmacro SPHandler "Win7SP1" "Windows 7 Service Pack 1" "Win7" 0 + +; Windows Vista post-SP2 update combination that fixes WU indefinitely checking for updates +!insertmacro MSUHandler "KB3205638" "Security Update for Windows Vista" "Package_for_KB3205638" +!insertmacro MSUHandler "KB4012583" "Security Update for Windows Vista" "Package_for_KB4012583" +!insertmacro MSUHandler "KB4015195" "Security Update for Windows Vista" "Package_for_KB4015195" +!insertmacro MSUHandler "KB4015380" "Security Update for Windows Vista" "Package_for_KB4015380" + +; Vista IE9 +!insertmacro MSUHandler "KB971512" "Update for Windows Vista" "Package_for_KB971512" +!insertmacro MSUHandler "KB2117917" "Platform Update Supplement for Windows Vista" "Package_for_KB2117917" + +!insertmacro NeedsFileVersionHandler "IE9" "mshtml.dll" "9.0.8112.16421" +!insertmacro PatchHandler "IE9" "Internet Explorer 9 for Windows Vista" "/passive /norestart /update-no /closeprograms" + +; Windows Vista Servicing Stack Update +!insertmacro MSUHandler "KB4493730" "2019-04 Servicing Stack Update for Windows Server 2008" "Package_1_for_KB4493730" + +; Windows 7 Servicing Stack Update +!insertmacro MSUHandler "KB3138612" "2016-03 Servicing Stack Update for Windows 7" "Package_for_KB3138612" +!insertmacro MSUHandler "KB4474419" "SHA-2 Code Signing Support Update for Windows 7" "Package_for_KB4474419" +!insertmacro MSUHandler "KB4490628" "2019-03 Servicing Stack Update for Windows 7" "Package_for_KB3138612" + +; Windows Home Server 2011 Update Rollup 4 +!insertmacro MSUHandler "KB2757011" "Windows Home Server 2011 Update Rollup 4" "Package_for_KB2757011" + +Function NeedsVistaPostSP2 + Call NeedsKB3205638 + Call NeedsKB4012583 + Call NeedsKB4015195 + Call NeedsKB4015380 + Call NeedsKB4493730 + Pop $0 + Pop $1 + Pop $2 + Pop $3 + Pop $4 + ${If} $0 == 1 + ${OrIf} $1 == 1 + ${OrIf} $2 == 1 + ${OrIf} $3 == 1 + ${OrIf} $4 == 1 + Push 1 + ${Else} + Push 0 + ${EndIf} +FunctionEnd + +Function NeedsWin7SHA2 + ReadRegDWORD $0 HKLM "${REGPATH_SERVICING_SHA2}" "SHA2-Codesigning-Support" + ${If} $0 == 1 + Push 0 + ${Else} + Call NeedsKB3138612 + Call NeedsKB4474419 + Call NeedsKB4490628 + Pop $0 + Pop $1 + Pop $2 + ${If} $0 == 1 + ${OrIf} $1 == 1 + ${OrIf} $2 == 1 + Push 1 + ${Else} + Push 0 + ${EndIf} + ${EndIf} +FunctionEnd diff --git a/setup/DownloadWUA.nsh b/setup/DownloadWUA.nsh new file mode 100644 index 0000000..00db8ea --- /dev/null +++ b/setup/DownloadWUA.nsh @@ -0,0 +1,47 @@ +Function DetermineWUAVersion + ; Hardcoded special case for XP Home/Embedded SP3, because the WUA 7.6.7600.256 setup SFX is + ; seriously broken on it, potentially causing an unbootable Windows install due to it entering an + ; infinite loop of creating folders in the root of C:. + ${If} ${IsWinXP2002} + ${AndIf} ${AtLeastServicePack} 3 + ${AndIf} ${IsHomeEdition} + ${OrIf} ${IsEmbedded} + StrCpy $1 "5.1.3-home" + ${Else} + GetWinVer $1 Major + GetWinVer $2 Minor + GetWinVer $3 ServicePack + StrCpy $1 "$1.$2.$3" + ${EndIf} + + StrCpy $0 "" + + ClearErrors + ReadINIStr $2 $PLUGINSDIR\Patches.ini WUA $1 + ${If} ${Errors} + Return + ${EndIf} + + ${GetFileVersion} "$SYSDIR\wuapi.dll" $1 + ${VersionCompare} $1 $2 $3 + ${If} $3 == 2 + Call GetArch + Pop $0 + ReadINIStr $0 $PLUGINSDIR\Patches.ini WUA $2-$0 + ${EndIf} +FunctionEnd + +Function DownloadWUA + Call DetermineWUAVersion + ${If} $0 != "" + !insertmacro Download "Windows Update Agent" "$0" "WindowsUpdateAgent.exe" 1 + ${EndIf} +FunctionEnd + +Function InstallWUA + Call DetermineWUAVersion + ${If} $0 != "" + Call DownloadWUA + !insertmacro Install "Windows Update Agent" "WindowsUpdateAgent.exe" "/quiet /norestart" + ${EndIf} +FunctionEnd diff --git a/setup/Patches.ini b/setup/Patches.ini new file mode 100644 index 0000000..9977144 --- /dev/null +++ b/setup/Patches.ini @@ -0,0 +1,346 @@ +[Language] +0401=ARA +0403=CAT +0404=CHT +0804=CHS +0405=CSY +0406=DAN +0407=DEU +0408=ELL +0409=ENU +0c0a=ESN +0425=ETI +040b=FIN +040c=FRA +040d=HEB +040e=HUN +0410=ITA +0411=JPN +0412=KOR +0427=LTH +0426=LVI +0413=NLD +0414=NOR +0415=PLK +0416=PTB +0816=PTG +0418=ROM +0419=RUS +041a=HRV +041b=SKY +041d=SVE +041e=THA +041f=TRK +0424=SLV +042a=VIT +042d=EUQ +0c04=CHH + +; Windows 2000 +[W2KSP4] +ARA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_ar_d2a46163d29f14829f230729e2c0821.exe +CHH-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_hk_89b5425007c388c1c146756557915ab.exe +CHS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_cn_a6d8fab4fe598cf1d5c3cf257b11fc8.exe +CHT-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_tw_baf16f1aaae8be095127f4a46dded69.exe +CSY-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_cs_d055279f80e684debdac3f4a230ab2c.exe +DAN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_da_e9afc8657e31b34730ea2cda85ece36.exe +DEU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_de_00d4912b4703c77c46cf53a8a8f2027.exe +ELL-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_el_55eeec8b3b303e61cb0ddab4d943cd1.exe +ENU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_en_7f12d2da3d7c5b6a62ec4fde9a4b1e6.exe +ESN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_es_51bae94c83adcf9f0ad3155bcf3ddfc.exe +FIN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_fi_794e2bba5a5286287dccf7943055e46.exe +FRA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_fr_4556797dfc88fdd4be13d638bcfb655.exe +HEB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_he_b8e8519d7ae067f49ce742b59e8bcce.exe +HUN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_hu_1de3d254582472c714af315c85bf2b3.exe +ITA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_it_6395c3848397fa6cf05e0c3d1923205.exe +JPN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_ja_beb10c6f96ac4bb93f6e192b419a50f.exe +KOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_ko_8bd7a0eedfaf1fb30439abdad43c347.exe +NLD-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_nl_07596ad911493b966a18b6626e4a1c4.exe +NOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_no_64602c5f513d7244dd5790c6a11577e.exe +PLK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_pl_5248f4f8262d599079f5ee246cafc28.exe +PTB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_br_a90a49821bf9b5e37810e4c453a5128.exe +PTG-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_pt_cdf5d5ecd163862ff6f641b0a4d4168.exe +RUS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_ru_980742b1376cf5614a9e10705952dcd.exe +SVE-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_sv_c46814adb550c5184297a290acd9d25.exe +TRK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_tr_3d5c002a300e271049b18acdc569d83.exe +NEC98-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/w2ksp4_ja_7cf59dd6babe7afcf1d7489b40941a8.exe + +[KB835732] +ARA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-ara_caf56d0f9606b68387a228f7aae57d5.exe +CHH-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-cht_c3991c4bde0e9996c3d0727cd3fdbc1.exe +CHS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-chs_779d1b67c993ed5edaeeb6706f37a0d.exe +CHT-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-cht_c3991c4bde0e9996c3d0727cd3fdbc1.exe +CSY-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-csy_c4f86e2d69be35ba780c4f930b43e63.exe +DAN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-dan_3a6d22e0daccb7fe2d77ccda8624283.exe +DEU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-deu_62210b6322e8370917f00fb0eb40bf1.exe +ELL-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-ell_5f2073b1f1cad898c61bea003084320.exe +ENU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-enu_7b7d1dffd9347af2c166bfcecc4782c.exe +ESN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-esn_d62fd2652c870e4a06766638a4b119b.exe +FIN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-fin_08a377df67f697ce14d53d1d9f8dab1.exe +FRA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-fra_85fb76a002b43ad7f8bf236a4469ad4.exe +HEB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-heb_4c1f72024873e31a37fad21b9194dfc.exe +HUN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-hun_538b15f6b13aba4549248313cfa4c7c.exe +ITA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-ita_10e1ca8aec2249cca79a2dd6f7d05ff.exe +JPN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-jpn_2602d9d56b3995923611494ea90f535.exe +KOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-kor_852d1690cd8c36ecf681a454fac484a.exe +NLD-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-nld_742d6aadbbe08ca67b755e0abaaeb8c.exe +NOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-nor_99fac6bc7b291e7bc6d7655ea8da446.exe +PLK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-plk_27a55ddbb55db37b9e15e9975b3f106.exe +PTB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-ptb_f7d297c52fd7ef6006d3b2798a10025.exe +PTG-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-ptg_67c7095f1db29bb1b4ecb3d253fdde7.exe +RUS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-rus_0d1eca332ca7543d4cf80846eee3a80.exe +SVE-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-sve_087a446929bed6a79649a7c5a418220.exe +TRK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-x86-trk_8dc398f69b7c8c59466511aa21eb67c.exe +NEC98-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windows2000-kb835732-nec98-jpn_8fb43a1fa0f40115cae8f3ea72d52bc.exe + +[W2KIE6] +ARA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-ara_b1720a72becd05142cb4ccbb23205c76b51d29e2.cab +CHH-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-cht_1899bffb8ebf36c0a58686f04cc1d721c419792d.cab +CHS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-chs_6d93ab8525d3b6f775faf692caaa4c8267c8a22b.cab +CHT-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-cht_1899bffb8ebf36c0a58686f04cc1d721c419792d.cab +CSY-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-csy_2789a030bba2128fc90e0475e2530c300ed5defc.cab +DAN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-dan_0c178b2634a97a4879c172797b21a59e567d18e6.cab +DEU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-deu_2a13ac14e403ad4a1c6877fe478067e81ac20da8.cab +ELL-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-ell_15a4e43c8922f658eddd5d57d23c11e0fa55dce9.cab +ENU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-enu_91192253c8d3cf7beff22e68ae1fdff9638bf546.cab +ESN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-esn_a9c53ad93bae78becf2b06f6d317ef7ef66a2abe.cab +FIN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-fin_1a369fcc86e803128144e17246e16d0a27a8c35b.cab +FRA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-fra_0bc4219b3119a127503cd93863cfedfb1e37bd55.cab +HEB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-heb_70518dd1d09d702975b8e44a22c88e139f168975.cab +HUN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-hun_1eeed3e7b3e6bd311c17c0d97f67ec12df8b4b85.cab +ITA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-ita_2c6ab20b41114e53646ebb56ff6d269fd86fba36.cab +JPN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-jpn_b1e1e8b9dbbf440d8964ec375348674502ef0728.cab +KOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-kor_f61474b056ae37c5e9670978c6d3b24f4800d7f5.cab +NLD-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-nld_3fd676fe34f93471f4db9a0a1f3ef5c3ed8e5f43.cab +NOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-nor_72a81d06462c5a66f9531f4f226b13463698dd24.cab +PLK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-plk_14889750985a9d29490886c2e901ef3bc69c4ff5.cab +PTB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-ptb_448df44aea5d853e4954d48411b1953569df23c2.cab +PTG-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-ptg_5892593c72f702ba6c7d88b47c2bd7c5707081fd.cab +RUS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-rus_842c289d0887bbe2e4edea1ff3763addc8d77db5.cab +SVE-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-sve_db8dcfef073f2df327fc3706d9a141b6124cfed0.cab +TRK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-trk_64479241feb2f783f851b16791d5d1c684d94a66.cab +NEC98-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ie6sp1-wucab-jpn_b1e1e8b9dbbf440d8964ec375348674502ef0728.cab + +; Windows XP 2002 +[XPSP2] +ARA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_a001b2b27b0f748ab89bd28fa45359f28f95ffb6.exe +CHH-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_546c11a0a5a41e90ae5f021f234d9abad5a0a25a.exe +CHS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_554ee954bae0f65e88b706cf9b9fd733c02fa397.exe +CHT-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_66d8ba2cbf90737010a45e2b5969c9a779ab1d35.exe +CSY-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_767f81c9d0154bfa21d19a49e0b27ede9f93190a.exe +DAN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_e60a2b567fda2ab2cf4629700cf65cd3f4d46b0d.exe +DEU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_ac8d3101744ff56f74a4de941dc04a7e567c8ba7.exe +ELL-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_fd86a331f91bc16185e88e6706db859cb27264d1.exe +ENU-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_33a8fef60d48ae1f2c4feea27111af5ceca3c4f6.exe +ESN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_8e7e8de62676d994a7412df190fcdce848f25cf0.exe +FIN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_2feacc1ad5a703d508e9aee4c2fca1e0b9ca9962.exe +FRA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_da94a031147ebd6f8d02eadb7972801843a533bb.exe +HEB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_76096ed9f2218ac7a14472cbf435f380ffc1c2f6.exe +HUN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_bd03a3d2a28de2de9e58da3e5dec888ffae25aca.exe +ITA-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_1334fdd285666bfd821eef8590914f188b1bcc0c.exe +JPN-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_d36c0a7046f2dbe29dfff33b6dbb6bb4574bbd7d.exe +KOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_4a6b32f007fe94a2a8b4542fc6778582ef4245e3.exe +NLD-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_64551a535981fbcd9c2bac3f91df30c6b3610725.exe +NOR-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_ace2994463597f9cb7cb059e1dca2a87c12bf278.exe +PLK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_8aefc12abade033f2f093786646206fbb70cbb5d.exe +PTB-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_bcbc1bbb2c493dd0a942d13695b18da0400188f8.exe +PTG-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_db1f7c486f0eda249d77ae91c858a162cefb769b.exe +RUS-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_72946fbe955201f2387430963d4372cda7cac392.exe +SVE-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_3ff578d759e77df91effefe34a42030b8ada1c24.exe +TRK-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/xpsp2_68cfeb8fda746b900f9c3ce313d7348c812fd30d.exe + +[XPSP3] +ARA-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/04/windowsxp-kb936929-sp3-x86-ara_4e82a87cea3b9643fd57b39393a88061614cdae6.exe +CHH-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-chh_2663fb610f29e65a10be176740ea6757ca1f22d5.exe +CHS-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-chs_d7067e86abd4257454200d0c398d71c4ce6cd33e.exe +CHT-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-cht_8a0625e10b8c6cb88d9d1952f1a189fbd761b744.exe +CSY-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-csy_7af606916b887dba9dd38ae282505ce2c2b81b08.exe +DAN-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-dan_37e03a7d43ad65bc4b71f3947c76bd2fc0fe44d6.exe +DEU-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-deu_f2dcd2211384a78df215c696a7fd1a7949dc794b.exe +ELL-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-ell_cec2ed1c3097e44e62dcb1f2a473a64a58e031fe.exe +ENU-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/04/windowsxp-kb936929-sp3-x86-enu_c81472f7eeea2eca421e116cd4c03e2300ebfde4.exe +ESN-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-esn_e305becfc6fd5a8199368ceffc496397247ac60f.exe +FIN-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-fin_5654c021a03bfb10543a2c673bdfc42a853e347a.exe +FRA-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-fra_414b61bbc86e09579d8447baa23eb1b867f9ca93.exe +HEB-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-heb_eb8fc9ff0890279346661dde065c14b5c696e423.exe +HUN-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-hun_77b70fe421baeebb115c2f378b8a1fc274db9867.exe +ITA-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-ita_2162c1d419d1e462a7dc34294528b2daf593302c.exe +JPN-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-jpn_e0fc34cfa52d270b3c79a68af8fa358244f7419e.exe +KOR-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-kor_8ca7e862bfc2742ad9c4c58df0b0cd5ad4b700ae.exe +NLD-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-nld_b2576b4d1972583a3b776fdf963b914341d34058.exe +NOR-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-nor_67c9167275a2c3e3884a38c2ad7387556ad4713a.exe +PLK-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-plk_7cbe718131e9c71b322f1149e86bedba351ba11c.exe +PTB-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-ptb_02900ef11f5a982a93de5f927997ce92d5a81a86.exe +PTG-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-ptg_bc5189c05e93cd0e5742712d84f0b5f5ffcbb7e4.exe +RUS-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-rus_850cda9f57033a17d046a56d422547ea80dcaf61.exe +SVE-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-sve_13c5ecca22e12224934a1faa1190ee34db3995ae.exe +TRK-x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-trk_5aaf60501636af08c97ef1c18f1315f4ed6fbcdf.exe + +[XPESP3] +; Only seems to be available in English. +x86=http://web.archive.org/web/20140813085714/http://download.microsoft.com/download/3/a/e/3aea3d4e-159d-4078-a5b4-5b1e4f5a4db4/WindowsXP-KB958255-ENU.exe + +; Windows XP 2003 +[2003SP2] +CHH-x86=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003-kb914961-sp2-x86-chh_2de4fb187533e226cd615bcda30b9a8a2836e197.exe +CHS-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-chs_c3e7772c6ad063bac3cb6ca05ea6e1b39c5bb35d.exe +CHT-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-cht_65a62b8ef051bf93d0ccd78900fe8d6709d37a92.exe +CSY-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-csy_fa0c18ba0a265001778e9d2691086742fc4efeb6.exe +DEU-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-deu_f9a055504e882bb06ce2c7e83319000d905f7917.exe +ENU-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-enu_51e1759a1fda6cd588660324abaed59dd3bbe86b.exe +ESN-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-esn_38d7fba08bdebdaf567ae626042e860bf525306e.exe +FRA-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-fra_51f76d9ebb01806f905199f83a16715e8026c095.exe +HUN-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-hun_0ac4aaf8685d74132da6256439ed5f74337cb7f5.exe +ITA-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-ita_75aa7220b0e226330a723cd27cb0f8b56e9b5f22.exe +JPN-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-jpn_af70b74d70df32c530352b75e42ce772e9bb68d2.exe +KOR-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-kor_65bcd5be738a08046f0714a108a5fa334ef08fd0.exe +NLD-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-nld_12014e84ae5c8a41cd918a6e2c97586bdee030f7.exe +PLK-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-plk_213469cc7ac58cfa82215f1e5ca6753675061b57.exe +PTB-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-ptb_73a2c9a9a28f1203aba9f1852c64247467494652.exe +PTG-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-ptg_d8b921ee4bb0e0d2831f249e99c64264ae9098db.exe +RUS-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-rus_b53c66c6cec98327d1a25b77a252dc82d984f959.exe +SVE-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-sve_fba6d5c90dc7c15ae750c98cf407a0f148bbfee5.exe +TRK-x86=http://download.windowsupdate.com/msdownload/update/software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-trk_428236b66433ce6b08c9d7a6aa6c523874a340ae.exe +ENU-x64=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003.windowsxp-kb914961-sp2-x64-enu_7f8e909c52d23ac8b5dbfd73f1f12d3ee0fe794c.exe +JPN-x64=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003.windowsxp-kb914961-sp2-x64-jpn_c725a8c4e03803b12a9ac8820e964dbc377a80dc.exe +DEU-ia64=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-deu_f6857c1bb8fc03798541a78cdc1f5bb98b456333.exe +ENU-ia64=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-enu_8856af0aa0f198a8aad2de2c1ca68240d1d49bf3.exe +FRA-ia64=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-fra_0289b81fe7ed5c1c36f87232f87b25cdb21d331d.exe +JPN-ia64=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-jpn_3216b1978fd418181ecbf77eef67398edb97a106.exe + +; Windows Update Agent standalone installer +[WUA] +; Pay no attention to the version numbers in the urls, they're all over the place. The keys have the +; actual versions of dlls that gets installed. +7.2.6001.788-x86=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.2.6001.788/WindowsUpdateAgent30-x86.exe +7.2.6001.788-x64=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.2.6001.788/WindowsUpdateAgent30-x64.exe +7.2.6001.788-ia64=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.2.6001.788/WindowsUpdateAgent30-ia64.exe +7.6.7600.243-x86=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.4.7600.243/WindowsUpdateAgent30-x86.exe +7.6.7600.256-x86=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.6.7600.320/WindowsUpdateAgent-7.6-x86.exe +7.6.7600.256-x64=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.6.7600.320/WindowsUpdateAgent-7.6-x64.exe +7.6.7600.256-ia64=http://download.windowsupdate.com/windowsupdate/redist/standalone/7.6.7600.320/WindowsUpdateAgent-7.6-ia64.exe +; Win2k +5.0.0=7.2.6001.788 +5.0.1=7.2.6001.788 +5.0.2=7.2.6001.788 +5.0.3=7.2.6001.788 +5.0.4=7.2.6001.788 +; XP +5.1.0=7.2.6001.788 +5.1.1=7.2.6001.788 +5.1.2=7.2.6001.788 +5.1.3=7.6.7600.256 +5.1.3-home=7.6.7600.243 +; Server 03/XP x64 +5.2.0=7.2.6001.788 +5.2.1=7.2.6001.788 +5.2.2=7.6.7600.256 +; Vista/Server 08 +6.0.2=7.6.7600.256 + +; Vista/Server 08 +[VistaSP1] +x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windows6.0-kb936330-x86_b8a3fa8f819269e37d8acde799e7a9aea3dd4529.exe +x64=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windows6.0-kb936330-x64_12eed6cf0a842ce2a609c622b843afc289a8f4b9.exe +; No ia64 release for Vista SP1 + +[VistaSP2] +x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2009/06/windows6.0-kb948465-x86_55f17352b4398ecb4f0cc20e3737631420ca1609.exe +x64=http://download.windowsupdate.com/msdownload/update/software/svpk/2009/06/windows6.0-kb948465-x64_2eedca0bfa5ae8d1b0acf2117ddc4f15ac5183c9.exe +ia64=http://download.windowsupdate.com/msdownload/update/software/svpk/2009/06/windows6.0-kb948465-ia64_1a6cd9ade213bcc056cba3b810e86f0c09c16b51.exe + +[KB3205638] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2016/11/windows6.0-kb3205638-x86_e2211e9a6523061972decd158980301fc4c32a47.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2016/11/windows6.0-kb3205638-x64_a52aaa009ee56ca941e21a6009c00bc4c88cbb7c.msu +ia64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2016/11/windows6.0-kb3205638-ia64_d6bd55663080885c712c3afb9021c7336d0be83a.msu + +[KB4012583] +x86=http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/02/windows6.0-kb4012583-x86_1887cb5393b62cbd2dbb6a6ff6b136e809a2fbd0.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/02/windows6.0-kb4012583-x64_f63c9a85aa877d86c886e432560fdcfad53b752d.msu +ia64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/02/windows6.0-kb4012583-ia64_ab1ab96d3a3d7fbd1bf5d1cee53bf0be958c6329.msu + +[KB4015195] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2017/03/windows6.0-kb4015195-x86_eb045e0144266b20b615f29fa581c4001ebb7852.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2017/03/windows6.0-kb4015195-x64_2e310724d86b6a43c5ae8ec659685dd6cfb28ba4.msu +ia64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2017/03/windows6.0-kb4015195-ia64_0ae8f7c2ab5cf24123f6e279469674d823d20129.msu + +[KB4015380] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2017/03/windows6.0-kb4015380-x86_3f3548db24cf61d6f47d2365c298d739e6cb069a.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/03/windows6.0-kb4015380-x64_959aedbe0403d160be89f4dac057e2a0cd0c6d40.msu +ia64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/03/windows6.0-kb4015380-ia64_2a825e5f1aca191bb5f627b494838660180da2d6.msu + +[KB4493730] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2019/04/windows6.0-kb4493730-x86_ab4368f19db796680ff445a7769886c4cdc009a0.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2019/04/windows6.0-kb4493730-x64_5cb91f4e9000383f061b80f88feffdf228c2443c.msu +ia64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2019/04/windows6.0-kb4493730-ia64_024e5a390f7eace6d2e9dcaa91f09976e4d147db.msu + +; IE9 for Vista +[KB971512] +x86=http://download.windowsupdate.com/msdownload/update/software/updt/2009/10/windows6.0-kb971512-x86_370c3e41e1c161ddce29676e9273e4b8bb7ba3eb.msu +x64=http://download.windowsupdate.com/msdownload/update/software/updt/2009/10/windows6.0-kb971512-x64_0b329b985437c6c572529e5fd0042b9d54aeaa0c.msu + +[KB2117917] +x86=http://download.windowsupdate.com/msdownload/update/software/updt/2011/02/windows6.0-kb2117917-x86_370435d9efa6643c44d6506666b1960d56cf673a.msu +x64=http://download.windowsupdate.com/msdownload/update/software/updt/2011/02/windows6.0-kb2117917-x64_655a21758801e9648702791d7bf30f81b58884b3.msu + +[IE9] +x86=http://download.windowsupdate.com/msdownload/update/software/uprl/2011/05/wu-ie9-windowsvista-x86_90e3e90e964c2769a008cbf924eefdc42413dd52.exe +x64=http://download.windowsupdate.com/msdownload/update/software/uprl/2011/03/wu-ie9-windowsvista-x64_f599c02e7e1ea8a4e1029f0e49418a8be8416367.exe + +; 7/Server 08 R2 +[Win7SP1] +x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2011/02/windows6.1-kb976932-x86_c3516bc5c9e69fee6d9ac4f981f5b95977a8a2fa.exe +x64=http://download.windowsupdate.com/msdownload/update/software/svpk/2011/02/windows6.1-kb976932-x64_74865ef2562006e51d7f9333b4a8d45b7a749dab.exe + +[KB3138612] +x86=http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/02/windows6.1-kb3138612-x86_6e90531daffc13bc4e92ecea890e501e807c621f.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/02/windows6.1-kb3138612-x64_f7b1de8ea7cf8faf57b0138c4068d2e899e2b266.msu +ia64=http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/02/windows6.1-kb3138612-ia64_4edd5410fb137382d77f468a14118fa6d1c03655.msu + +[KB4474419] +x86=http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x86_0f687d50402790f340087c576886501b3223bec6.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu +ia64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/windows6.1-kb4474419-v3-ia64_1436a990f64876332857baaafa7aeb9eadcb4fa4.msu + +[KB4490628] +x86=http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x86_3cdb3df55b9cd7ef7fcb24fc4e237ea287ad0992.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu +ia64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-ia64_4736acd98e0a4e02f29fcdef63feacc5ac7b702b.msu + +; Windows Home Server 2011 +[KB2757011] +x64=http://download.windowsupdate.com/msdownload/update/software/uprl/2012/12/windows6.1-kb2757011-x64_4140355ab0b06df89668ec51432a820dff9af356.msu + +; 8/Server 2012 +[KB4598297] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2021/01/windows8-rt-kb4598297-x86_a517ea587c91af5f803b0973d40166c3e076fe5c.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2021/01/windows8-rt-kb4598297-x64_60f5c45d1216ee6ff1ab88ca03b037ac519ad0da.msu + +; 8.1/Server 2012 R2 +[KB3021910] +x86=http://download.windowsupdate.com/c/msdownload/update/software/updt/2015/04/windows8.1-kb3021910-x86_7e70173bec00c3d4fe3b0b8cba17b095b4ed2d20.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/updt/2015/04/windows8.1-kb3021910-x64_e291c0c339586e79c36ebfc0211678df91656c3d.msu + +[ClearCompressionFlag] +x86=http://download.windowsupdate.com/c/msdownload/update/software/secu/2014/04/clearcompressionflag_220edca17ae47089fc4da060915e0df568eac4ff.exe +x64=http://download.windowsupdate.com/d/msdownload/update/software/secu/2014/04/clearcompressionflag_3104315db9d84f6a2a56b9621e89ea66a8c27604.exe + +[KB2919355] +x86=http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x86_de9df31e42fe034c9a763328326e5852c2b4963d.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x64_e6f4da4d33564419065a7370865faacf9b40ff72.msu + +[KB2932046] +x86=http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-x86_bfd8ca4c683ccec26355afc1f2e677f3809cb3d6.msu +x64=http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-x64_6aee5fda6e2a6729d1fbae6eac08693acd70d985.msu + +[KB2959977] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2014/04/windows8.1-kb2959977-x86_5ccf761a356bb143b68887f99883d8c24946d2c2.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2014/04/windows8.1-kb2959977-x64_574ba2d60baa13645b764f55069b74b2de866975.msu + +[KB2937592] +x86=http://download.windowsupdate.com/d/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-x86_96a3416d480bd2b54803df26b8e76cd1d0008d43.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-x64_4abc0a39c9e500c0fbe9c41282169c92315cafc2.msu + +[KB2934018] +x86=http://download.windowsupdate.com/d/msdownload/update/software/secu/2014/04/windows8.1-kb2934018-x86_8fb05387836b77abbf1755185ae743c9da417e9a.msu +x64=http://download.windowsupdate.com/c/msdownload/update/software/secu/2014/04/windows8.1-kb2934018-x64_234a5fc4955f81541f5bfc0d447e4fc4934efc38.msu diff --git a/setup/RunOnce.nsh b/setup/RunOnce.nsh new file mode 100644 index 0000000..647ee03 --- /dev/null +++ b/setup/RunOnce.nsh @@ -0,0 +1,166 @@ +!define IsRunOnce `"" HasFlag "/runonce"` +!define IsPostInstall `"" HasFlag "/postinstall"` +!define NoRestart `"" HasFlag "/norestart"` + +!macro -PromptReboot + SetErrorLevel ${ERROR_SUCCESS_REBOOT_REQUIRED} + + ${If} ${NoRestart} + ; Prompt for reboot + ${IfNot} ${Silent} + System::Call '${RestartDialog}($HWNDPARENT, \ + "Windows will be restarted to complete installation of prerequisite components. Setup will resume after the restart.", \ + ${EWX_REBOOT})' + ${EndIf} + ${Else} + ; Reboot immediately + Reboot + ${EndIf} +!macroend + +!macro -RegisterRunOnce flags + WriteRegStr HKLM "${REGPATH_RUNONCE}" "Legacy Update" '"$RunOnceDir\LegacyUpdateSetup.exe" ${flags}' +!macroend + +Function RegisterRunOnce + !insertmacro -RegisterRunOnce "/runonce" +FunctionEnd + +Function un.RegisterRunOnce + ; Unused, just needs to exist to make the compiler happy +FunctionEnd + +Function RegisterRunOncePostInstall + !insertmacro -RegisterRunOnce "/postinstall" +FunctionEnd + +!macro -WriteRegStrWithBackup root key name value + ; Backup the key if it exists + ClearErrors + ReadRegStr $0 ${root} "${key}" "${name}" + ${IfNot} ${Errors} + WriteRegStr ${root} "${key}" "LegacyUpdate_${name}" $0 + ${EndIf} + + WriteRegStr ${root} "${key}" "${name}" "${value}" +!macroend + +!macro -RestoreRegStr root key name + ; Restore the key if it exists + ClearErrors + ReadRegStr $0 ${root} "${key}" "LegacyUpdate_${name}" + ${If} ${Errors} + DeleteRegValue ${root} "${key}" "${name}" + ${Else} + WriteRegStr ${root} "${key}" "${name}" $0 + DeleteRegValue ${root} "${key}" "LegacyUpdate_${name}" + ${EndIf} +!macroend + +!macro -RebootIfRequired un + ${If} ${RebootFlag} + ${IfNot} ${IsRunOnce} + ${AndIfNot} ${NoRestart} + !insertmacro DetailPrint "Preparing to restart..." + + ; Get the localised name of the Administrators group from its SID + System::Call '*(&i1 0, &i4 0, &i1 5) i .r0' + ; S-1-5-32-544 + System::Call '${AllocateAndInitializeSid}(r0, 2, ${SECURITY_BUILTIN_DOMAIN_RID}, ${DOMAIN_ALIAS_RID_ADMINS}, 0, 0, 0, 0, 0, 0, .r1)' + System::Free $0 + System::Call '${LookupAccountSid}(0, r1, .r0, ${NSIS_MAX_STRLEN}, .r2, ${NSIS_MAX_STRLEN}, 0)' + System::Call '${FreeSid}(r1)' + + ; Create the admin user + ExecShellWait "" "$WINDIR\system32\net.exe" "user /add ${RUNONCE_USERNAME} ${RUNONCE_PASSWORD}" SW_HIDE + ExecShellWait "" "$WINDIR\system32\net.exe" 'localgroup /add "$0" ${RUNONCE_USERNAME}' SW_HIDE + + !insertmacro -WriteRegStrWithBackup HKLM "${REGPATH_WINLOGON}" "AutoAdminLogon" "1" + !insertmacro -WriteRegStrWithBackup HKLM "${REGPATH_WINLOGON}" "DefaultDomainName" "." + !insertmacro -WriteRegStrWithBackup HKLM "${REGPATH_WINLOGON}" "DefaultUserName" "${RUNONCE_USERNAME}" + !insertmacro -WriteRegStrWithBackup HKLM "${REGPATH_WINLOGON}" "DefaultPassword" "${RUNONCE_PASSWORD}" + + ; Copy to runonce path to ensure installer is accessible by the temp user + CreateDirectory "$RunOnceDir" + CopyFiles /SILENT "$EXEPATH" "$RunOnceDir\LegacyUpdateSetup.exe" + + ; Remove mark of the web to prevent "Open File - Security Warning" dialog + System::Call '${DeleteFile}("$RunOnceDir\LegacyUpdateSetup.exe:Zone.Identifier")' + ${EndIf} + + Call ${un}RegisterRunOnce + !insertmacro -PromptReboot + Quit + ${EndIf} +!macroend + +Function RebootIfRequired + ${MementoSectionSave} + !insertmacro -RebootIfRequired "" +FunctionEnd + +Function un.RebootIfRequired + !insertmacro -RebootIfRequired "un." +FunctionEnd + +Function OnRunOnceLogon + ; Trick winlogon into thinking the shell has started, so it doesn't appear to be stuck at + ; "Welcome" (XP) or "Preparing your desktop..." (Vista+) + ; https://social.msdn.microsoft.com/Forums/WINDOWS/en-US/ca253e22-1ef8-4582-8710-9cd9c89b15c3 + ${If} ${AtLeastWinVista} + StrCpy $0 "ShellDesktopSwitchEvent" + ${Else} + StrCpy $0 "msgina: ShellReadyEvent" + ${EndIf} + + System::Call '${OpenEvent}(${EVENT_MODIFY_STATE}, 0, "$0") .r0' + ${If} $0 != 0 + System::Call '${SetEvent}(r0)' + System::Call '${CloseHandle}(r0)' + ${EndIf} + + ; Handle Safe Mode case. RunOnce can still be processed in Safe Mode in some edge cases. If that + ; happens, just silently register runonce again and quit. + ${If} ${IsSafeMode} + Call RegisterRunOnce + Quit + ${EndIf} + + ; Allow the themes component to be registered if necessary. This sets the theme to Aero Basic + ; rather than Classic in Vista/7. + ClearErrors + ReadRegStr $0 HKLM "${REGPATH_COMPONENT_THEMES}" "StubPath" + ${IfNot} ${Errors} + ExecShellWait "" "$WINDIR\system32\cmd.exe" "/c $0" SW_HIDE + ${EndIf} +FunctionEnd + +Function CleanUpRunOnce + ; Restore autologon keys + !insertmacro -RestoreRegStr HKLM "${REGPATH_WINLOGON}" "AutoAdminLogon" + !insertmacro -RestoreRegStr HKLM "${REGPATH_WINLOGON}" "DefaultDomainName" + !insertmacro -RestoreRegStr HKLM "${REGPATH_WINLOGON}" "DefaultUserName" + !insertmacro -RestoreRegStr HKLM "${REGPATH_WINLOGON}" "DefaultPassword" + + ; Delete the temp user + ExecShellWait "" "$WINDIR\system32\net.exe" "user /delete ${RUNONCE_USERNAME}" SW_HIDE + + ${If} ${IsRunOnce} + ; Clean up temporary setup exe if we created it (likely on next reboot) + ${If} ${FileExists} "$RunOnceDir" + RMDir /r /REBOOTOK "$RunOnceDir" + ${EndIf} + + ; Be really really sure this is the right user before we nuke their profile and log out + System::Call '${GetUserName}(.r0, ${NSIS_MAX_STRLEN}) .r1' + ${If} $0 == "${RUNONCE_USERNAME}" + ; Register postinstall runonce for the next admin user logon, and log out of the temporary user + ${IfNot} ${Abort} + Call RegisterRunOncePostInstall + ${EndIf} + + RMDir /r /REBOOTOK "$PROFILE" + System::Call "${ExitWindowsEx}(${EWX_FORCE}, 0) .r0" + ${EndIf} + ${EndIf} +FunctionEnd diff --git a/setup/UpdateRoots.nsh b/setup/UpdateRoots.nsh new file mode 100644 index 0000000..22e9e95 --- /dev/null +++ b/setup/UpdateRoots.nsh @@ -0,0 +1,82 @@ +!macro -SetSecureProtocolsBitmask + ; If the value isn't yet set, ReadRegDword will return 0. This means TLSv1.1 and v1.2 will be the + ; only enabled protocols. This is intentional behavior, because SSLv2 and SSLv3 are not secure, + ; and TLSv1.0 is deprecated. The user can manually enable them in Internet Settings if needed. + ; On XP, we'll also enable TLSv1.0, given TLSv1.1 and v1.2 are only offered through an optional + ; POSReady 2009 update. + ${If} $0 == 0 + ${AndIf} ${AtMostWinXP2003} + IntOp $0 $0 | ${WINHTTP_FLAG_SECURE_PROTOCOL_TLS1} + ${EndIf} + IntOp $0 $0 | ${WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1} + IntOp $0 $0 | ${WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2} +!macroend + +Function _ConfigureCrypto + ; Enable SChannel TLSv1.1 and v1.2 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.1\Client" "Enabled" 1 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.1\Client" "DisabledByDefault" 0 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.1\Server" "Enabled" 1 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.1\Server" "DisabledByDefault" 0 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.2\Client" "Enabled" 1 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.2\Client" "DisabledByDefault" 0 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.2\Server" "Enabled" 1 + WriteRegDword HKLM "${REGPATH_SCHANNEL_PROTOCOLS}\TLS 1.2\Server" "DisabledByDefault" 0 + + ; Enable IE TLSv1.1 and v1.2 + ReadRegDword $0 HKLM "${REGPATH_INETSETTINGS}" "SecureProtocols" + !insertmacro -SetSecureProtocolsBitmask + WriteRegDword HKLM "${REGPATH_INETSETTINGS}" "SecureProtocols" $0 + + ReadRegDword $0 HKCU "${REGPATH_INETSETTINGS}" "SecureProtocols" + !insertmacro -SetSecureProtocolsBitmask + WriteRegDword HKCU "${REGPATH_INETSETTINGS}" "SecureProtocols" $0 + + ; Enable WinHTTP TLSv1.1 and v1.2 + ReadRegDword $0 HKLM "${REGPATH_INETSETTINGS}\WinHttp" "DefaultSecureProtocols" + !insertmacro -SetSecureProtocolsBitmask + WriteRegDword HKLM "${REGPATH_INETSETTINGS}\WinHttp" "DefaultSecureProtocols" $0 + + ReadRegDword $0 HKCU "${REGPATH_INETSETTINGS}\WinHttp" "DefaultSecureProtocols" + !insertmacro -SetSecureProtocolsBitmask + WriteRegDword HKCU "${REGPATH_INETSETTINGS}\WinHttp" "DefaultSecureProtocols" $0 + + ; Enable .NET inheriting SChannel protocol config + ; .NET 3 uses the same registry keys as .NET 2. + WriteRegDword HKLM "${REGPATH_DOTNET_V2}" "SystemDefaultTlsVersions" 1 + WriteRegDword HKLM "${REGPATH_DOTNET_V4}" "SystemDefaultTlsVersions" 1 +FunctionEnd + +Function ConfigureCrypto + Call _ConfigureCrypto + + ; Repeat in the WOW64 registry if needed + ${If} ${RunningX64} + SetRegView 32 + Call _ConfigureCrypto + SetRegView 64 + ${EndIf} +FunctionEnd + +!macro _DownloadSST name + !insertmacro Download "Certificate Trust List" "${TRUSTEDR}/${name}.sst" "${name}.sst" 0 +!macroend + +Function DownloadRoots + !insertmacro DetailPrint "Downloading Certificate Trust List..." + !insertmacro _DownloadSST "authroots" + !insertmacro _DownloadSST "delroots" + !insertmacro _DownloadSST "roots" + !insertmacro _DownloadSST "updroots" + !insertmacro _DownloadSST "disallowedcert" +FunctionEnd + +Function UpdateRoots + File "updroots.exe" + !insertmacro DetailPrint "Installing Certificate Trust List..." + !insertmacro ExecWithErrorHandling "Certificate Trust List" '"$OUTDIR\updroots.exe" authroots.sst' 0 + !insertmacro ExecWithErrorHandling "Certificate Trust List" '"$OUTDIR\updroots.exe" updroots.sst' 0 + !insertmacro ExecWithErrorHandling "Certificate Trust List" '"$OUTDIR\updroots.exe" -l roots.sst' 0 + !insertmacro ExecWithErrorHandling "Certificate Trust List" '"$OUTDIR\updroots.exe" -d delroots.sst' 0 + !insertmacro ExecWithErrorHandling "Certificate Trust List" '"$OUTDIR\updroots.exe" -l -u disallowedcert.sst' 0 +FunctionEnd diff --git a/setup/Win32.nsh b/setup/Win32.nsh new file mode 100644 index 0000000..0369fb6 --- /dev/null +++ b/setup/Win32.nsh @@ -0,0 +1,69 @@ +; advapi32 +!define SECURITY_BUILTIN_DOMAIN_RID 0x00000020 +!define DOMAIN_ALIAS_RID_ADMINS 0x00000220 + +!define AllocateAndInitializeSid 'advapi32::AllocateAndInitializeSid(i, i, i, i, i, i, i, i, i, i, *i) i' +!define LookupAccountSid 'advapi32::LookupAccountSid(i, i, t, *i, t, *i, *i) i' +!define FreeSid 'advapi32::FreeSid(i)' +!define GetUserName 'advapi32::GetUserName(t, *i) i' + +; kernel32 +!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 + +!define ES_CONTINUOUS 0x80000000 +!define ES_SYSTEM_REQUIRED 0x00000001 + +!define GetVersionEx 'kernel32::GetVersionEx(pr) i' +!define GetLogicalProcessorInformationEx 'kernel32::GetLogicalProcessorInformationEx(i, *i, *i) i' +!define SetThreadExecutionState 'kernel32::SetThreadExecutionState(i) i' +!define OpenEvent 'kernel32::OpenEvent(i, i, t) i' +!define SetEvent 'kernel32::SetEvent(i) i' +!define CloseHandle 'kernel32::CloseHandle(i) i' +!define DeleteFile 'kernel32::DeleteFile(t) i' + +; netapi32 +!define NetApiBufferFree 'netapi32::NetApiBufferFree(i) i' +!define NetUserGetInfo 'netapi32::NetUserGetInfo(t, t, i, *i) i' +!define NetUserAdd 'netapi32::NetUserAdd(t, i, t, i, *i) i' +!define NetLocalGroupAddMembers 'netapi32::NetLocalGroupAddMembers(t, t, i, *i, i) i' + +; ole32 +!define CoCreateInstance 'ole32::CoCreateInstance(g, p, i, g, *p) i' +!define CoTaskMemFree 'ole32::CoTaskMemFree(p)' + +; oleaut32 +!define SysAllocString 'oleaut32::SysAllocString(t) p' +!define SysFreeString 'oleaut32::SysFreeString(p)' + +; shell32 +!define IsUserAnAdmin 'shell32::IsUserAnAdmin() i' +!define RestartDialog 'shell32::RestartDialog(p, t, i) i' + +; user32 +!define EWX_REBOOT 0x02 +!define EWX_FORCE 0x04 + +!define ExitWindowsEx 'user32::ExitWindowsEx(i, i) i' +!define GetSystemMetrics 'user32::GetSystemMetrics(i) i' + +; winhttp +!define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 0x00000080 +!define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 0x00000200 +!define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 0x00000800 + +!define ERROR_INTERNET_OPERATION_CANCELLED 12017 + +; wininet +!define INTERNET_FLAG_RELOAD 0x80000000 +!define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 +!define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 +!define INTERNET_FLAG_NO_COOKIES 0x00080000 +!define INTERNET_FLAG_NO_UI 0x00000200 + +!define SECURITY_FLAG_STRENGTH_STRONG 0x20000000 + +; wuapi +!define WU_S_ALREADY_INSTALLED 2359302 ; 0x00240006 +!define WU_E_NOT_APPLICABLE -2145124329 ; 0x80240017 + +!define WU_MU_SERVICE_ID "7971f918-a847-4430-9279-4a52d1efe18d" diff --git a/setup/WinVer.nsh b/setup/WinVer.nsh new file mode 100644 index 0000000..6282f8f --- /dev/null +++ b/setup/WinVer.nsh @@ -0,0 +1,173 @@ +; NSIS WinVer.nsh rewritten to work more like what I expect. + +!include LogicLib.nsh +!include Util.nsh + +; Defines + +!define OSVERSIONINFOW_SIZE 276 +!define OSVERSIONINFOEXW_SIZE 284 + +!define WINVER_2000 0x0500 ; 5.0.2195 +!define WINVER_XP 0x0501 ; 5.1.2600 +!define WINVER_XP2002 0x0501 ; 5.1.2600 +!define WINVER_XP2003 0x0502 ; 5.2.3790 +!define WINVER_VISTA 0x0600 ; 6.0.6000 +!define WINVER_7 0x0601 ; 6.1.7600 +!define WINVER_8 0x0602 ; 6.2.9200 +!define WINVER_8.1 0x0603 ; 6.3.9600 +!define WINVER_10 0x0A00 ; 10.0.10240 + +!define WINVER_SERVER_2000 ${WINVER_2000} +!define WINVER_SERVER_2003 ${WINVER_XP2003} +!define WINVER_SERVER_2003R2 ${WINVER_XP2003} +!define WINVER_SERVER_2008 ${WINVER_VISTA} +!define WINVER_SERVER_2008R2 ${WINVER_7} +!define WINVER_SERVER_2012 ${WINVER_8} +!define WINVER_SERVER_2012R2 ${WINVER_8.1} +!define WINVER_SERVER_2016 ${WINVER_10} + +!define WINVER_BUILD_11 22000 + +!define /ifndef VER_NT_WORKSTATION 1 + +!define VER_SUITE_BACKOFFICE 0x00000004 ; Microsoft BackOffice +!define VER_SUITE_BLADE 0x00000400 ; Windows Server 2003, Web Edition +!define VER_SUITE_COMPUTE_SERVER 0x00004000 ; Windows Server 2003, Compute Cluster Edition +!define VER_SUITE_DATACENTER 0x00000080 ; Windows Server Datacenter +!define VER_SUITE_ENTERPRISE 0x00000002 ; Windows Server Enterprise +!define VER_SUITE_EMBEDDEDNT 0x00000040 ; Windows Embedded +!define VER_SUITE_PERSONAL 0x00000200 ; Windows Home Edition +!define VER_SUITE_SINGLEUSERTS 0x00000100 ; Single-user Remote Desktop +!define VER_SUITE_SMALLBUSINESS 0x00000001 ; Small Business Server +!define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 ; Small Business Server (restrictive client license) +!define VER_SUITE_STORAGE_SERVER 0x00002000 ; Windows Storage Server 2003 +!define VER_SUITE_TERMINAL 0x00000010 ; Terminal Services (always true) +!define VER_SUITE_WH_SERVER 0x00008000 ; Windows Home Server +!define VER_SUITE_MULTIUSERTS 0x00020000 ; Multi-user Remote Desktop + +!define SM_CLEANBOOT 67 + +; Init + +!macro __WinVer_Init + !ifndef __WINVER_VARS_DECLARED + !define __WINVER_VARS_DECLARED + + Var /GLOBAL __WINVEROS + Var /GLOBAL __WINVERBUILD + Var /GLOBAL __WINVERSP + Var /GLOBAL __WINVERPROD + Var /GLOBAL __WINVERSUITE + !endif + + StrCmp $__WINVEROS "" _winver_noveryet + Return + + _winver_noveryet: + GetWinVer $__WINVEROS NTDDIMajMin + GetWinVer $__WINVERBUILD Build + GetWinVer $__WINVERSP ServicePack + GetWinVer $__WINVERPROD Product + + Push $0 + Push $1 + System::Alloc ${OSVERSIONINFOEXW_SIZE} + Pop $0 + System::Call '*$0(i ${OSVERSIONINFOEXW_SIZE})' + System::Call '${GetVersionEx}(.r0)' + System::Call '*$0(i, i, i, i, i, &t128, h, h, h .r1, b, b)' + System::Free $0 + StrCpy $__WINVERSUITE $1 + Pop $1 + Pop $0 +!macroend + +; Tests + +!macro __WinVer_TestOS op num _t _f + ${CallArtificialFunction} __WinVer_Init + !insertmacro _${op} $__WINVEROS ${num} `${_t}` `${_f}` +!macroend + +!macro __WinVer_TestBuild op num _t _f + ${CallArtificialFunction} __WinVer_Init + !insertmacro _${op} $__WINVERBUILD ${num} `${_t}` `${_f}` +!macroend + +!macro __WinVer_TestSP op num _t _f + ${CallArtificialFunction} __WinVer_Init + !insertmacro _${op} $__WINVERSP ${num} `${_t}` `${_f}` +!macroend + +!macro __WinVer_TestProduct op num _t _f + ${CallArtificialFunction} __WinVer_Init + !insertmacro _${op} $__WINVERPROD ${num} `${_t}` `${_f}` +!macroend + +!macro __WinVer_TestSuite _a num _t _f + !insertmacro _LOGICLIB_TEMP + ${CallArtificialFunction} __WinVer_Init + IntOp $_LOGICLIB_TEMP $__WINVERSUITE & ${num} + !insertmacro _= $_LOGICLIB_TEMP ${num} `${_t}` `${_f}` +!macroend + +!macro __WinVer_TestSystemMetric op metric _t _f + !insertmacro _LOGICLIB_TEMP + ${CallArtificialFunction} __WinVer_Init + System::Call '${GetSystemMetrics}(${metric}) .s' + Pop $_LOGICLIB_TEMP + !insertmacro _${op} $_LOGICLIB_TEMP 0 `${_t}` `${_f}` +!macroend + +; Defines + +!define IsClientOS `= _WinVer_TestProduct ${VER_NT_WORKSTATION}` +!define IsServerOS `!= _WinVer_TestProduct ${VER_NT_WORKSTATION}` + +!define IsHomeEdition `"" _WinVer_TestSuite ${VER_SUITE_PERSONAL}` +!define IsEmbedded `"" _WinVer_TestSuite ${VER_SUITE_EMBEDDEDNT}` +!define IsHomeServer `"" _WinVer_TestSuite ${VER_SUITE_WH_SERVER}` + +!define IsSafeMode `!= _WinVer_TestSystemMetric ${SM_CLEANBOOT}` + +!define IsServicePack `= _WinVer_TestSP` +!define AtLeastServicePack `>= _WinVer_TestSP` +!define AtMostServicePack `<= _WinVer_TestSP` + +!macro __WinVer_DefineClient os + !define IsWin${os} `= _WinVer_TestOS ${WINVER_${os}}` + !define AtLeastWin${os} `>= _WinVer_TestOS ${WINVER_${os}}` + !define AtMostWin${os} `<= _WinVer_TestOS ${WINVER_${os}}` +!macroend + +!macro __WinVer_DefineServer os + !define IsWin${os} `= _WinVer_TestOS ${WINVER_SERVER_${os}}` + !define AtLeastWin${os} `>= _WinVer_TestOS ${WINVER_SERVER_${os}}` + !define AtMostWin${os} `<= _WinVer_TestOS ${WINVER_SERVER_${os}}` +!macroend + +!macro __WinVer_DefineBuild os + !define IsWin${os} `= _WinVer_TestBuild ${WINVER_BUILD_${os}}` + !define AtLeastWin${os} `>= _WinVer_TestBuild ${WINVER_BUILD_${os}}` + !define AtMostWin${os} `<= _WinVer_TestBuild ${WINVER_BUILD_${os}}` +!macroend + +!insertmacro __WinVer_DefineClient 2000 +!insertmacro __WinVer_DefineClient XP2002 +!insertmacro __WinVer_DefineClient XP2003 +!insertmacro __WinVer_DefineClient Vista +!insertmacro __WinVer_DefineClient 7 +!insertmacro __WinVer_DefineClient 8 +!insertmacro __WinVer_DefineClient 8.1 +!insertmacro __WinVer_DefineClient 10 + +!insertmacro __WinVer_DefineServer 2003 +!insertmacro __WinVer_DefineServer 2003R2 +!insertmacro __WinVer_DefineServer 2008 +!insertmacro __WinVer_DefineServer 2008R2 +!insertmacro __WinVer_DefineServer 2012 +!insertmacro __WinVer_DefineServer 2012R2 +!insertmacro __WinVer_DefineServer 2016 + +!insertmacro __WinVer_DefineBuild 11 diff --git a/setup/codebase/lucontrl.ddf b/setup/codebase/lucontrl.ddf new file mode 100644 index 0000000..b194e37 --- /dev/null +++ b/setup/codebase/lucontrl.ddf @@ -0,0 +1,20 @@ +.Set CabinetNameTemplate=lucontrl.cab +.Set CompressionType=MSZIP +.Set CompressionLevel=7 +.Set InfFileName=lucontrl_layout.inf +.Set MaxDiskSize=CDROM +.Set ReservePerCabinetSize=6144 +.Set InfCabinetLineFormat=*cab#*=Application Source Media,*cabfile*,0 +.Set Compress=on +.Set CompressionMemory=21 +.Set DiskDirectoryTemplate= +.Set Cabinet=ON +.Set MaxCabinetSize=999999999 +.Set InfDiskHeader= +.Set InfDiskLineFormat= +.Set InfCabinetHeader=[SourceDisksNames] +.Set InfFileHeader= +.Set InfFileHeader1=[SourceDisksFiles] +.Set InfFileLineFormat=*file*=*cab#*,,*size*,*csum* +setup.inf +setup.exe diff --git a/setup/codebase/setup.inf b/setup/codebase/setup.inf new file mode 100644 index 0000000..dd167d8 --- /dev/null +++ b/setup/codebase/setup.inf @@ -0,0 +1,9 @@ +[Version] +Signature="$CHICAGO$" +AdvancedINF=2.0 + +[Setup Hooks] +setup=setup + +[setup] +run="%EXTRACT_DIR%\setup.exe" /activex diff --git a/setup/codebase/test.html b/setup/codebase/test.html new file mode 100644 index 0000000..adf78e8 --- /dev/null +++ b/setup/codebase/test.html @@ -0,0 +1 @@ + diff --git a/setup/ie6setupstub.nsi b/setup/ie6setupstub.nsi new file mode 100644 index 0000000..e793287 --- /dev/null +++ b/setup/ie6setupstub.nsi @@ -0,0 +1,89 @@ +; Stub file used to replace the ie6setup_w2k.exe file that was previously hosted by Legacy Update. +; This was a full copy of IE6 SP1, but only for English installations of Windows 2000. +; This is expected to ONLY be run by Legacy Update 1.5 and earlier. It should not be used directly. + +!define MUI_UI "modern_aerowizard.exe" +!define MUI_UI_HEADERIMAGE "modern_aerowizard.exe" + +!define MUI_CUSTOMFUNCTION_GUIINIT OnShow + +!include Constants.nsh + +Name "${NAME}" +Caption "${NAME} - Internet Explorer 6 Downloader" +BrandingText "${NAME} ${VERSION} - ${DOMAIN}" +OutFile "ie6setupstub-${VERSION}.exe" + +Unicode True +RequestExecutionLevel Admin +AutoCloseWindow true + +VIAddVersionKey /LANG=1033 "ProductName" "${NAME} - Internet Explorer 6 Downloader" +VIAddVersionKey /LANG=1033 "ProductVersion" "${LONGVERSION}" +VIAddVersionKey /LANG=1033 "CompanyName" "Hashbang Productions" +VIAddVersionKey /LANG=1033 "LegalCopyright" "© Hashbang Productions. All rights reserved." +VIAddVersionKey /LANG=1033 "FileDescription" "${NAME} - Internet Explorer 6 Downloader" +VIAddVersionKey /LANG=1033 "FileVersion" "${LONGVERSION}" +VIProductVersion ${LONGVERSION} +VIFileVersion ${LONGVERSION} + +!define MUI_ICON "..\icon.ico" + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "setupbanner.bmp" + +!include FileFunc.nsh +!include LogicLib.nsh +!include MUI2.nsh +!include Win\WinNT.nsh +!include WinCore.nsh +!include WinVer.nsh +!include WordFunc.nsh +!include x64.nsh + +!include Common.nsh +!include AeroWizard.nsh +!include Download2KXP.nsh + +!insertmacro GetParameters +!insertmacro GetOptions + +!define MUI_PAGE_HEADER_TEXT "Performing Actions" +!define MUI_PAGE_CUSTOMFUNCTION_SHOW OnShow + +!insertmacro MUI_PAGE_INSTFILES + +!insertmacro MUI_LANGUAGE "English" + +Function OnShow + Call AeroWizardOnShow +FunctionEnd + +Section "Internet Explorer 6.0 Service Pack 1" IE6SP1 + SectionIn Ro + Call DownloadIE6 + Call InstallIE6 +SectionEnd + +Function .onInit + SetShellVarContext All + !insertmacro EnsureAdminRights + SetDetailsPrint listonly + + ${IfNot} ${IsWin2000} + MessageBox MB_USERICON "This tool is intended only for use on Windows 2000." /SD IDOK + Quit + ${EndIf} + + Call NeedsIE6 + Pop $0 + ${If} $0 == 0 + MessageBox MB_USERICON "Internet Explorer 6 Service Pack 1 is already installed." /SD IDOK + Quit + ${EndIf} + + SetOutPath $PLUGINSDIR + File Patches.ini + + SetErrorLevel ${ERROR_SUCCESS_REBOOT_REQUIRED} +FunctionEnd diff --git a/setup/modern_aerowizard.exe b/setup/modern_aerowizard.exe new file mode 100644 index 0000000..f29ef9f Binary files /dev/null and b/setup/modern_aerowizard.exe differ diff --git a/setup/setup.nsi b/setup/setup.nsi new file mode 100644 index 0000000..e56f0e8 --- /dev/null +++ b/setup/setup.nsi @@ -0,0 +1,944 @@ +!include Constants.nsh + +Name "${NAME}" +Caption "${NAME}" +BrandingText "${NAME} ${VERSION} - ${DOMAIN}" +OutFile "WUIsBack-latest.exe" +InstallDir "$PROGRAMFILES\${NAME}" +InstallDirRegKey HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "InstallDir" + +Unicode true +RequestExecutionLevel admin +AutoCloseWindow true +ManifestSupportedOS all +ManifestDPIAware true +AllowSkipFiles off +SetCompressor /SOLID lzma + +VIAddVersionKey /LANG=1033 "ProductName" "${NAME}" +VIAddVersionKey /LANG=1033 "ProductVersion" "${LONGVERSION}" +VIAddVersionKey /LANG=1033 "CompanyName" "Hashbang Productions and Vichingo455" +VIAddVersionKey /LANG=1033 "LegalCopyright" "${U+00A9} Hashbang Productions and Vichingo455. All rights reserved." +VIAddVersionKey /LANG=1033 "FileDescription" "${NAME}" +VIAddVersionKey /LANG=1033 "FileVersion" "${LONGVERSION}" +VIProductVersion ${LONGVERSION} +VIFileVersion ${LONGVERSION} + +!define MUI_UI "modern_aerowizard.exe" +!define MUI_UI_HEADERIMAGE "modern_aerowizard.exe" + +!define MUI_CUSTOMFUNCTION_GUIINIT OnShow +!define MUI_CUSTOMFUNCTION_UNGUIINIT un.OnShow +!define MUI_CUSTOMFUNCTION_ABORT CleanUp + +!define MUI_ICON "..\LegacyUpdate\icon.ico" +!define MUI_UNICON "..\LegacyUpdate\icon.ico" + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "setupbanner.bmp" +!define MUI_HEADERIMAGE_UNBITMAP "setupbanner.bmp" + +!define MUI_TEXT_ABORT_TITLE "Installation Failed" + +!define MEMENTO_REGISTRY_ROOT HKLM +!define MEMENTO_REGISTRY_KEY "${REGPATH_LEGACYUPDATE_SETUP}" + +Var /GLOBAL InstallDir +Var /GLOBAL RunOnceDir + +!include FileFunc.nsh +!include Integration.nsh +!include LogicLib.nsh +!include Memento.nsh +!include MUI2.nsh +!include Sections.nsh +!include Win\COM.nsh +!include Win\WinError.nsh +!include Win\WinNT.nsh +!include WinCore.nsh +!include WinMessages.nsh +!include WinVer.nsh +!include WordFunc.nsh +!include x64.nsh + +!include Win32.nsh +!include Common.nsh +!include AeroWizard.nsh +!include Download2KXP.nsh +!include DownloadVista7.nsh +!include Download8.nsh +!include DownloadWUA.nsh +!include RunOnce.nsh +!include UpdateRoots.nsh +!include 7zip.nsh + +!insertmacro GetParameters +!insertmacro GetOptions + +!define MUI_PAGE_HEADER_TEXT "Welcome to WUIsBack" +!define MUI_COMPONENTSPAGE_TEXT_TOP "Select what you would like WUIsBack to do. An internet connection is required to download additional components from Microsoft. Your computer will restart automatically if needed. Close all other programs before continuing." +!define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentsPageCheck +!define MUI_PAGE_CUSTOMFUNCTION_SHOW OnShow +!define MUI_PAGE_FUNCTION_GUIINIT OnShow +!define MUI_CUSTOMFUNCTION_ONMOUSEOVERSECTION OnMouseOverSection + +!insertmacro MUI_PAGE_COMPONENTS + +!define MUI_PAGE_HEADER_TEXT "Performing Actions" +!define MUI_PAGE_CUSTOMFUNCTION_SHOW OnShow + +!insertmacro MUI_PAGE_INSTFILES + +!define MUI_PAGE_HEADER_TEXT "Uninstall WUIsBack" +!define MUI_UNCONFIRMPAGE_TEXT_TOP "WUIsBack will be uninstalled. Your Windows Update configuration will be reset to directly use Microsoft servers." +!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.OnShow + +!insertmacro MUI_UNPAGE_CONFIRM + +!define MUI_PAGE_HEADER_TEXT "Performing Actions" +!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.OnShow + +!insertmacro MUI_UNPAGE_INSTFILES + +!insertmacro MUI_LANGUAGE "English" + +!macro RestartWUAUService + !insertmacro DetailPrint "Restarting Windows Update service..." + SetDetailsPrint none + ExecShellWait "" "$WINDIR\system32\net.exe" "stop wuauserv" SW_HIDE + SetDetailsPrint listonly +!macroend + +Function OnShow + Call AeroWizardOnShow +FunctionEnd + +Function un.OnShow + Call un.AeroWizardOnShow +FunctionEnd + +Section -BeforeInstall + !insertmacro InhibitSleep 1 +SectionEnd + +Section -PreDownload + ${IfNot} ${IsRunOnce} + ${AndIfNot} ${IsPostInstall} + Call PreDownload + ${EndIf} +SectionEnd + +Section - PREREQS_START +SectionEnd + +; Win2k prerequisities +Section "Windows 2000 Service Pack 4" W2KSP4 + SectionIn Ro + Call InstallW2KSP4 + Call InstallKB835732 + Call RebootIfRequired +SectionEnd + +Section "Internet Explorer 6.0 Service Pack 1" IE6SP1 + SectionIn Ro + Call InstallIE6 + Call RebootIfRequired +SectionEnd + +Section "7-Zip File Manager" 7ZIP + Call Install7Zip +SectionEnd + +; XP 2002 prerequisities +${MementoSection} "Windows XP Service Pack 3" XPSP3 + Call InstallXPSP2 + Call RebootIfRequired + Call InstallXPSP3 + Call RebootIfRequired +${MementoSectionEnd} + +${MementoSection} "Windows XP Embedded Service Pack 3" XPESP3 + Call InstallXPESP3 + Call RebootIfRequired +${MementoSectionEnd} + +; XP 2003 prerequisities +${MementoSection} "Windows XP/Server 2003 Service Pack 2" 2003SP2 + Call Install2003SP2 + Call RebootIfRequired +${MementoSectionEnd} + +; Vista prerequisities +Section "Windows Vista Service Pack 2" VISTASP2 + SectionIn Ro + Call InstallVistaSP1 + Call RebootIfRequired + Call InstallVistaSP2 + Call RebootIfRequired +SectionEnd + +Section "Windows Servicing Stack update" VISTASSU + SectionIn Ro + Call InstallKB3205638 + Call InstallKB4012583 + Call InstallKB4015195 + Call InstallKB4015380 + Call InstallKB4493730 + Call RebootIfRequired +SectionEnd + +${MementoSection} "Internet Explorer 9" VISTAIE9 + Call InstallKB971512 + Call InstallKB2117917 + Call RebootIfRequired + Call InstallIE9 + Call RebootIfRequired +${MementoSectionEnd} + +; 7 prerequisities +Section "Windows 7 Service Pack 1" WIN7SP1 + SectionIn Ro + Call InstallWin7SP1 + Call RebootIfRequired +SectionEnd + +Section "Windows Servicing Stack update" WIN7SSU + SectionIn Ro + Call InstallKB3138612 + Call InstallKB4474419 + Call InstallKB4490628 + Call RebootIfRequired +SectionEnd + +; Windows Home Server 2011 (Server 2008 R2) prerequisites +Section "Windows Home Server Update Rollup 4" WHS2011U4 + SectionIn Ro + Call InstallKB2757011 + Call RebootIfRequired +SectionEnd + +; 8 prerequisities +Section "Windows Servicing Stack update" WIN8SSU + SectionIn Ro + Call InstallKB4598297 + Call RebootIfRequired +SectionEnd + +Section "Windows 8.1" WIN81UPGRADE + ; No-op; we'll launch the support site in post-install. +SectionEnd + +; 8.1 prerequisities +Section "Windows 8.1 Update 1" WIN81UPDATE1 + SectionIn Ro + Call InstallKB3021910 + Call InstallClearCompressionFlag + Call InstallKB2919355 + Call InstallKB2932046 + Call InstallKB2959977 + Call InstallKB2937592 + Call InstallKB2934018 + Call RebootIfRequired +SectionEnd + +Section "Windows Servicing Stack update" WIN81SSU + SectionIn Ro + Call InstallKB3021910 + Call RebootIfRequired +SectionEnd + +; Shared prerequisites +Section "Windows Update Agent update" WUA + SectionIn Ro + Call InstallWUA +SectionEnd + +${MementoUnselectedSection} "Enable Windows Embedded 2009 updates" WES09 + WriteRegDword HKLM "${REGPATH_POSREADY}" "Installed" 1 +${MementoSectionEnd} + +${MementoSection} "Update root certificates store" ROOTCERTS + Call ConfigureCrypto + + ${IfNot} ${IsPostInstall} + Call UpdateRoots + ${EndIf} +${MementoSectionEnd} + +${MementoSection} "Enable Microsoft Update" WIN7MU + LegacyUpdateNSIS::EnableMicrosoftUpdate + Pop $0 + ${If} $0 != 0 + LegacyUpdateNSIS::MessageForHresult $0 + Pop $0 + MessageBox MB_USERICON "Failed to enable Microsoft Update.$\r$\n$\r$\n$0" /SD IDOK + ${EndIf} + !insertmacro RestartWUAUService +${MementoSectionEnd} + +${MementoSection} "Activate Windows" ACTIVATE + ; No-op; we'll launch the activation wizard in post-install. +${MementoSectionEnd} + +Section - PREREQS_END +SectionEnd + +; Main installation +${MementoSection} "WUIsBack" LEGACYUPDATE + SetOutPath $InstallDir + WriteUninstaller "$OUTDIR\Uninstall.exe" + + ; Add uninstall entry + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" '"$OUTDIR\LegacyUpdate.dll",-201' + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayVersion" "${VERSION}" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "Publisher" "${NAME}" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "URLInfoAbout" "${WEBSITE}" + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$OUTDIR\Uninstall.exe"' + WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$OUTDIR\Uninstall.exe" /S' + WriteRegDword HKLM "${REGPATH_UNINSTSUBKEY}" "NoModify" 1 + WriteRegDword HKLM "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1 + + ; Add Control Panel entry + ; Category 5: XP Performance and Maintenance, Vista System and Maintenance, 7+ System and Security + ; Category 10: XP SP2 Security Center, Vista Security, 7+ System and Security + WriteRegStr HKCR "${REGPATH_CPLCLSID}" "" "${NAME}" + WriteRegStr HKCR "${REGPATH_CPLCLSID}" "LocalizedString" '@"$OUTDIR\LegacyUpdate.dll",-2' + WriteRegStr HKCR "${REGPATH_CPLCLSID}" "InfoTip" '@"$OUTDIR\LegacyUpdate.dll",-4' + WriteRegStr HKCR "${REGPATH_CPLCLSID}\DefaultIcon" "" '"$OUTDIR\LegacyUpdate.dll",-201' + WriteRegStr HKCR "${REGPATH_CPLCLSID}\Shell\Open\Command" "" 'rundll32.exe "$OUTDIR\LegacyUpdate.dll",LaunchUpdateSite' + WriteRegDword HKCR "${REGPATH_CPLCLSID}\ShellFolder" "Attributes" 0 + WriteRegDword HKCR "${REGPATH_CPLCLSID}" "{305CA226-D286-468e-B848-2B2E8E697B74} 2" 5 + WriteRegStr HKCR "${REGPATH_CPLCLSID}" "System.ApplicationName" "${CPL_APPNAME}" + WriteRegStr HKCR "${REGPATH_CPLCLSID}" "System.ControlPanelCategory" "5,10" + WriteRegStr HKCR "${REGPATH_CPLCLSID}" "System.Software.TasksFileUrl" "$OUTDIR\LegacyUpdate.dll,-202" + WriteRegStr HKLM "${REGPATH_CPLNAMESPACE}" "" "${NAME}" + + ; Install DLL, with detection for it being in use by IE + ; NOTE: Here we specifically check for amd64, because the DLL is amd64. + ; We still install to native Program Files on IA64, but with x86 binaries. + SetOverwrite try + !insertmacro TryFile "..\Release\LegacyUpdate.dll" "$OUTDIR\LegacyUpdate.dll" + ${If} ${IsNativeAMD64} + ${If} ${FileExists} "$OUTDIR\LegacyUpdate32.dll" + !insertmacro TryDelete "$OUTDIR\LegacyUpdate32.dll" + ${EndIf} + !insertmacro TryRename "$OUTDIR\LegacyUpdate.dll" "$OUTDIR\LegacyUpdate32.dll" + !insertmacro TryFile "..\x64\Release\LegacyUpdate.dll" "$OUTDIR\LegacyUpdate.dll" + ${EndIf} + SetOverwrite on + + ; Register DLL + ${If} ${IsNativeAMD64} + !insertmacro RegisterDLL "" x64 "$OUTDIR\LegacyUpdate.dll" + !insertmacro RegisterDLL "" x86 "$OUTDIR\LegacyUpdate32.dll" + ${Else} + !insertmacro RegisterDLL "" x86 "$OUTDIR\LegacyUpdate.dll" + ${EndIf} + + ; Create shortcut + CreateShortcut "$COMMONSTARTMENU\${NAME}.lnk" \ + "$SYSDIR\rundll32.exe" '"$OUTDIR\LegacyUpdate.dll",LaunchUpdateSite' \ + "$OUTDIR\LegacyUpdate.dll" 0 \ + SW_SHOWNORMAL "" \ + '@"$OUTDIR\LegacyUpdate.dll",-4' + + ; Hide WU shortcuts + ; TODO: How can we consistently find the shortcuts for non-English installs? + ${If} ${AtMostWinXP2003} + ${If} ${FileExists} "$COMMONSTARTMENU\Windows Update.lnk" + CreateDirectory "$OUTDIR\Backup" + Rename "$COMMONSTARTMENU\Windows Update.lnk" "$OUTDIR\Backup\Windows Update.lnk" + ${EndIf} + + ${If} ${FileExists} "$COMMONSTARTMENU\Microsoft Update.lnk" + CreateDirectory "$OUTDIR\Backup" + Rename "$COMMONSTARTMENU\Microsoft Update.lnk" "$OUTDIR\Backup\Microsoft Update.lnk" + ${EndIf} + ${EndIf} + + ; Add to trusted sites + WriteRegDword HKCU "${REGPATH_ZONEDOMAINS}\${DOMAIN}" "http" 2 + WriteRegDword HKCU "${REGPATH_ZONEDOMAINS}\${DOMAIN}" "https" 2 + WriteRegDword HKCU "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" "http" 2 + WriteRegDword HKCU "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" "https" 2 + + ; Delete LegacyUpdate.dll in System32 from 1.0 installer + ${If} ${FileExists} $WINDIR\System32\LegacyUpdate.dll + Delete $WINDIR\System32\LegacyUpdate.dll + ${EndIf} + + ; Delete LegacyUpdate.inf from 1.0 installer + ${If} ${FileExists} $WINDIR\inf\LegacyUpdate.inf + Delete $WINDIR\inf\LegacyUpdate.inf + ${EndIf} + + ; If 32-bit Legacy Update exists, move it to 64-bit Program Files + ${If} ${RunningX64} + ${AndIf} ${FileExists} "$PROGRAMFILES32\Legacy Update\Backup" + CreateDirectory "$PROGRAMFILES64\Legacy Update" + Rename "$PROGRAMFILES32\Legacy Update\Backup" "$PROGRAMFILES64\Legacy Update\Backup" + RMDir /r "$PROGRAMFILES32\Legacy Update" + ${EndIf} + + ; Set WSUS server + ; Check if Schannel is going to work with modern TLS + !insertmacro DetailPrint "Checking SSL connectivity..." + !insertmacro DownloadRequest "${WSUS_SERVER_HTTPS}/ClientWebService/ping.bin" NONE \ + `/TIMEOUTCONNECT 0 /TIMEOUTRECONNECT 0` + Pop $0 + Call DownloadWaitSilent + Pop $0 + Pop $0 + + ${If} $0 == "OK" + ; HTTPS will work + WriteRegStr HKLM "${REGPATH_WUPOLICY}" "WUServer" "${WSUS_SERVER_HTTPS}" + WriteRegStr HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" "${WSUS_SERVER_HTTPS}" + WriteRegStr HKLM "${REGPATH_WU}" "URL" "${UPDATE_URL_HTTPS}" + ${Else} + ; Probably not supported; use HTTP + WriteRegStr HKLM "${REGPATH_WUPOLICY}" "WUServer" "${WSUS_SERVER}" + WriteRegStr HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" "${WSUS_SERVER}" + WriteRegStr HKLM "${REGPATH_WU}" "URL" "${UPDATE_URL}" + ${EndIf} + WriteRegDword HKLM "${REGPATH_WUAUPOLICY}" "UseWUServer" 1 + + ; Restart service + !insertmacro RestartWUAUService +${MementoSectionEnd} + +${MementoSection} "Allow OS Upgrade" ALLOWOSUPGRADE + WriteRegDword HKLM "${REGPATH_WUPOLICY}\OSUpgrade" "AllowOSUpgrade" 1 + !insertmacro RestartWUAUService +${MementoSectionEnd} + +${MementoSectionDone} + +Section -Uninstall + SetOutPath $InstallDir + + ; Delete shortcut + ${UnpinShortcut} "$COMMONSTARTMENU\${NAME}.lnk" + Delete "$COMMONSTARTMENU\${NAME}.lnk" + + ; Delete Control Panel entry + DeleteRegKey HKLM "${REGPATH_CPLNAMESPACE}" + DeleteRegKey HKCR "${REGPATH_CPLCLSID}" + + ; Restore shortcuts + ${If} ${FileExists} "$OUTDIR\Backup\Windows Update.lnk" + Rename "$OUTDIR\Backup\Windows Update.lnk" "$COMMONSTARTMENU\Windows Update.lnk" + ${EndIf} + + ${If} ${FileExists} "$OUTDIR\Backup\Microsoft Update.lnk" + Rename "$OUTDIR\Backup\Microsoft Update.lnk" "$COMMONSTARTMENU\Microsoft Update.lnk" + ${EndIf} + + ; Unregister DLLS + ${If} ${IsNativeAMD64} + !insertmacro RegisterDLL Un x64 "$OUTDIR\LegacyUpdate.dll" + !insertmacro RegisterDLL Un x86 "$OUTDIR\LegacyUpdate32.dll" + ${Else} + !insertmacro RegisterDLL Un x86 "$OUTDIR\LegacyUpdate.dll" + ${EndIf} + + ; Delete DLLs + SetOverwrite try + !insertmacro TryDelete "$OUTDIR\LegacyUpdate.dll" + !insertmacro TryDelete "$OUTDIR\LegacyUpdate32.dll" + SetOverwrite on + + ; Clear WSUS server + ${If} ${AtMostWinVista} + DeleteRegValue HKLM "${REGPATH_WUPOLICY}" "WUServer" + DeleteRegValue HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" + DeleteRegValue HKLM "${REGPATH_WUAUPOLICY}" "UseWUStatusServer" + DeleteRegValue HKLM "${REGPATH_WU}" "URL" + ${EndIf} + + ; Remove from trusted sites + DeleteRegKey HKCU "${REGPATH_ZONEDOMAINS}\${DOMAIN}" + DeleteRegKey HKCU "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" + + ; Restart service + !insertmacro RestartWUAUService + + ; Delete folders + RMDir /r "$OUTDIR" + RMDir /r /REBOOTOK "$RunOnceDir" + + ; Delete uninstall entry + DeleteRegKey HKLM "${REGPATH_UNINSTSUBKEY}" +SectionEnd + +!define DESCRIPTION_REBOOTS "Your computer will restart automatically to complete installation." +!define DESCRIPTION_SUPEULA "By installing, you are agreeing to the Supplemental End User License Agreement for this update." +!define DESCRIPTION_MSLT "By installing, you are agreeing to the Microsoft Software License Terms for this update." + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${W2KSP4} "Updates Windows 2000 to Service Pack 4, as required to install the Windows Update Agent.$\r$\n${DESCRIPTION_REBOOTS} ${DESCRIPTION_SUPEULA}" + !insertmacro MUI_DESCRIPTION_TEXT ${IE6SP1} "Updates Internet Explorer to 6.0 SP1, as required for Legacy Update.$\r$\n${DESCRIPTION_REBOOTS} ${DESCRIPTION_SUPEULA}" + !insertmacro MUI_DESCRIPTION_TEXT ${XPSP3} "Updates Windows XP to Service Pack 3. Required if you would like to activate Windows online. ${DESCRIPTION_REBOOTS} ${DESCRIPTION_SUPEULA}" + !insertmacro MUI_DESCRIPTION_TEXT ${XPESP3} "Updates Windows XP Embedded to Service Pack 3. Required if you would like to activate Windows online. ${DESCRIPTION_REBOOTS} ${DESCRIPTION_SUPEULA}" + !insertmacro MUI_DESCRIPTION_TEXT ${WES09} "Configures Windows to appear as Windows Embedded POSReady 2009 to Windows Update, enabling access to Windows XP security updates released between 2014 and 2019. Please note that Microsoft officially advises against doing this." + !insertmacro MUI_DESCRIPTION_TEXT ${2003SP2} "Updates Windows XP x64 Edition or Windows Server 2003 to Service Pack 2. Required if you would like to activate Windows online. ${DESCRIPTION_REBOOTS} ${DESCRIPTION_SUPEULA}" + !insertmacro MUI_DESCRIPTION_TEXT ${VISTASP2} "Updates Windows Vista or Windows Server 2008 to Service Pack 2, as required to install the Windows Update Agent. ${DESCRIPTION_REBOOTS} ${DESCRIPTION_MSLT}" + !insertmacro MUI_DESCRIPTION_TEXT ${VISTASSU} "Updates Windows Vista or Windows Server 2008 with additional updates required to resolve issues with the Windows Update Agent.$\r$\n${DESCRIPTION_REBOOTS}" + !insertmacro MUI_DESCRIPTION_TEXT ${VISTAIE9} "Updates Internet Explorer to 9.0.$\r$\n${DESCRIPTION_REBOOTS} ${DESCRIPTION_MSLT}" + !insertmacro MUI_DESCRIPTION_TEXT ${WIN7SP1} "Updates Windows 7 or Windows Server 2008 R2 to Service Pack 1, as required to install the Windows Update Agent. ${DESCRIPTION_REBOOTS} ${DESCRIPTION_MSLT}" + !insertmacro MUI_DESCRIPTION_TEXT ${WIN7SSU} "Updates Windows 7 or Windows Server 2008 R2 with additional updates required to resolve issues with the Windows Update Agent.$\r$\n${DESCRIPTION_REBOOTS}" + !insertmacro MUI_DESCRIPTION_TEXT ${WIN8SSU} "Updates Windows 8 or Windows Server 2012 with additional updates required to resolve issues with the Windows Update Agent.$\r$\n${DESCRIPTION_REBOOTS}" + !insertmacro MUI_DESCRIPTION_TEXT ${WIN81UPGRADE} "Windows 8 can be updated to Windows 8.1. This process involves a manual download. After Legacy Update setup completes, a Microsoft website will be opened with more information." + !insertmacro MUI_DESCRIPTION_TEXT ${WIN81UPDATE1} "Updates Windows 8.1 to Update 1, as required to resolve issues with the Windows Update Agent. Also required to upgrade to Windows 10.$\r$\n${DESCRIPTION_REBOOTS}" + !insertmacro MUI_DESCRIPTION_TEXT ${WIN81SSU} "Updates Windows 8.1 or Windows Server 2012 R2 with additional updates required to resolve issues with the Windows Update Agent.$\r$\n${DESCRIPTION_REBOOTS}" + !insertmacro MUI_DESCRIPTION_TEXT ${WHS2011U4} "Updates Windows Home Server 2011 to Update Rollup 4 to resolve issues with the Windows Update Agent. Also fixes data corruption problems.$\r$\n${DESCRIPTION_REBOOTS}" + !insertmacro MUI_DESCRIPTION_TEXT ${WUA} "Updates the Windows Update Agent to the latest version, as required for Legacy Update." + !insertmacro MUI_DESCRIPTION_TEXT ${ROOTCERTS} "Updates the root certificate store to the latest from Microsoft, and enables additional modern security features. Root certificates are used to verify the security of encrypted (https) connections. This fixes connection issues with some websites." + !insertmacro MUI_DESCRIPTION_TEXT ${WIN7MU} "Configures Windows to install updates for Microsoft Office and other Microsoft software." + !insertmacro MUI_DESCRIPTION_TEXT ${ACTIVATE} "Your copy of Windows is not activated. If you update the root certificates store, Windows Product Activation can be completed over the internet. Legacy Update can start the activation wizard after installation so you can activate your copy of Windows." + !insertmacro MUI_DESCRIPTION_TEXT ${ALLOWOSUPGRADE} "Forces Windows Update to deliver the Windows 10/11 upgrade." + !insertmacro MUI_DESCRIPTION_TEXT ${7ZIP} "Installs 7-Zip on Windows 2000 to open zip files.$\r$\n${DESCRIPTION_SUPEULA}" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +Function OnMouseOverSection + ${If} $0 == ${LEGACYUPDATE} + ${If} ${AtMostWinXP2003} + StrCpy $0 "Installs WUIsBack, enabling access to the full Windows Update interface via the legacyupdate.net website. Windows Update will be configured to use the WUIsBack WSUS server." + ${ElseIf} ${AtMostWin8.1} + StrCpy $0 "Installs WUIsBack, enabling access to the full Windows Update interface via the legacyupdate.net website, and Windows Update Control Panel. Windows Update will be configured to use the WUIsBack WSUS server." + ${Else} + StrCpy $0 "Installs WUIsBack, enabling access to the full Windows Update interface via the legacyupdate.net website, and Windows Update Settings page. Windows Update will be configured to use the WUIsBack WSUS server." + ${EndIf} + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:" + EnableWindow $mui.ComponentsPage.DescriptionText 1 + SendMessage $mui.ComponentsPage.DescriptionText ${WM_SETTEXT} 0 "STR:$0" + ${EndIf} +FunctionEnd + +!macro Init + SetShellVarContext All + ${If} ${RunningX64} + SetRegView 64 + StrCpy $InstallDir "$PROGRAMFILES64\${NAME}" + ${Else} + StrCpy $InstallDir "$PROGRAMFILES32\${NAME}" + ${EndIf} + StrCpy $RunOnceDir "$COMMONPROGRAMDATA\Legacy Update" + !insertmacro EnsureAdminRights + SetDetailsPrint listonly +!macroend + +Function .onInit + ${If} ${IsHelp} + MessageBox MB_USERICON \ + "Usage: setup.exe [/S] [/norestart]$\r$\n\ + $\r$\n\ + /S$\tExecutes WUIsBack setup silently.$\r$\n\ + /norestart$\tDisables automatic restart during installation.$\r$\n\ + $\r$\n\ + If no flags are passed, WUIsBack will launch its full user interface.$\r$\n\ + For more information on these flags, visit legacyupdate.net." + Quit + ${EndIf} + + !insertmacro Init + + ${If} ${IsRunOnce} + ${OrIf} ${IsPostInstall} + Call OnRunOnceLogon + ${EndIf} + + SetOutPath $PLUGINSDIR + File Patches.ini + + SetOutPath $RunOnceDir + + ${MementoSectionRestore} + + ${If} ${IsWin2000} + !insertmacro RemoveSection ${ALLOWOSUPGRADE} + ; Determine whether Win2k prereqs need to be installed + Call NeedsW2KSP4 + Call NeedsKB835732 + Pop $0 + Pop $1 + ${If} $0 == 0 + ${AndIf} $1 == 0 + !insertmacro RemoveSection ${W2KSP4} + ${EndIf} + + ; Check if system needs Internet Explorer 6 + Call NeedsIE6 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${IE6SP1} + ${EndIf} + + ; Check if 7-Zip is installed + ${If} ${FileExists} "$PROGRAMFILES\7-Zip\7zFM.exe" + !insertmacro RemoveSection ${7ZIP} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${W2KSP4} + !insertmacro RemoveSection ${IE6SP1} + !insertmacro RemoveSection ${7ZIP} + ${EndIf} + + ${If} ${IsWinXP2002} + !insertmacro RemoveSection ${ALLOWOSUPGRADE} + ${If} ${IsEmbedded} + ; Determine whether XP Embedded prereqs need to be installed + ; Windows XP Embedded (version 2001), including FLP and WEPOS, has a different service pack + !insertmacro RemoveSection ${XPSP3} + + Call NeedsXPESP3 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${XPESP3} + ${EndIf} + ${EndIf} + + ${IfNot} ${IsEmbedded} + ; Determine whether XP prereqs need to be installed + !insertmacro RemoveSection ${XPESP3} + + Call NeedsXPSP3 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${XPSP3} + ${EndIf} + ${EndIf} + + ReadRegDword $0 HKLM "${REGPATH_POSREADY}" "Installed" + ${If} $0 == 1 + !insertmacro RemoveSection ${WES09} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${XPSP3} + !insertmacro RemoveSection ${XPESP3} + !insertmacro RemoveSection ${WES09} + ${EndIf} + + ${If} ${IsWinXP2003} + !insertmacro RemoveSection ${ALLOWOSUPGRADE} + ; Determine whether 2003 prereqs need to be installed + Call Needs2003SP2 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${2003SP2} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${2003SP2} + ${EndIf} + + ${If} ${IsWinVista} + !insertmacro RemoveSection ${ALLOWOSUPGRADE} + ; Determine whether Vista prereqs need to be installed + Call NeedsVistaSP2 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${VISTASP2} + ${EndIf} + + Call NeedsVistaPostSP2 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${VISTASSU} + ${EndIf} + + Call NeedsIE9 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${VISTAIE9} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${VISTASP2} + !insertmacro RemoveSection ${VISTASSU} + !insertmacro RemoveSection ${VISTAIE9} + ${EndIf} + + ${If} ${IsWin7} + ; Determine whether 7 prereqs need to be installed + Call NeedsWin7SP1 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${WIN7SP1} + ${EndIf} + + ${If} ${IsHomeServer} + Call NeedsKB2757011 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${WHS2011U4} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${WHS2011U4} + ${EndIf} + + Call NeedsWin7SHA2 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${WIN7SSU} + ${EndIf} + + ClearErrors + EnumRegKey $0 HKLM "${REGPATH_WU_SERVICES}\${WU_MU_SERVICE_ID}" 0 + ${IfNot} ${Errors} + !insertmacro RemoveSection ${WIN7MU} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${WIN7SP1} + !insertmacro RemoveSection ${WHS2011U4} + !insertmacro RemoveSection ${WIN7SSU} + !insertmacro RemoveSection ${WIN7MU} + ${EndIf} + + ${If} ${IsWin8} + ; Determine whether 8 prereqs need to be installed + ${IfNot} ${IsWin8} + !insertmacro RemoveSection ${WIN81UPGRADE} + ${EndIf} + + Call NeedsKB4598297 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${WIN8SSU} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${WIN81UPGRADE} + !insertmacro RemoveSection ${WIN8SSU} + ${EndIf} + + ${If} ${IsWin8.1} + ; Determine whether 8.1 prereqs need to be installed + Call NeedsWin81Update1 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${WIN81UPDATE1} + ${EndIf} + + Call NeedsKB3021910 + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${WIN81SSU} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${WIN81UPDATE1} + !insertmacro RemoveSection ${WIN81SSU} + ${EndIf} + + Call DetermineWUAVersion + ${If} $0 == "" + !insertmacro RemoveSection ${WUA} + ${EndIf} + + ${If} ${IsWinXP2002} + ${OrIf} ${IsWinXP2003} + ; Check if the OS needs activation + LegacyUpdateNSIS::IsProcessRunning "wpabaln.exe" + Pop $0 + ${If} $0 == 0 + !insertmacro RemoveSection ${ACTIVATE} + ${EndIf} + ${Else} + !insertmacro RemoveSection ${ACTIVATE} + ${EndIf} + + ; Try not to be too intrusive on Windows 10 and newer, which are (for now) fine + ${If} ${AtLeastWin10} + !insertmacro RemoveSection ${ALLOWOSUPGRADE} + !insertmacro RemoveSection ${ROOTCERTS} + ${EndIf} +FunctionEnd + +Function ComponentsPageCheck + ; Skip the page if we're being launched via RunOnce + ${If} ${IsRunOnce} + ${OrIf} ${IsPostInstall} + Abort + ${EndIf} + + ; Skip if installer was invoked by IE, and all prerequisites are installed + ${If} ${IsActiveXInstall} + ${AndIf} ${SectionIsSelected} ${LEGACYUPDATE} + StrCpy $1 0 + ${For} $0 ${PREREQS_START} ${PREREQS_END} + ${If} ${SectionIsSelected} $0 + ${AndIf} $0 != ${PREREQS_START} + ${AndIf} $0 != ${PREREQS_END} + ${AndIf} $0 != ${LEGACYUPDATE} + ${AndIf} $0 != ${ROOTCERTS} + StrCpy $1 1 + ${Break} + ${EndIf} + ${Next} + + ${If} $1 == 0 + Abort + ${EndIf} + ${EndIf} +FunctionEnd + +Function PreDownload + ; Win2k + ${If} ${IsWin2000} + Call DownloadW2KSP4 + Call DownloadKB835732 + Call DownloadIE6 + ${EndIf} + + ; XP 2002 + ${If} ${IsWinXP2002} + ${AndIf} ${SectionIsSelected} ${XPSP3} + Call DownloadXPSP2 + Call DownloadXPSP3 + ${EndIf} + + ${If} ${IsWinXP2002} + ${AndIf} ${SectionIsSelected} ${XPESP3} + Call DownloadXPESP3 + ${EndIf} + + ; XP 2003 + ${If} ${IsWinXP2003} + ${AndIf} ${SectionIsSelected} ${2003SP2} + Call Download2003SP2 + ${EndIf} + + ; Vista + ${If} ${IsWinVista} + Call DownloadVistaSP1 + Call DownloadVistaSP2 + Call DownloadKB3205638 + Call DownloadKB4012583 + Call DownloadKB4015195 + Call DownloadKB4015380 + Call DownloadKB4493730 + + ${If} ${SectionIsSelected} ${VISTAIE9} + Call DownloadKB971512 + Call DownloadKB2117917 + Call DownloadIE9 + ${EndIf} + ${EndIf} + + ; 7 + ${If} ${IsWin7} + ${If} ${IsHomeServer} + Call DownloadKB2757011 + ${Else} + Call DownloadWin7SP1 + ${EndIf} + + Call DownloadKB3138612 + Call DownloadKB4474419 + Call DownloadKB4490628 + ${EndIf} + + ; 8 + ${If} ${IsWin8} + Call DownloadKB4598297 + ${EndIf} + + ; 8.1 + ${If} ${IsWin8.1} + Call DownloadKB3021910 + Call DownloadClearCompressionFlag + Call DownloadKB2919355 + Call DownloadKB2932046 + Call DownloadKB2959977 + Call DownloadKB2937592 + Call DownloadKB2934018 + Call DownloadKB3021910 + ${EndIf} + + ; General + Call DownloadWUA + + ${If} ${AtMostWin8.1} + ${AndIf} ${SectionIsSelected} ${ROOTCERTS} + Call DownloadRoots + ${EndIf} +FunctionEnd + +Function PostInstall + ; Handle first run flag if needed + ${If} ${FileExists} "$InstallDir\LegacyUpdate.dll" + ReadRegDword $0 HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "ActiveXInstalled" + ${If} ${Errors} + StrCpy $0 "firstrun" + ${Else} + StrCpy $0 "" + ${EndIf} + WriteRegDword HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "ActiveXInstalled" 1 + ${EndIf} + + ${IfNot} ${Silent} + ${AndIfNot} ${IsRunOnce} + ${IfNot} ${IsActiveXInstall} + ${AndIf} ${SectionIsSelected} ${LEGACYUPDATE} + Exec '$SYSDIR\rundll32.exe "$InstallDir\LegacyUpdate.dll",LaunchUpdateSite $0' + ${ElseIf} ${AtLeastWinVista} + Exec '$SYSDIR\wuauclt.exe /ShowWUAutoScan' + ${EndIf} + + ; Launch XP activation wizard if requested by the user + ${If} ${SectionIsSelected} ${ACTIVATE} + ExecShell "" "$WINDIR\system32\oobe\msoobe.exe" "/a" + ${EndIf} + + ; Launch Windows 8.1 upgrade site if requested by the user + ${If} ${SectionIsSelected} ${WIN81UPGRADE} + ExecShell "" "${WIN81UPGRADE_URL}" + ${EndIf} + ${EndIf} +FunctionEnd + +Function CleanUp + Call CleanUpRunOnce + !insertmacro InhibitSleep 0 + + ${If} ${IsPostInstall} + ${OrIfNot} ${RebootFlag} + RMDir /r /REBOOTOK "$RunOnceDir" + ${EndIf} +FunctionEnd + +Function .onInstSuccess + ${MementoSectionSave} + + ; Reboot now if we need to. Nothing further in this function will be run if we do need to reboot. + Call RebootIfRequired + + ; If we're done, launch the update site + Call PostInstall + Call CleanUp +FunctionEnd + +Function .onInstFailed + Call CleanUp +FunctionEnd + +Function .onSelChange + ${If} ${SectionIsSelected} ${WES09} + ; Check for SSE2. + System::Call 'kernel32::IsProcessorFeaturePresent(i ${PF_XMMI64_INSTRUCTIONS_AVAILABLE}) i .r0' + ${If} $0 == 0 + MessageBox MB_USERICON "Your processor does not support the Streaming SIMD Extensions 2 (SSE2) instruction set, which is required to install Windows Embedded 2009 updates released after May 2018. Processors that initially implemented SSE2 instructions include the Intel Pentium 4, Pentium M, and AMD Athlon 64.$\r$\n$\r$\nTo protect your Windows installation from becoming corrupted by incompatible updates, this option will be disabled." /SD IDOK + !insertmacro UnselectSection ${WES09} + ${EndIf} + ${EndIf} +FunctionEnd + +Function un.onInit + !insertmacro Init +FunctionEnd + +Function un.onUninstSuccess + !insertmacro DetailPrint "Done" + Call un.RebootIfRequired + ${IfNot} ${RebootFlag} + Quit + ${EndIf} +FunctionEnd diff --git a/setup/setupbanner.bmp b/setup/setupbanner.bmp new file mode 100644 index 0000000..fff839c Binary files /dev/null and b/setup/setupbanner.bmp differ diff --git a/setup/updroots.exe b/setup/updroots.exe new file mode 100644 index 0000000..bf3b0a0 Binary files /dev/null and b/setup/updroots.exe differ diff --git a/setup/x86-unicode/LegacyUpdateNSIS.dll b/setup/x86-unicode/LegacyUpdateNSIS.dll new file mode 100644 index 0000000..845d0e3 Binary files /dev/null and b/setup/x86-unicode/LegacyUpdateNSIS.dll differ diff --git a/setup/x86-unicode/NSxfer.dll b/setup/x86-unicode/NSxfer.dll new file mode 100644 index 0000000..a5dfcd4 Binary files /dev/null and b/setup/x86-unicode/NSxfer.dll differ diff --git a/setup/x86-unicode/System.dll b/setup/x86-unicode/System.dll new file mode 100644 index 0000000..7e7adf8 Binary files /dev/null and b/setup/x86-unicode/System.dll differ diff --git a/shared/HResult.c b/shared/HResult.c new file mode 100644 index 0000000..6a1bd0f --- /dev/null +++ b/shared/HResult.c @@ -0,0 +1,20 @@ +#include +#include "WUErrors.h" + +EXTERN_C LPWSTR GetMessageForHresult(HRESULT hr) { + LPWSTR message; + for (int i = 0; WUErrorMessages[i].hr != 0; i++) { + if (WUErrorMessages[i].hr == hr) { + message = (LPWSTR)LocalAlloc(LPTR, 4096 * sizeof(WCHAR)); + lstrcpy(message, WUErrorMessages[i].message); + return message; + } + } + + if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&message, 0, NULL) == 0) { + message = (LPWSTR)LocalAlloc(LPTR, 1024 * sizeof(WCHAR)); + wsprintf(message, L"Error 0x%08x", hr); + } + + return message; +} diff --git a/shared/HResult.h b/shared/HResult.h new file mode 100644 index 0000000..d40d3b2 --- /dev/null +++ b/shared/HResult.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +EXTERN_C LPWSTR GetMessageForHresult(HRESULT hr); diff --git a/shared/VersionInfo.cpp b/shared/VersionInfo.cpp new file mode 100644 index 0000000..73fa4ab --- /dev/null +++ b/shared/VersionInfo.cpp @@ -0,0 +1,25 @@ +#include "stdafx.h" +#include "VersionInfo.h" + +static BOOL _loadedVersionInfo = FALSE; +static OSVERSIONINFOEX _versionInfo; + +OSVERSIONINFOEX *GetVersionInfo() { + if (!_loadedVersionInfo) { + _loadedVersionInfo = true; + ZeroMemory(&_versionInfo, sizeof(OSVERSIONINFOEX)); + _versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + GetVersionEx((LPOSVERSIONINFO)&_versionInfo); + } + return &_versionInfo; +} + +BOOL IsOSVersionOrLater(DWORD major, DWORD minor) { + OSVERSIONINFOEX *versionInfo = GetVersionInfo(); + return versionInfo->dwMajorVersion > major || (versionInfo->dwMajorVersion == major && versionInfo->dwMinorVersion >= minor); +} + +BOOL IsOSVersionOrEarlier(DWORD major, DWORD minor) { + OSVERSIONINFOEX *versionInfo = GetVersionInfo(); + return versionInfo->dwMajorVersion < major || (versionInfo->dwMajorVersion == major && versionInfo->dwMinorVersion <= minor); +} diff --git a/shared/VersionInfo.h b/shared/VersionInfo.h new file mode 100644 index 0000000..a7bdd72 --- /dev/null +++ b/shared/VersionInfo.h @@ -0,0 +1,6 @@ +#pragma once +#include + +OSVERSIONINFOEX *GetVersionInfo(); +BOOL IsOSVersionOrLater(DWORD major, DWORD minor); +BOOL IsOSVersionOrEarlier(DWORD major, DWORD minor); diff --git a/shared/WMI.cpp b/shared/WMI.cpp new file mode 100644 index 0000000..6ef9b5d --- /dev/null +++ b/shared/WMI.cpp @@ -0,0 +1,45 @@ +#include "stdafx.h" +#include "WMI.h" +#include +#include + +#pragma comment(lib, "wbemuuid.lib") + +HRESULT QueryWMIProperty(BSTR query, BSTR property, VARIANT *value) { + CComPtr locator; + HRESULT hr = CoCreateInstance(CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (void **)&locator); + if (!SUCCEEDED(hr)) { + return hr; + } + + CComPtr services; + hr = locator->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), NULL, NULL, NULL, 0, NULL, NULL, &services); + if (!SUCCEEDED(hr)) { + return hr; + } + + hr = CoSetProxyBlanket(services, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE); + if (!SUCCEEDED(hr)) { + return hr; + } + + CComPtr enumerator; + hr = services->ExecQuery(L"WQL", query, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &enumerator); + if (!SUCCEEDED(hr)) { + return hr; + } + + CComPtr object; + ULONG uReturn = 0; + hr = enumerator->Next(WBEM_INFINITE, 1, &object, &uReturn); + if (!SUCCEEDED(hr)) { + return hr; + } + + hr = object->Get(property, 0, value, NULL, NULL); + if (!SUCCEEDED(hr)) { + return hr; + } + + return S_OK; +} diff --git a/shared/WMI.h b/shared/WMI.h new file mode 100644 index 0000000..b2507d3 --- /dev/null +++ b/shared/WMI.h @@ -0,0 +1,6 @@ +#pragma once +#include +#include +#include + +HRESULT QueryWMIProperty(BSTR query, BSTR property, VARIANT *value); diff --git a/shared/WUErrors.c b/shared/WUErrors.c new file mode 100644 index 0000000..8307365 --- /dev/null +++ b/shared/WUErrors.c @@ -0,0 +1,266 @@ +#include "stdafx.h" +#include "WUErrors.h" +#include + +// TODO: There needs to be a better way to do this other than hardcoding all these English strings... +HResultMessage WUErrorMessages[] = { + { WU_S_SERVICE_STOP, L"Windows Update Agent was stopped successfully." }, + { WU_S_SELFUPDATE, L"Windows Update Agent updated itself." }, + { WU_S_UPDATE_ERROR, L"Operation completed successfully but there were errors applying the updates.." }, + { WU_S_MARKED_FOR_DISCONNECT, L"A callback was marked to be disconnected later because the request to disconnect the operation came while a callback was executing." }, + { WU_S_REBOOT_REQUIRED, L"The system must be restarted to complete installation of the update." }, + { WU_S_ALREADY_INSTALLED, L"The update to be installed is already installed on the system." }, + { WU_S_ALREADY_UNINSTALLED, L"The update to be removed is not installed on the system." }, + { WU_S_ALREADY_DOWNLOADED, L"The update to be downloaded has already been downloaded." }, + { WU_E_NO_SERVICE, L"Windows Update Agent was unable to provide the service." }, + { WU_E_MAX_CAPACITY_REACHED, L"The maximum capacity of the service was exceeded." }, + { WU_E_UNKNOWN_ID, L"An ID cannot be found." }, + { WU_E_NOT_INITIALIZED, L"The object could not be initialized." }, + { WU_E_RANGEOVERLAP, L"The update handler requested a byte range overlapping a previously requested range." }, + { WU_E_TOOMANYRANGES, L"The requested number of byte ranges exceeds the maximum number (2^31 - 1)." }, + { WU_E_INVALIDINDEX, L"The index to a collection was invalid." }, + { WU_E_ITEMNOTFOUND, L"The key for the item queried could not be found." }, + { WU_E_OPERATIONINPROGRESS, L"Another conflicting operation was in progress. Some operations such as installation cannot be performed twice simultaneously." }, + { WU_E_COULDNOTCANCEL, L"Cancellation of the operation was not allowed." }, + { WU_E_CALL_CANCELLED, L"Operation was cancelled." }, + { WU_E_NOOP, L"No operation was required." }, + { WU_E_XML_MISSINGDATA, L"Windows Update Agent could not find required information in the update's XML data." }, + { WU_E_XML_INVALID, L"Windows Update Agent found invalid information in the update's XML data." }, + { WU_E_CYCLE_DETECTED, L"Circular update relationships were detected in the metadata." }, + { WU_E_TOO_DEEP_RELATION, L"Update relationships too deep to evaluate were evaluated." }, + { WU_E_INVALID_RELATIONSHIP, L"An invalid update relationship was detected." }, + { WU_E_REG_VALUE_INVALID, L"An invalid registry value was read." }, + { WU_E_DUPLICATE_ITEM, L"Operation tried to add a duplicate item to a list." }, + { WU_E_INSTALL_NOT_ALLOWED, L"Operation tried to install while another installation was in progress or the system was pending a mandatory restart." }, + { WU_E_NOT_APPLICABLE, L"Operation was not performed because there are no applicable updates." }, + { WU_E_NO_USERTOKEN, L"Operation failed because a required user token is missing." }, + { WU_E_EXCLUSIVE_INSTALL_CONFLICT, L"An exclusive update cannot be installed with other updates at the same time." }, + { WU_E_POLICY_NOT_SET, L"A policy value was not set." }, + { WU_E_SELFUPDATE_IN_PROGRESS, L"The operation could not be performed because the Windows Update Agent is self-updating." }, + { WU_E_INVALID_UPDATE, L"An update contains invalid metadata." }, + { WU_E_SERVICE_STOP, L"Operation did not complete because the service or system was being shut down." }, + { WU_E_NO_CONNECTION, L"Operation did not complete because the network connection was unavailable." }, + { WU_E_NO_INTERACTIVE_USER, L"Operation did not complete because there is no logged-on interactive user." }, + { WU_E_TIME_OUT, L"Operation did not complete because it timed out." }, + { WU_E_ALL_UPDATES_FAILED, L"Operation failed for all the updates." }, + { WU_E_EULAS_DECLINED, L"The license terms for all updates were declined." }, + { WU_E_NO_UPDATE, L"There are no updates." }, + { WU_E_USER_ACCESS_DISABLED, L"Group Policy settings prevented access to Windows Update." }, + { WU_E_INVALID_UPDATE_TYPE, L"The type of update is invalid." }, + { WU_E_URL_TOO_LONG, L"The URL exceeded the maximum length." }, + { WU_E_UNINSTALL_NOT_ALLOWED, L"The update could not be uninstalled because the request did not originate from a WSUS server." }, + { WU_E_INVALID_PRODUCT_LICENSE, L"Search may have missed some updates before there is an unlicensed application on the system." }, + { WU_E_MISSING_HANDLER, L"A component required to detect applicable updates was missing." }, + { WU_E_LEGACYSERVER, L"An operation did not complete because it requires a newer version of server." }, + { WU_E_BIN_SOURCE_ABSENT, L"A delta-compressed update could not be installed because it required the source." }, + { WU_E_SOURCE_ABSENT, L"A full-file update could not be installed because it required the source." }, + { WU_E_WU_DISABLED, L"Access to an unmanaged server is not allowed." }, + { WU_E_CALL_CANCELLED_BY_POLICY, L"Operation did not complete because the DisableWindowsUpdateAccess policy was set." }, + { WU_E_INVALID_PROXY_SERVER, L"The format of the proxy list was invalid." }, + { WU_E_INVALID_FILE, L"The file is in the wrong format." }, + { WU_E_INVALID_CRITERIA, L"The search criteria string was invalid." }, + { WU_E_EULA_UNAVAILABLE, L"License terms could not be downloaded." }, + { WU_E_DOWNLOAD_FAILED, L"Update failed to download." }, + { WU_E_UPDATE_NOT_PROCESSED, L"The update was not processed." }, + { WU_E_INVALID_OPERATION, L"The object's current state did not allow the operation." }, + { WU_E_NOT_SUPPORTED, L"The functionality for the operation is not supported." }, + { WU_E_WINHTTP_INVALID_FILE, L"The downloaded file has an unexpected content type." }, + { WU_E_TOO_MANY_RESYNC, L"Agent is asked by server to resync too many times." }, + { WU_E_NO_SERVER_CORE_SUPPORT, L"WUA API method does not run on Server Core installation." }, + { WU_E_SYSPREP_IN_PROGRESS, L"Service is not available while sysprep is running." }, + { WU_E_UNKNOWN_SERVICE, L"The update service is no longer registered with AU." }, + { WU_E_UNEXPECTED, L"An operation failed due to reasons not covered by another error code." }, + { WU_E_MSI_WRONG_VERSION, L"Search may have missed some updates because the Windows Installer is less than version 3.1." }, + { WU_E_MSI_NOT_CONFIGURED, L"Search may have missed some updates because the Windows Installer is not configured." }, + { WU_E_MSP_DISABLED, L"Search may have missed some updates because policy has disabled Windows Installer patching." }, + { WU_E_MSI_WRONG_APP_CONTEXT, L"An update could not be applied because the application is installed per-user." }, + { WU_E_MSP_UNEXPECTED, L"Search may have missed some updates because there was a failure of the Windows Installer." }, + { WU_E_UH_REMOTEUNAVAILABLE, L"A request for a remote update handler could not be completed because no remote process is available." }, + { WU_E_UH_LOCALONLY, L"A request for a remote update handler could not be completed because the handler is local only." }, + { WU_E_UH_UNKNOWNHANDLER, L"A request for an update handler could not be completed because the handler could not be recognized." }, + { WU_E_UH_REMOTEALREADYACTIVE, L"A remote update handler could not be created because one already exists." }, + { WU_E_UH_DOESNOTSUPPORTACTION, L"A request for the handler to install (uninstall) an update could not be completed because the update does not support install (uninstall)." }, + { WU_E_UH_WRONGHANDLER, L"An operation did not complete because the wrong handler was specified." }, + { WU_E_UH_INVALIDMETADATA, L"A handler operation could not be completed because the update contains invalid metadata." }, + { WU_E_UH_INSTALLERHUNG, L"An operation could not be completed because the installer exceeded the time limit." }, + { WU_E_UH_OPERATIONCANCELLED, L"An operation being done by the update handler was cancelled." }, + { WU_E_UH_BADHANDLERXML, L"An operation could not be completed because the handler-specific metadata is invalid." }, + { WU_E_UH_CANREQUIREINPUT, L"A request to the handler to install an update could not be completed because the update requires user input." }, + { WU_E_UH_INSTALLERFAILURE, L"The installer failed to install (uninstall) one or more updates." }, + { WU_E_UH_FALLBACKTOSELFCONTAINED, L"The update handler should download self-contained content rather than delta-compressed content for the update." }, + { WU_E_UH_NEEDANOTHERDOWNLOAD, L"The update handler did not install the update because it needs to be downloaded again." }, + { WU_E_UH_NOTIFYFAILURE, L"The update handler failed to send notification of the status of the install (uninstall) operation." }, + { WU_E_UH_INCONSISTENT_FILE_NAMES, L"The file names contained in the update metadata and in the update package are inconsistent." }, + { WU_E_UH_FALLBACKERROR, L"The update handler failed to fall back to the self-contained content." }, + { WU_E_UH_TOOMANYDOWNLOADREQUESTS, L"The update handler has exceeded the maximum number of download requests." }, + { WU_E_UH_UNEXPECTEDCBSRESPONSE, L"The update handler has received an unexpected response from CBS." }, + { WU_E_UH_BADCBSPACKAGEID, L"The update metadata contains an invalid CBS package identifier." }, + { WU_E_UH_POSTREBOOTSTILLPENDING, L"The post-reboot operation for the update is still in progress." }, + { WU_E_UH_POSTREBOOTRESULTUNKNOWN, L"The result of the post-reboot operation for the update could not be determined." }, + { WU_E_UH_POSTREBOOTUNEXPECTEDSTATE, L"The state of the update after its post-reboot operation has completed is unexpected." }, + { WU_E_UH_NEW_SERVICING_STACK_REQUIRED, L"The operating system servicing stack must be updated before this update is downloaded or installed." }, + { WU_E_UH_UNEXPECTED, L"An update handler error not covered by another WU_E_UH_* code." }, + { WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION, L"The results of download and installation could not be read from the registry due to an unrecognized data format version." }, + { WU_E_INSTALLATION_RESULTS_INVALID_DATA, L"The results of download and installation could not be read from the registry due to an invalid data format." }, + { WU_E_INSTALLATION_RESULTS_NOT_FOUND, L"The results of download and installation are not available; the operation may have failed to start." }, + { WU_E_TRAYICON_FAILURE, L"A failure occurred when trying to create an icon in the taskbar notification area." }, + { WU_E_NON_UI_MODE, L"Unable to show UI when in non-UI mode; WU client UI modules may not be installed." }, + { WU_E_WUCLTUI_UNSUPPORTED_VERSION, L"Unsupported version of WU client UI exported functions." }, + { WU_E_AUCLIENT_UNEXPECTED, L"There was a user interface error not covered by another WU_E_AUCLIENT_* error code." }, + { WU_E_PT_SOAPCLIENT_BASE, L"WU_E_PT_SOAPCLIENT_* error codes map to the SOAPCLIENT_ERROR enum of the ATL Server Library." }, + { WU_E_PT_SOAPCLIENT_INITIALIZE, L"SOAPCLIENT_INITIALIZE_ERROR - initialization of the SOAP client failed, possibly because of an MSXML installation failure." }, + { WU_E_PT_SOAPCLIENT_OUTOFMEMORY, L"SOAPCLIENT_OUTOFMEMORY - SOAP client failed because it ran out of memory." }, + { WU_E_PT_SOAPCLIENT_GENERATE, L"SOAPCLIENT_GENERATE_ERROR - SOAP client failed to generate the request." }, + { WU_E_PT_SOAPCLIENT_CONNECT, L"SOAPCLIENT_CONNECT_ERROR - SOAP client failed to connect to the server." }, + { WU_E_PT_SOAPCLIENT_SEND, L"SOAPCLIENT_SEND_ERROR - SOAP client failed to send a message for reasons of WU_E_WINHTTP_* error codes." }, + { WU_E_PT_SOAPCLIENT_SERVER, L"SOAPCLIENT_SERVER_ERROR - SOAP client failed because there was a server error." }, + { WU_E_PT_SOAPCLIENT_SOAPFAULT, L"SOAPCLIENT_SOAPFAULT - SOAP client failed because there was a SOAP fault for reasons of WU_E_PT_SOAP_* error codes." }, + { WU_E_PT_SOAPCLIENT_PARSEFAULT, L"SOAPCLIENT_PARSEFAULT_ERROR - SOAP client failed to parse a SOAP fault." }, + { WU_E_PT_SOAPCLIENT_READ, L"SOAPCLIENT_READ_ERROR - SOAP client failed while reading the response from the server." }, + { WU_E_PT_SOAPCLIENT_PARSE, L"SOAPCLIENT_PARSE_ERROR - SOAP client failed to parse the response from the server." }, + { WU_E_PT_SOAP_VERSION, L"SOAP_E_VERSION_MISMATCH - SOAP client found an unrecognizable namespace for the SOAP envelope." }, + { WU_E_PT_SOAP_MUST_UNDERSTAND, L"SOAP_E_MUST_UNDERSTAND - SOAP client was unable to understand a header." }, + { WU_E_PT_SOAP_CLIENT, L"SOAP_E_CLIENT - SOAP client found the message was malformed; fix before resending." }, + { WU_E_PT_SOAP_SERVER, L"SOAP_E_SERVER - The SOAP message could not be processed due to a server error; resend later." }, + { WU_E_PT_WMI_ERROR, L"There was an unspecified Windows Management Instrumentation (WMI) error." }, + { WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS, L"The number of round trips to the server exceeded the maximum limit." }, + { WU_E_PT_SUS_SERVER_NOT_SET, L"WUServer policy value is missing in the registry." }, + { WU_E_PT_DOUBLE_INITIALIZATION, L"Initialization failed because the object was already initialized." }, + { WU_E_PT_INVALID_COMPUTER_NAME, L"The computer name could not be determined." }, + { WU_E_PT_REFRESH_CACHE_REQUIRED, L"The reply from the server indicates that the server was changed or the cookie was invalid; refresh the state of the internal cache and retry." }, + { WU_E_PT_HTTP_STATUS_BAD_REQUEST, L"HTTP 400 - the server could not process the request due to invalid syntax." }, + { WU_E_PT_HTTP_STATUS_DENIED, L"HTTP 401 - the requested resource requires user authentication." }, + { WU_E_PT_HTTP_STATUS_FORBIDDEN, L"HTTP 403 - server understood the request, but declined to fulfill it." }, + { WU_E_PT_HTTP_STATUS_NOT_FOUND, L"HTTP 404 - the server cannot find the requested URI (Uniform Resource Identifier)." }, + { WU_E_PT_HTTP_STATUS_BAD_METHOD, L"HTTP 405 - the HTTP method is not allowed." }, + { WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ, L"HTTP 407 - proxy authentication is required." }, + { WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT, L"HTTP 408 - the server timed out waiting for the request." }, + { WU_E_PT_HTTP_STATUS_CONFLICT, L"HTTP 409 - the request was not completed due to a conflict with the current state of the resource." }, + { WU_E_PT_HTTP_STATUS_GONE, L"HTTP 410 - requested resource is no longer available at the server." }, + { WU_E_PT_HTTP_STATUS_SERVER_ERROR, L"HTTP 500 - an error internal to the server prevented fulfilling the request." }, + { WU_E_PT_HTTP_STATUS_NOT_SUPPORTED, L"HTTP 501 - server does not support the functionality required to fulfill the request." }, + { WU_E_PT_HTTP_STATUS_BAD_GATEWAY, L"HTTP 502 - the server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request." }, + { WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL, L"HTTP 503 - the service is temporarily overloaded." }, + { WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT, L"HTTP 504 - the request was timed out waiting for a gateway." }, + { WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP, L"HTTP 505 - the server does not support the HTTP protocol version used for the request." }, + { WU_E_PT_FILE_LOCATIONS_CHANGED, L"Operation failed due to a changed file location; refresh internal state and resend." }, + { WU_E_PT_REGISTRATION_NOT_SUPPORTED, L"Operation failed because Windows Update Agent does not support registration with a non-WSUS server." }, + { WU_E_PT_NO_AUTH_PLUGINS_REQUESTED, L"The server returned an empty authentication information list." }, + { WU_E_PT_NO_AUTH_COOKIES_CREATED, L"Windows Update Agent was unable to create any valid authentication cookies." }, + { WU_E_PT_INVALID_CONFIG_PROP, L"A configuration property value was wrong." }, + { WU_E_PT_CONFIG_PROP_MISSING, L"A configuration property value was missing." }, + { WU_E_PT_HTTP_STATUS_NOT_MAPPED, L"The HTTP request could not be completed and the reason did not correspond to any of the WU_E_PT_HTTP_* error codes." }, + { WU_E_PT_WINHTTP_NAME_NOT_RESOLVED, L"ERROR_WINHTTP_NAME_NOT_RESOLVED - the proxy server or target server name cannot be resolved." }, + { WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS, L"External cab file processing completed with some errors. (Confirm that download.windowsupdate.com and www.download.windowsupdate.com aren't being blocked by a firewall.)" }, + { WU_E_PT_ECP_INIT_FAILED, L"The external cab processor initialization did not complete." }, + { WU_E_PT_ECP_INVALID_FILE_FORMAT, L"The format of a metadata file was invalid." }, + { WU_E_PT_ECP_INVALID_METADATA, L"External cab processor found invalid metadata." }, + { WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST, L"The file digest could not be extracted from an external cab file." }, + { WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE, L"An external cab file could not be decompressed." }, + { WU_E_PT_ECP_FILE_LOCATION_ERROR, L"External cab processor was unable to get file locations." }, + { WU_E_PT_UNEXPECTED, L"A communication error not covered by another WU_E_PT_* error code" }, + { WU_E_REDIRECTOR_LOAD_XML, L"The redirector XML document could not be loaded into the DOM class." }, + { WU_E_REDIRECTOR_S_FALSE, L"The redirector XML document is missing some required information." }, + { WU_E_REDIRECTOR_ID_SMALLER, L"The redirector ID in the downloaded redirector cab is less than in the cached cab." }, + { WU_E_PT_SAME_REDIR_ID, L"Windows Update Agent failed to download a redirector cabinet file with a new redirector ID value from the server during the recovery." }, + { WU_E_PT_NO_MANAGED_RECOVER, L"A redirector recovery action did not complete because the server is managed." }, + { WU_E_REDIRECTOR_UNEXPECTED, L"The redirector failed for reasons not covered by another WU_E_REDIRECTOR_* error code." }, + { WU_E_DM_URLNOTAVAILABLE, L"A download manager operation could not be completed because the requested file does not have a URL." }, + { WU_E_DM_INCORRECTFILEHASH, L"A download manager operation could not be completed because the file digest was not recognized." }, + { WU_E_DM_UNKNOWNALGORITHM, L"A download manager operation could not be completed because the file metadata requested an unrecognized hash algorithm." }, + { WU_E_DM_NEEDDOWNLOADREQUEST, L"An operation could not be completed because a download request is required from the download handler." }, + { WU_E_DM_NONETWORK, L"A download manager operation could not be completed because the network connection was unavailable." }, + { WU_E_DM_WRONGBITSVERSION, L"A download manager operation could not be completed because the version of Background Intelligent Transfer Service (BITS) is incompatible." }, + { WU_E_DM_NOTDOWNLOADED, L"The update has not been downloaded." }, + { WU_E_DM_FAILTOCONNECTTOBITS, L"A download manager operation failed because the download manager was unable to connect the Background Intelligent Transfer Service (BITS)." }, + { WU_E_DM_BITSTRANSFERERROR, L"A download manager operation failed because there was an unspecified Background Intelligent Transfer Service (BITS) transfer error." }, + { WU_E_DM_DOWNLOADLOCATIONCHANGED, L"A download must be restarted because the location of the source of the download has changed." }, + { WU_E_DM_CONTENTCHANGED, L"A download must be restarted because the update content changed in a new revision." }, + { WU_E_DM_UNEXPECTED, L"There was a download manager error not covered by another WU_E_DM_* error code." }, + { WU_E_OL_INVALID_SCANFILE, L"An operation could not be completed because the scan package was invalid." }, + { WU_E_OL_NEWCLIENT_REQUIRED, L"An operation could not be completed because the scan package requires a greater version of the Windows Update Agent." }, + { WU_E_OL_UNEXPECTED, L"Search using the scan package failed." }, + { WU_E_REPORTER_EVENTCACHECORRUPT, L"The event cache file was defective." }, + { WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED, L"The XML in the event namespace descriptor could not be parsed." }, + { WU_E_INVALID_EVENT, L"The XML in the event namespace descriptor could not be parsed." }, + { WU_E_SERVER_BUSY, L"The server rejected an event because the server was too busy." }, + { WU_E_REPORTER_UNEXPECTED, L"There was a reporter error not covered by another error code." }, + { WU_E_DS_SHUTDOWN, L"An operation failed because Windows Update Agent is shutting down." }, + { WU_E_DS_INUSE, L"An operation failed because the data store was in use." }, + { WU_E_DS_INVALID, L"The current and expected states of the data store do not match." }, + { WU_E_DS_TABLEMISSING, L"The data store is missing a table." }, + { WU_E_DS_TABLEINCORRECT, L"The data store contains a table with unexpected columns." }, + { WU_E_DS_INVALIDTABLENAME, L"A table could not be opened because the table is not in the data store." }, + { WU_E_DS_BADVERSION, L"The current and expected versions of the data store do not match." }, + { WU_E_DS_NODATA, L"The information requested is not in the data store." }, + { WU_E_DS_MISSINGDATA, L"The data store is missing required information or has a NULL in a table column that requires a non-null value." }, + { WU_E_DS_MISSINGREF, L"The data store is missing required information or has a reference to missing license terms, file, localized property or linked row." }, + { WU_E_DS_UNKNOWNHANDLER, L"The update was not processed because its update handler could not be recognized." }, + { WU_E_DS_CANTDELETE, L"The update was not deleted because it is still referenced by one or more services." }, + { WU_E_DS_LOCKTIMEOUTEXPIRED, L"The data store section could not be locked within the allotted time." }, + { WU_E_DS_NOCATEGORIES, L"The category was not added because it contains no parent categories and is not a top-level category itself." }, + { WU_E_DS_ROWEXISTS, L"The row was not added because an existing row has the same primary key." }, + { WU_E_DS_STOREFILELOCKED, L"The data store could not be initialized because it was locked by another process." }, + { WU_E_DS_CANNOTREGISTER, L"The data store is not allowed to be registered with COM in the current process." }, + { WU_E_DS_UNABLETOSTART, L"Could not create a data store object in another process." }, + { WU_E_DS_DUPLICATEUPDATEID, L"The server sent the same update to the client with two different revision IDs." }, + { WU_E_DS_UNKNOWNSERVICE, L"An operation did not complete because the service is not in the data store." }, + { WU_E_DS_SERVICEEXPIRED, L"An operation did not complete because the registration of the service has expired." }, + { WU_E_DS_DECLINENOTALLOWED, L"A request to hide an update was declined because it is a mandatory update or because it was deployed with a deadline." }, + { WU_E_DS_TABLESESSIONMISMATCH, L"A table was not closed because it is not associated with the session." }, + { WU_E_DS_SESSIONLOCKMISMATCH, L"A table was not closed because it is not associated with the session." }, + { WU_E_DS_NEEDWINDOWSSERVICE, L"A request to remove the Windows Update service or to unregister it with Automatic Updates was declined because it is a built-in service and/or Automatic Updates cannot fall back to another service." }, + { WU_E_DS_INVALIDOPERATION, L"A request was declined because the operation is not allowed." }, + { WU_E_DS_SCHEMAMISMATCH, L"The schema of the current data store and the schema of a table in a backup XML document do not match." }, + { WU_E_DS_RESETREQUIRED, L"The data store requires a session reset; release the session and retry with a new session." }, + { WU_E_DS_IMPERSONATED, L"A data store operation did not complete because it was requested with an impersonated identity." }, + { WU_E_DS_UNEXPECTED, L"A data store error not covered by another WU_E_DS_* code." }, + { WU_E_INVENTORY_PARSEFAILED, L"Parsing of the rule file failed." }, + { WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED, L"Failed to get the requested inventory type from the server." }, + { WU_E_INVENTORY_RESULT_UPLOAD_FAILED, L"Failed to upload inventory result to the server." }, + { WU_E_INVENTORY_UNEXPECTED, L"There was an inventory error not covered by another error code." }, + { WU_E_INVENTORY_WMI_ERROR, L"A WMI error occurred when enumerating the instances for a particular class." }, + { WU_E_AU_NOSERVICE, L"Automatic Updates was unable to service incoming requests." }, + { WU_E_AU_NONLEGACYSERVER, L"The old version of the Automatic Updates client has stopped because the WSUS server has been upgraded." }, + { WU_E_AU_LEGACYCLIENTDISABLED, L"The old version of the Automatic Updates client was disabled." }, + { WU_E_AU_PAUSED, L"Automatic Updates was unable to process incoming requests because it was paused." }, + { WU_E_AU_NO_REGISTERED_SERVICE, L"No unmanaged service is registered with AU." }, + { WU_E_AU_UNEXPECTED, L"An Automatic Updates error not covered by another WU_E_AU * code." }, + { WU_E_DRV_PRUNED, L"A driver was skipped." }, + { WU_E_DRV_NOPROP_OR_LEGACY, L"A property for the driver could not be found. It may not conform with required specifications." }, + { WU_E_DRV_REG_MISMATCH, L"The registry type read for the driver does not match the expected type." }, + { WU_E_DRV_NO_METADATA, L"The driver update is missing metadata." }, + { WU_E_DRV_MISSING_ATTRIBUTE, L"The driver update is missing a required attribute." }, + { WU_E_DRV_SYNC_FAILED, L"Driver synchronization failed." }, + { WU_E_DRV_NO_PRINTER_CONTENT, L"Information required for the synchronization of applicable printers is missing." }, + { WU_E_DRV_UNEXPECTED, L"A driver error not covered by another WU_E_DRV_* code." }, + { WU_E_SETUP_INVALID_INFDATA, L"Windows Update Agent could not be updated because an INF file contains invalid information." }, + { WU_E_SETUP_INVALID_IDENTDATA, L"Windows Update Agent could not be updated because the wuident.cab file contains invalid information." }, + { WU_E_SETUP_ALREADY_INITIALIZED, L"Windows Update Agent could not be updated because of an internal error that caused setup initialization to be performed twice." }, + { WU_E_SETUP_NOT_INITIALIZED, L"Windows Update Agent could not be updated because setup initialization never completed successfully." }, + { WU_E_SETUP_SOURCE_VERSION_MISMATCH, L"Windows Update Agent could not be updated because the versions specified in the INF do not match the actual source file versions." }, + { WU_E_SETUP_TARGET_VERSION_GREATER, L"Windows Update Agent could not be updated because a WUA file on the target system is newer than the corresponding source file." }, + { WU_E_SETUP_REGISTRATION_FAILED, L"Windows Update Agent could not be updated because regsvr32.exe returned an error." }, + { WU_E_SELFUPDATE_SKIP_ON_FAILURE, L"An update to the Windows Update Agent was skipped because previous attempts to update have failed." }, + { WU_E_SETUP_SKIP_UPDATE, L"An update to the Windows Update Agent was skipped due to a directive in the wuident.cab file." }, + { WU_E_SETUP_UNSUPPORTED_CONFIGURATION, L"Windows Update Agent could not be updated because the current system configuration is not supported." }, + { WU_E_SETUP_BLOCKED_CONFIGURATION, L"Windows Update Agent could not be updated because the system is configured to block the update." }, + { WU_E_SETUP_REBOOT_TO_FIX, L"Windows Update Agent could not be updated because a restart of the system is required." }, + { WU_E_SETUP_ALREADYRUNNING, L"Windows Update Agent setup is already running." }, + { WU_E_SETUP_REBOOTREQUIRED, L"Windows Update Agent setup package requires a reboot to complete installation." }, + { WU_E_SETUP_HANDLER_EXEC_FAILURE, L"Windows Update Agent could not be updated because the setup handler failed during execution." }, + { WU_E_SETUP_INVALID_REGISTRY_DATA, L"Windows Update Agent could not be updated because the registry contains invalid information." }, + { WU_E_SELFUPDATE_REQUIRED, L"Windows Update Agent must be updated before search can continue." }, + { WU_E_SELFUPDATE_REQUIRED_ADMIN, L"Windows Update Agent must be updated before search can continue. An administrator is required to perform the operation." }, + { WU_E_SETUP_WRONG_SERVER_VERSION, L"Windows Update Agent could not be updated because the server does not contain update information for this version." }, + { WU_E_SETUP_UNEXPECTED, L"Windows Update Agent could not be updated because of an error not covered by another WU_E_SETUP_* error code." }, + { WU_E_EE_UNKNOWN_EXPRESSION, L"An expression evaluator operation could not be completed because an expression was unrecognized." }, + { WU_E_EE_INVALID_EXPRESSION, L"An expression evaluator operation could not be completed because an expression was invalid." }, + { WU_E_EE_MISSING_METADATA, L"An expression evaluator operation could not be completed because an expression contains an incorrect number of metadata nodes." }, + { WU_E_EE_INVALID_VERSION, L"An expression evaluator operation could not be completed because the version of the serialized expression data is invalid." }, + { WU_E_EE_NOT_INITIALIZED, L"The expression evaluator could not be initialized." }, + { WU_E_EE_INVALID_ATTRIBUTEDATA, L"An expression evaluator operation could not be completed because there was an invalid attribute." }, + { WU_E_EE_CLUSTER_ERROR, L"An expression evaluator operation could not be completed because the cluster state of the computer could not be determined." }, + { WU_E_EE_UNEXPECTED, L"There was an expression evaluator error not covered by another WU_E_EE_* error code." }, + NULL +}; diff --git a/shared/WUErrors.h b/shared/WUErrors.h new file mode 100644 index 0000000..e077cc6 --- /dev/null +++ b/shared/WUErrors.h @@ -0,0 +1,9 @@ +#pragma once +#include + +struct HResultMessage { + HRESULT hr; + const LPWSTR message; +}; + +EXTERN_C HResultMessage WUErrorMessages[]; diff --git a/shared/stdafx.h b/shared/stdafx.h new file mode 100644 index 0000000..e69de29