Repository: kirb/LegacyUpdate Branch: main Commit: aa9588ac9647 Files: 179 Total size: 1.4 MB Directory structure: gitextract_cbt5iapr/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 01-bug_report.yml │ │ ├── 02-update_issue.yml │ │ ├── 03-download_center_issue.yml │ │ ├── 04-feature_suggestion.yml │ │ └── config.yml │ └── workflows/ │ ├── build-nt4.yml │ └── build.yml ├── .gitignore ├── .idea/ │ └── .idea.LegacyUpdate/ │ └── .idea/ │ ├── .gitignore │ ├── discord.xml │ ├── indexLayout.xml │ └── vcs.xml ├── .vscode/ │ ├── c_cpp_properties.json │ └── settings.json ├── LICENSE.md ├── LegacyUpdate/ │ ├── ClassFactory.cpp │ ├── ClassFactory.h │ ├── Compat.cpp │ ├── Compat.h │ ├── ElevationHelper.cpp │ ├── ElevationHelper.h │ ├── IUpdateInstaller4.h │ ├── LaunchUpdateSite.cpp │ ├── LegacyUpdate.def │ ├── LegacyUpdate.idl │ ├── LegacyUpdate.rc │ ├── LegacyUpdate.vcxproj │ ├── LegacyUpdate.vcxproj.filters │ ├── LegacyUpdateCtrl.cpp │ ├── LegacyUpdateCtrl.h │ ├── Makefile │ ├── NGen.cpp │ ├── NGen.h │ ├── ProductName.cpp │ ├── ProductName.h │ ├── ProgressBarControl.cpp │ ├── ProgressBarControl.h │ ├── ProgressBarControl.html │ ├── Utils.cpp │ ├── Utils.h │ ├── dlldatax.c │ ├── dlldatax.h │ ├── dllmain.cpp │ ├── dllmain.h │ ├── resource.h │ ├── stdafx.h │ ├── wuapi.idl │ ├── wuerror.mc │ └── wuguid.cpp ├── LegacyUpdate.sln ├── Makefile ├── README.md ├── build/ │ ├── fix-nsis.sh │ ├── get-nt4-patches.sh │ ├── getvc.cmd │ ├── shared.mk │ ├── sign.cmd │ └── sign.sh ├── include/ │ ├── com/ │ │ ├── ComClass.h │ │ ├── ComPtr.h │ │ ├── IDispatchImpl.h │ │ ├── IOleInPlaceActiveObjectImpl.h │ │ ├── IOleInPlaceObjectImpl.h │ │ ├── IOleObjectImpl.h │ │ ├── IQuickActivateImpl.h │ │ ├── IUnknownImpl.h │ │ ├── IViewObjectExImpl.h │ │ └── helpers.h │ ├── com.h │ ├── licdll.h │ ├── licdll.idl │ ├── nsis/ │ │ ├── api.h │ │ ├── nsis_tchar.h │ │ ├── pluginapi.c │ │ └── pluginapi.h │ ├── slpublic.h │ ├── wuapi.h │ └── wuerror.h ├── launcher/ │ ├── CplTasks.xml │ ├── InitRunOnce.c │ ├── LaunchLog.c │ ├── LaunchUpdateSite.c │ ├── Makefile │ ├── MsgBox.c │ ├── MsgBox.h │ ├── Options.c │ ├── RegisterServer.c │ ├── RegisterServer.h │ ├── SelfElevate.c │ ├── SelfElevate.h │ ├── main.c │ ├── main.h │ ├── manifest.xml │ ├── resource.h │ ├── resource.rc │ └── stdafx.h ├── nsisplugin/ │ ├── CloseIEWindows.c │ ├── DialogInit.c │ ├── EnableMicrosoftUpdate.c │ ├── Exec.c │ ├── IsActivated.c │ ├── IsAdmin.c │ ├── IsMultiCPU.c │ ├── IsServerCore.c │ ├── Makefile │ ├── MessageForHresult.c │ ├── NeedsRootsUpdate.c │ ├── RebootPage.c │ ├── TaskbarProgress.c │ ├── UpdateRoots.c │ ├── VerifyFileHash.c │ ├── WriteLog.c │ ├── main.c │ ├── main.h │ ├── resource.h │ ├── resource.rc │ ├── sha256.c │ ├── sha256.h │ └── stdafx.h ├── setup/ │ ├── ActiveX.inf │ ├── ActiveXPage.nsh │ ├── AeroWizard.nsh │ ├── Common.nsh │ ├── Constants.nsh │ ├── Download2KXP.nsh │ ├── DownloadIE.nsh │ ├── DownloadNT4.nsh │ ├── DownloadVista78.nsh │ ├── DownloadWUA.nsh │ ├── Makefile │ ├── NT4USB.nsh │ ├── PatchInstall.nsh │ ├── Patches.ini │ ├── PatchesNT4.ini │ ├── RebootPage.nsh │ ├── RunOnce.nsh │ ├── Strings.nsh │ ├── UpdateRoots.nsh │ ├── Win32.nsh │ ├── WinVer.nsh │ ├── codebase/ │ │ ├── lucontrl.ddf │ │ ├── setup.inf │ │ └── test.html │ ├── patches/ │ │ └── .gitignore │ ├── resource.c │ ├── resource.h │ ├── resource.rc │ ├── setup-nt4.nsi │ ├── setup.nsi │ └── stdafx.h └── shared/ ├── Exec.c ├── Exec.h ├── HResult.c ├── HResult.h ├── LegacyUpdate.c ├── LegacyUpdate.h ├── LoadImage.c ├── LoadImage.h ├── Log.c ├── Log.h ├── ProductInfo.c ├── ProductInfo.h ├── Registry.c ├── Registry.h ├── Startup.h ├── Trace.h ├── User.h ├── Version.h ├── VersionInfo.h ├── ViewLog.c ├── ViewLog.h ├── WMI.c ├── WMI.h ├── Wow64.c ├── Wow64.h └── stdafx.h ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ # http://editorconfig.org root = true [*] indent_style = tab tab_width = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true ================================================ FILE: .gitattributes ================================================ * text=auto eol=lf *.sln eol=crlf *.vcxproj eol=crlf ================================================ FILE: .github/FUNDING.yml ================================================ github: kirb ko_fi: adamdemasi patreon: adamdemasi custom: ["https://paypal.me/HashbangProductions"] ================================================ FILE: .github/ISSUE_TEMPLATE/01-bug_report.yml ================================================ name: "Bug Report" description: "Report something that isn’t working as expected" labels: ["Bug", "Needs triage"] body: - type: markdown attributes: value: | Thank you for taking the time to report a bug! To help us resolve the problem quickly, please fill out the details below as best as you can. - type: markdown attributes: value: | --- ### Describe the issue - type: textarea id: actual attributes: label: "What is happening?" description: "Describe the issue you’re experiencing. If you have screenshots or log files, please paste them here." validations: required: true - type: textarea id: expected attributes: label: "What should have happened?" description: "What did you expect to happen instead?" validations: required: true - type: textarea id: steps attributes: label: "Steps to reproduce the issue" description: "Write the step-by-step instructions that lead to the bug happening." placeholder: | 1. … 2. … 3. … validations: required: true - type: markdown attributes: value: | --- ### Provide as many of these details as possible - type: dropdown id: os attributes: label: "Operating System" options: - Not applicable - Windows NT 4.0 - Windows 2000 - Windows XP - Windows Server 2003 - Windows Vista/Windows Server 2008 - Windows 7/Windows Server 2008 R2 - Windows 8/Windows Server 2012 - Windows 8.1/Windows Server 2012 R2 - Windows 10 - Windows 11 validations: required: true - type: dropdown id: sp attributes: label: "Service Pack" options: - Not applicable - Don’t know - RTM - SP1 - SP2 - SP3 - SP4 - SP5 - SP6 validations: required: true - type: dropdown id: arch attributes: label: "Architecture" description: "Which architecture edition of Windows are you using?" options: - Not applicable - Don’t know - 32-bit (x86) - 64-bit (x64) - Itanium (ia64) validations: required: true - type: dropdown id: vm attributes: label: "Virtual Machine" description: "Are you running Windows in a virtual machine or emulator?" options: - Not applicable - "No" - Yes, 86Box - Yes, Hyper-V - Yes, Parallels - Yes, QEMU/KVM - Yes, UTM - Yes, VirtualBox - Yes, Virtual PC - Yes, VMware - Yes, something else validations: required: true - type: dropdown id: hardware attributes: label: "Hardware" description: "Select the option that best describes the hardware you are using." options: - Not applicable - Don’t know - 386 - 486 - Intel Pentium - AMD K5/K6 - Cyrix 5x86/6x86 - Intel P6 (Pentium Pro/II/III) - AMD K7 (e.g. Athlon XP) - Cyrix III - Intel Pentium 4 - Intel Pentium M - AMD K8 (e.g. Athlon 64) - Intel Pentium D - Intel Core - Intel Core 2 - AMD K10 (e.g. Phenom) - Intel Core i - AMD Bulldozer - AMD Ryzen/Threadripper - Other (please describe below) validations: required: true - type: dropdown id: software attributes: label: "Software Installed" description: "Select all other Microsoft software installed on your system. If any others are installed that aren’t listed here, please describe them below." multiple: true options: - Not applicable - Office XP (2002) - Office 2003 - Office 2007 - Office 2010 - Office 2013 or later - Visual Studio .NET 2002 - Visual Studio .NET 2003 - Visual Studio 2005 - Visual Studio 2008 - Visual Studio 2010 - Visual Studio 2012 or later - SQL Server 2000 - SQL Server 2005 - SQL Server 2008 - SQL Server 2012 or later - Exchange Server 2000 - Exchange Server 2003 - Exchange Server 2007 - Exchange Server 2010 or later - type: markdown attributes: value: | --- ### Any other details that might be relevant? - type: textarea id: notes attributes: label: "Other details" description: "You can list hardware specifications here if you know them." validations: required: true - type: markdown attributes: value: | --- ### Before you submit… Please check [Legacy Update Help](https://legacyupdate.net/help/) to learn more about common issues, and [search for issues](https://github.com/LegacyUpdate/LegacyUpdate/issues) that could be similar to this one. It helps us to keep this project organised. Thanks! - type: checkboxes id: terms attributes: label: Confirmation options: - label: "I have checked that this issue hasn’t already been reported" required: true ================================================ FILE: .github/ISSUE_TEMPLATE/02-update_issue.yml ================================================ name: "Update Issue" description: "Report a problem with an update" labels: ["Needs triage"] body: - type: markdown attributes: value: | Thank you for taking the time to report a problem! To help us resolve the problem quickly, please fill out the details below as best as you can. - type: input id: update attributes: label: "Update" description: "Provide the name or KB number of the update(s) you’re reporting an issue with." validations: required: true - type: markdown attributes: value: | --- ### Describe the issue If applicable, please include the error code from Windows Update: * From the Legacy Update website: Click “Update History”, then click ![Error and question mark icon](https://legacyupdate.net/windowsupdate/v6/shared/images/status_failed.gif) next to the failed update. * From the Windows Update control panel: Click “View update history”, then double-click the failed update. - type: textarea id: actual attributes: label: "What is happening?" description: "Describe the issue you’re experiencing. If you have screenshots or log files, please paste them here." validations: required: true - type: textarea id: expected attributes: label: "What should have happened?" description: "What did you expect to happen instead?" validations: required: true - type: textarea id: steps attributes: label: "Steps to reproduce the issue" description: "Write the step-by-step instructions that lead to the bug happening." placeholder: | 1. … 2. … 3. … validations: required: true - type: markdown attributes: value: | --- ### Provide as many of these details as possible - type: dropdown id: os attributes: label: "Operating System" options: - Not applicable - Windows NT 4.0 - Windows 2000 - Windows XP - Windows Server 2003 - Windows Vista/Windows Server 2008 - Windows 7/Windows Server 2008 R2 - Windows 8/Windows Server 2012 - Windows 8.1/Windows Server 2012 R2 - Windows 10 - Windows 11 validations: required: true - type: dropdown id: sp attributes: label: "Service Pack" options: - Not applicable - Don’t know - RTM - SP1 - SP2 - SP3 - SP4 - SP5 - SP6 validations: required: true - type: dropdown id: arch attributes: label: "Architecture" description: "Which architecture edition of Windows are you using?" options: - Not applicable - Don’t know - 32-bit (x86) - 64-bit (x64) - Itanium (ia64) validations: required: true - type: dropdown id: vm attributes: label: "Virtual Machine" description: "Are you running Windows in a virtual machine or emulator?" options: - Not applicable - "No" - Yes, 86Box - Yes, Hyper-V - Yes, Parallels - Yes, QEMU/KVM - Yes, UTM - Yes, VirtualBox - Yes, Virtual PC - Yes, VMware - Yes, something else validations: required: true - type: dropdown id: hardware attributes: label: "Hardware" description: "Select the option that best describes the hardware you are using." options: - Not applicable - Don’t know - 386 - 486 - Intel Pentium - AMD K5/K6 - Cyrix 5x86/6x86 - Intel P6 (Pentium Pro/II/III) - AMD K7 (e.g. Athlon XP) - Cyrix III - Intel Pentium 4 - Intel Pentium M - AMD K8 (e.g. Athlon 64) - Intel Pentium D - Intel Core - Intel Core 2 - AMD K10 (e.g. Phenom) - Intel Core i - AMD Bulldozer - AMD Ryzen/Threadripper - Other (please describe below) validations: required: true - type: dropdown id: software attributes: label: "Software" description: "Select the software this issue is relevant to. If it isn’t listed here, please describe below." options: - Not applicable - Office XP (2002) - Office 2003 - Office 2007 - Office 2010 - Office 2013 or later - Visual Studio .NET 2002 - Visual Studio .NET 2003 - Visual Studio 2005 - Visual Studio 2008 - Visual Studio 2010 - Visual Studio 2012 or later - SQL Server 2000 - SQL Server 2005 - SQL Server 2008 - SQL Server 2012 or later - Exchange Server 2000 - Exchange Server 2003 - Exchange Server 2007 - Exchange Server 2010 or later - Other validations: required: true - type: dropdown id: software-arch attributes: label: "Software Architecture" description: "Which architecture edition of the software are you using?" options: - Not applicable - Don’t know - 32-bit (x86) - 64-bit (x64) - Itanium (ia64) validations: required: true - type: markdown attributes: value: | --- ### Any other details that might be relevant? - type: textarea id: notes attributes: label: "Other details" description: "You can list hardware specifications here if you know them." validations: required: true - type: markdown attributes: value: | --- ### Before you submit… Please check [Legacy Update Help](https://legacyupdate.net/help/) to learn more about common issues, and [search for issues](https://github.com/LegacyUpdate/LegacyUpdate/issues) that could be similar to this one. It helps us to keep this project organised. Thanks! - type: checkboxes id: terms attributes: label: Confirmation options: - label: "I have checked that this issue hasn’t already been reported" required: true ================================================ FILE: .github/ISSUE_TEMPLATE/03-download_center_issue.yml ================================================ name: "Download Center Issue" description: "Report a problem with the Microsoft Download Center Archive" labels: ["Component: Download Center", "Needs triage"] body: - type: markdown attributes: value: | Thank you for taking the time to report a bug! To help us resolve the problem quickly, please fill out the details below as best as you can. - type: input id: url attributes: label: "URL" description: "Paste the link to the download page you’re reporting an issue with." validations: required: true - type: dropdown id: type attributes: label: "Type of Issue" options: - File missing (not shown on the page) - File deleted (404 Not Found) - File corrupted (error when downloading) - Incorrect metadata - Other validations: required: true - type: textarea id: notes attributes: label: "Details" description: "Include more information about the issue." validations: required: true - type: markdown attributes: value: | --- ### Before you submit… Please check [Legacy Update Help](https://legacyupdate.net/help/) to learn more about common issues, and [search for issues](https://github.com/LegacyUpdate/LegacyUpdate/issues) that could be similar to this one. It helps us to keep this project organised. Thanks! - type: checkboxes id: terms attributes: label: Confirmation options: - label: "I have checked that this issue hasn’t already been reported" required: true ================================================ FILE: .github/ISSUE_TEMPLATE/04-feature_suggestion.yml ================================================ name: "Feature Suggestion" description: "Suggest a feature to be added to Legacy Update" labels: ["Enhancement", "Needs triage"] body: - type: markdown attributes: value: | Thank you for taking the time to suggest a feature! To help us understand your idea better, please fill out the details below as best as you can. - type: dropdown id: component attributes: label: "Component" description: "Which part of Legacy Update does this apply to?" options: - ActiveX control - Download Center Archive - Update server (WSUS) - Update website - Setup - Other validations: required: true - type: textarea id: notes attributes: label: "Details" description: "Describe the feature you would like to see. How will it work? Does it fix an issue?" validations: required: true - type: markdown attributes: value: | --- ### Before you submit… Please check [Legacy Update Help](https://legacyupdate.net/help/) to learn more about common issues, and [search for issues](https://github.com/LegacyUpdate/LegacyUpdate/issues) that could be similar to this one. It helps us to keep this project organised. Thanks! - type: checkboxes id: terms attributes: label: Confirmation options: - label: "I have checked that this issue hasn’t already been reported" required: true ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Legacy Update Help url: https://legacyupdate.net/help/ about: Many common issues are already answered on our website. - name: Get help on GitHub Discussions url: https://github.com/orgs/LegacyUpdate/discussions about: If this isn’t a bug with Legacy Update, you can post in our community discussion forum. - name: Get help on Discord url: https://legacyupdate.net/discord about: If you prefer Discord, you can create a support thread in our Discord community. ================================================ FILE: .github/workflows/build-nt4.yml ================================================ name: Build Legacy Update NT on: push: branches: [] pull_request: branches: [] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Set up run: | sudo apt-get update -q sudo apt-get install -qy curl make mingw-w64-x86-64-dev nsis p7zip-full upx-ucl unzip - name: MinGW toolchain cache id: mingw-cache uses: actions/cache@v5 with: path: | /opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-i686 /opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-x86_64 key: gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0 - name: Install MinGW toolchain if: steps.mingw-cache.outputs.cache-hit != 'true' run: | curl -fsSL https://linuxfromscratch.org/~renodr/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-i686.tar.xz -o /tmp/mingw32.tar.xz curl -fsSL https://linuxfromscratch.org/~renodr/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-x86_64.tar.xz -o /tmp/mingw64.tar.xz sudo tar -xf /tmp/mingw32.tar.xz -C /opt sudo tar -xf /tmp/mingw64.tar.xz -C /opt rm /tmp/mingw{32,64}.tar.xz - name: NSIS cache id: nsis-cache uses: actions/cache@v5 with: path: /opt/nsis-3.11 key: nsis-3.11 - name: Install custom NSIS package if: steps.nsis-cache.outputs.cache-hit != 'true' run: | curl -fsSL https://linuxfromscratch.org/~renodr/nsis-3.11-lfsci-2.tar.xz -o /tmp/nsis-3.11.tar.xz sudo tar -xf /tmp/nsis-3.11.tar.xz -C /opt rm /tmp/nsis-3.11.tar.xz - name: Patches cache id: patches-cache uses: actions/cache@v4 with: path: setup/patches/ key: nt4-patches-${{hashFiles('setup/patches/**')}} - name: Download patches if: steps.patches-cache.outputs.cache-hit != 'true' run: | ./build/get-nt4-patches.sh - name: Build id: build run: | export PATH=/opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-i686/bin:$PATH export PATH=/opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-x86_64/bin:$PATH export PATH=/opt/nsis-3.11/bin:$PATH make -j$(nproc) CI=1 DEBUG=0 nt4 - name: Upload Build Artifact uses: actions/upload-artifact@v7 with: path: | setup/LegacyUpdateNT-*.exe ================================================ FILE: .github/workflows/build.yml ================================================ name: Build Legacy Update on: push: branches: [] pull_request: branches: [] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 - name: Set up run: | sudo apt-get update -q sudo apt-get install -qy --no-install-recommends curl libwine-dev make mingw-w64-tools mingw-w64-x86-64-dev nsis p7zip-full upx-ucl unzip - name: MinGW toolchain cache id: mingw-cache uses: actions/cache@v5 with: path: | /opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-i686 /opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-x86_64 key: gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0 - name: Install MinGW toolchain if: steps.mingw-cache.outputs.cache-hit != 'true' run: | curl -fsSL https://linuxfromscratch.org/~renodr/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-i686.tar.xz -o /tmp/mingw32.tar.xz curl -fsSL https://linuxfromscratch.org/~renodr/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-x86_64.tar.xz -o /tmp/mingw64.tar.xz sudo tar -xf /tmp/mingw32.tar.xz -C /opt sudo tar -xf /tmp/mingw64.tar.xz -C /opt rm /tmp/mingw{32,64}.tar.xz - name: NSIS cache id: nsis-cache uses: actions/cache@v5 with: path: /opt/nsis-3.11 key: nsis-3.11 - name: Install custom NSIS package if: steps.nsis-cache.outputs.cache-hit != 'true' run: | curl -fsSL https://linuxfromscratch.org/~renodr/nsis-3.11-lfsci-2.tar.xz -o /tmp/nsis-3.11.tar.xz sudo tar -xf /tmp/nsis-3.11.tar.xz -C /opt rm /tmp/nsis-3.11.tar.xz - name: Build id: build run: | export PATH=/opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-i686/bin:$PATH export PATH=/opt/gcc-15.2-20260228-binutils-2.46.0-mingw-v13.0.0-x86_64/bin:$PATH export PATH=/opt/nsis-3.11/bin:$PATH make -j$(nproc) CI=1 DEBUG=0 - name: Upload Build Artifact uses: actions/upload-artifact@v7 with: path: | setup/LegacyUpdate-*.exe ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates *.userprefs # Build results Debug/ Debug-VC08/ Debug-VC17/ Release/ *.exe *.dll !setup/x86-unicode/*.dll setup/x86-unicode/LegacyUpdateNSIS.dll obj/ *_layout.inf # Visual Studio 2015/2017 cache/options directory .vs/ # Visual Studio 2017 auto generated files Generated\ Files/ # Files built by Visual Studio *_i.c *_p.c *_i.h *idl.h *.i *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.tlog *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # NuGet Packages *.nupkg # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # Windows Installer files from build outputs *.cab *.msi *.msix *.msm *.msp ================================================ FILE: .idea/.idea.LegacyUpdate/.idea/.gitignore ================================================ # Default ignored files /shelf/ /workspace.xml # Rider ignored files /.idea.LegacyUpdate.iml /modules.xml /contentModel.xml /projectSettingsUpdater.xml # Editor-based HTTP Client requests /httpRequests/ # Datasource local storage ignored files /dataSources/ /dataSources.local.xml ================================================ FILE: .idea/.idea.LegacyUpdate/.idea/discord.xml ================================================ ================================================ FILE: .idea/.idea.LegacyUpdate/.idea/indexLayout.xml ================================================ . ================================================ FILE: .idea/.idea.LegacyUpdate/.idea/vcs.xml ================================================ ================================================ FILE: .vscode/c_cpp_properties.json ================================================ { "configurations": [ { "name": "MinGW", "includePath": [ "${workspaceFolder}/include", "${workspaceFolder}/shared" ], "compilerPath": "/usr/bin/i686-w64-mingw32-g++", "cStandard": "c17", "cppStandard": "c++11", "intelliSenseMode": "windows-gcc-x86", "compilerArgs": [ "-mwindows", "-municode", "-fPIE", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-fno-exceptions", "-Wall", "-Wextra", "-Wpedantic", "-Wno-unused-parameter", "-Wno-unused-variable", "-Wno-unknown-pragmas", "-Wno-cast-function-type", "-Wno-missing-field-initializers", "-Iobj", "-include stdafx.h" ], "defines": [ "UNICODE", "_UNICODE" ] } ], "version": 4 } ================================================ FILE: .vscode/settings.json ================================================ { "files.associations": { "*.rc": "cpp", "*.idl": "cpp" } } ================================================ FILE: LICENSE.md ================================================ 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. ================================================ FILE: LegacyUpdate/ClassFactory.cpp ================================================ #include "ClassFactory.h" #include "LegacyUpdate_i.h" #include "LegacyUpdateCtrl.h" #include "ElevationHelper.h" #include "ProgressBarControl.h" #include "dllmain.h" #include STDMETHODIMP CClassFactory::Create(IUnknown *pUnkOuter, REFIID riid, void **ppv) { if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } CClassFactory *pThis = (CClassFactory *)CoTaskMemAlloc(sizeof(CClassFactory)); if (pThis == NULL) { return E_OUTOFMEMORY; } new(pThis) CClassFactory(); HRESULT hr = pThis->QueryInterface(riid, ppv); CHECK_HR_OR_RETURN(L"QueryInterface"); pThis->Release(); return hr; } CClassFactory::~CClassFactory(void) { } STDMETHODIMP CClassFactory::QueryInterface(REFIID riid, void **ppvObject) { if (ppvObject == NULL) { return E_POINTER; } *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) { *ppvObject = this; AddRef(); return S_OK; } return E_NOINTERFACE; } STDMETHODIMP_(ULONG) CClassFactory::AddRef(void) { return InterlockedIncrement(&m_refCount); } STDMETHODIMP_(ULONG) CClassFactory::Release(void) { ULONG count = InterlockedDecrement(&m_refCount); if (count == 0) { this->~CClassFactory(); CoTaskMemFree(this); } return count; } STDMETHODIMP CClassFactory::CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject) { return createFunc(pUnkOuter, riid, ppvObject); } STDMETHODIMP CClassFactory::LockServer(BOOL fLock) { if (fLock) { InterlockedIncrement(&g_serverLocks); } else { InterlockedDecrement(&g_serverLocks); } return S_OK; } ================================================ FILE: LegacyUpdate/ClassFactory.h ================================================ #pragma once #include "com.h" STDMETHODIMP CreateClassFactory(IUnknown *pUnkOuter, REFIID riid, void **ppv); class DECLSPEC_NOVTABLE CClassFactory : public IClassFactory { public: CClassFactory() : m_refCount(1), createFunc(NULL), clsid(NULL) {} virtual ~CClassFactory(); static STDMETHODIMP Create(IUnknown *pUnkOuter, REFIID riid, void **ppv); private: LONG m_refCount; public: STDMETHODIMP (*createFunc)(IUnknown *pUnkOuter, REFIID riid, void **ppv); const GUID *clsid; // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IClassFactory STDMETHODIMP CreateInstance(IUnknown *pUnkOuter, REFIID riid, void **ppvObject); STDMETHODIMP LockServer(BOOL fLock); }; ================================================ FILE: LegacyUpdate/Compat.cpp ================================================ #include "Compat.h" #include #include #include "resource.h" #include "ProductInfo.h" typedef BOOL (WINAPI *_SetProcessDpiAwarenessContext)(DPI_AWARENESS_CONTEXT); typedef HRESULT (WINAPI *_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS); typedef void (WINAPI *_SetProcessDPIAware)(); typedef HANDLE (WINAPI *_CreateActCtxW)(const ACTCTX *); typedef BOOL (WINAPI *_ActivateActCtx)(HANDLE, ULONG_PTR *); typedef BOOL (WINAPI *_DeactivateActCtx)(DWORD, ULONG_PTR); typedef void (WINAPI *_ReleaseActCtx)(HANDLE); typedef BOOL (WINAPI *_GetCurrentActCtx)(HANDLE *); static BOOL actCtxLoaded = FALSE; static _CreateActCtxW $CreateActCtx; static _ActivateActCtx $ActivateActCtx; static _DeactivateActCtx $DeactivateActCtx; static _ReleaseActCtx $ReleaseActCtx; static _GetCurrentActCtx $GetCurrentActCtx; static BOOL comctlLoaded = FALSE; static HMODULE hComctl32 = NULL; void BecomeDPIAware(void) { // Make the process DPI-aware... hopefully // Windows 10 1703+ per-monitor v2 _SetProcessDpiAwarenessContext $SetProcessDpiAwarenessContext = (_SetProcessDpiAwarenessContext)GetProcAddress(LoadLibrary(L"user32.dll"), "SetProcessDpiAwarenessContext"); if ($SetProcessDpiAwarenessContext) { $SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); return; } // Windows 8.1 - 10 1607 per-monitor v1 _SetProcessDpiAwareness $SetProcessDpiAwareness = (_SetProcessDpiAwareness)GetProcAddress(LoadLibrary(L"shcore.dll"), "SetProcessDpiAwareness"); if ($SetProcessDpiAwareness) { $SetProcessDpiAwareness(PROCESS_PER_MONITOR_DPI_AWARE); return; } // Windows Vista - 8 _SetProcessDPIAware $SetProcessDPIAware = (_SetProcessDPIAware)GetProcAddress(LoadLibrary(L"user32.dll"), "SetProcessDPIAware"); if ($SetProcessDPIAware) { $SetProcessDPIAware(); } } // Handling for SxS contexts (mainly for comctl 6.0) void IsolationAwareStart(ULONG_PTR *cookie) { *cookie = 0; if (!actCtxLoaded) { actCtxLoaded = TRUE; HMODULE kernel32 = GetModuleHandle(L"kernel32.dll"); $CreateActCtx = (_CreateActCtxW)GetProcAddress(kernel32, "CreateActCtxW"); $ActivateActCtx = (_ActivateActCtx)GetProcAddress(kernel32, "ActivateActCtx"); $DeactivateActCtx = (_DeactivateActCtx)GetProcAddress(kernel32, "DeactivateActCtx"); $ReleaseActCtx = (_ReleaseActCtx)GetProcAddress(kernel32, "ReleaseActCtx"); $GetCurrentActCtx = (_GetCurrentActCtx)GetProcAddress(kernel32, "GetCurrentActCtx"); } if (!$CreateActCtx || !$ActivateActCtx || !$ReleaseActCtx) { return; } // Borrowing the manifest from shell32.dll WCHAR shell32[MAX_PATH]; GetModuleFileName(GetModuleHandle(L"shell32.dll"), shell32, ARRAYSIZE(shell32)); ACTCTX actCtx = {0}; actCtx.cbSize = sizeof(actCtx); actCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID; actCtx.lpSource = shell32; actCtx.lpResourceName = MAKEINTRESOURCE(124); HANDLE hActCtx = $CreateActCtx(&actCtx); if (hActCtx != INVALID_HANDLE_VALUE) { if (!$ActivateActCtx(hActCtx, cookie)) { $ReleaseActCtx(hActCtx); hActCtx = INVALID_HANDLE_VALUE; } } } void IsolationAwareEnd(ULONG_PTR *cookie) { if (!$DeactivateActCtx || !$GetCurrentActCtx) { return; } if (*cookie != 0) { HANDLE hActCtx = INVALID_HANDLE_VALUE; if ($GetCurrentActCtx(&hActCtx) && hActCtx != INVALID_HANDLE_VALUE) { $DeactivateActCtx(0, *cookie); $ReleaseActCtx(hActCtx); } *cookie = 0; } } ================================================ FILE: LegacyUpdate/Compat.h ================================================ #pragma once void BecomeDPIAware(); void IsolationAwareStart(ULONG_PTR *cookie); void IsolationAwareEnd(ULONG_PTR *cookie); ================================================ FILE: LegacyUpdate/ElevationHelper.cpp ================================================ // ElevationHelper.cpp : Implementation of CElevationHelper #include "ElevationHelper.h" #include "Compat.h" #include "HResult.h" #include "LegacyUpdate.h" #include "NGen.h" #include "Registry.h" #include "Utils.h" #include "VersionInfo.h" #include #include #include "IUpdateInstaller4.h" const WCHAR *permittedProgIDs[] = { L"Microsoft.Update." }; DEFINE_UUIDOF(CElevationHelper, CLSID_ElevationHelper); BOOL ProgIDIsPermitted(PWSTR progID) { if (progID == NULL) { return FALSE; } for (DWORD i = 0; i < ARRAYSIZE(permittedProgIDs); i++) { if (wcsncmp(progID, permittedProgIDs[i], wcslen(permittedProgIDs[i])) == 0) { return TRUE; } } return FALSE; } STDMETHODIMP CoCreateInstanceAsAdmin(HWND hwnd, REFCLSID rclsid, REFIID riid, void **ppv) { WCHAR clsidString[39]; StringFromGUID2(rclsid, clsidString, ARRAYSIZE(clsidString)); WCHAR monikerName[67]; wsprintf(monikerName, L"Elevation:Administrator!new:%ls", clsidString); BIND_OPTS3 bindOpts; ZeroMemory(&bindOpts, sizeof(bindOpts)); bindOpts.cbStruct = sizeof(bindOpts); bindOpts.hwnd = hwnd; bindOpts.dwClassContext = CLSCTX_LOCAL_SERVER; return CoGetObject(monikerName, (BIND_OPTS *)&bindOpts, riid, ppv); } STDMETHODIMP CElevationHelper::Create(IUnknown *pUnkOuter, REFIID riid, void **ppv) { if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } CElevationHelper *pThis = (CElevationHelper *)CoTaskMemAlloc(sizeof(CElevationHelper)); if (pThis == NULL) { return E_OUTOFMEMORY; } new(pThis) CElevationHelper(); // TODO: Only do this if we're in dllhost BecomeDPIAware(); HRESULT hr = pThis->QueryInterface(riid, ppv); CHECK_HR_OR_RETURN(L"QueryInterface"); pThis->Release(); return hr; } CElevationHelper::~CElevationHelper(void) { } STDMETHODIMP CElevationHelper::UpdateRegistry(BOOL bRegister) { if (bRegister) { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"LegacyUpdate.ElevationHelper", NULL, REG_SZ, (LPVOID)L"Legacy Update Elevation Helper"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ElevationHelper\\CurVer", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.ElevationHelper.1"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ElevationHelper.1", NULL, REG_SZ, (LPVOID)L"Legacy Update Elevation Helper"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ElevationHelper.1\\CLSID", NULL, REG_SZ, (LPVOID)L"%CLSID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", NULL, REG_SZ, (LPVOID)L"Legacy Update Elevation Helper"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", L"AppID", REG_SZ, (LPVOID)L"%APPID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", L"LocalizedString", REG_SZ, (LPVOID)L"@%MODULE%,-1"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\ProgID", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.ElevationHelper.1"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\VersionIndependentProgID", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.ElevationHelper"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\InprocServer32", NULL, REG_SZ, (LPVOID)L"%MODULE%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\InprocServer32", L"ThreadingModel", REG_SZ, (LPVOID)L"Apartment"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\TypeLib", NULL, REG_SZ, (LPVOID)L"%LIBID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Version", NULL, REG_SZ, (LPVOID)L"1.0"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Elevation", L"Enabled", REG_DWORD, (LPVOID)1}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Elevation", L"IconReference", REG_SZ, (LPVOID)L"@%INSTALLPATH%\\LegacyUpdate.exe,-100"}, {} }; return SetRegistryEntries(entries); } else { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"LegacyUpdate.ElevationHelper", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ElevationHelper.1", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", NULL, 0, DELETE_KEY}, {} }; return SetRegistryEntries(entries); } } #pragma mark - IUnknown STDMETHODIMP CElevationHelper::QueryInterface(REFIID riid, void **ppvObject) { if (ppvObject == NULL) { return E_POINTER; } *ppvObject = NULL; return IDispatchImpl::QueryInterface(riid, ppvObject); } STDMETHODIMP_(ULONG) CElevationHelper::AddRef(void) { return InterlockedIncrement(&m_refCount); } STDMETHODIMP_(ULONG) CElevationHelper::Release(void) { ULONG count = InterlockedDecrement(&m_refCount); if (count == 0) { this->~CElevationHelper(); CoTaskMemFree(this); } return count; } #pragma mark - IElevationHelper STDMETHODIMP CElevationHelper::CreateObject(BSTR progID, IDispatch **retval) { if (progID == NULL || retval == NULL) { return E_INVALIDARG; } *retval = NULL; HRESULT hr = S_OK; CComPtr object; CLSID clsid; if (!ProgIDIsPermitted(progID)) { return E_ACCESSDENIED; } hr = CLSIDFromProgID(progID, &clsid); CHECK_HR_OR_RETURN(L"CLSIDFromProgID"); hr = object.CoCreateInstance(clsid, IID_IDispatch, NULL, CLSCTX_INPROC_SERVER); CHECK_HR_OR_RETURN(L"CoCreateInstance"); *retval = object.Detach(); return hr; } STDMETHODIMP CElevationHelper::SetBrowserHwnd(IUpdateInstaller *installer, HWND hwnd) { if (installer == NULL) { return E_INVALIDARG; } CComPtr updateInstaller; HRESULT hr = installer->QueryInterface(IID_IUpdateInstaller, (void **)&updateInstaller); CHECK_HR_OR_RETURN(L"QueryInterface IID_IUpdateInstaller"); hr = updateInstaller->put_ParentHwnd(hwnd); CHECK_HR_OR_RETURN(L"put_ParentHwnd"); return S_OK; } STDMETHODIMP CElevationHelper::Reboot(void) { // Calling Commit() is recommended on Windows 10, to ensure feature updates are properly prepared prior to the reboot. // If IUpdateInstaller4 doesn't exist, we can skip this. CComPtr installer; HRESULT hr = installer.CoCreateInstance(CLSID_UpdateInstaller, NULL, CLSCTX_INPROC_SERVER); if (SUCCEEDED(hr) && hr != REGDB_E_CLASSNOTREG) { hr = installer->Commit(0); CHECK_HR_OR_GOTO_END(L"Commit"); } end: return ::Reboot(); } STDMETHODIMP CElevationHelper::BeforeUpdate(void) { return PauseResumeNGenQueue(FALSE); } STDMETHODIMP CElevationHelper::AfterUpdate(void) { return PauseResumeNGenQueue(TRUE); } ================================================ FILE: LegacyUpdate/ElevationHelper.h ================================================ #pragma once // ElevationHelper.h : Declaration of the CElevationHelper class. #include "resource.h" #include "com.h" #include "LegacyUpdate_i.h" BOOL ProgIDIsPermitted(PWSTR progID); STDMETHODIMP CoCreateInstanceAsAdmin(HWND hwnd, REFCLSID rclsid, REFIID riid, void **ppv); class DECLSPEC_NOVTABLE CElevationHelper : public IDispatchImpl { public: CElevationHelper() : m_refCount(1) {} virtual ~CElevationHelper(); static STDMETHODIMP Create(IUnknown *pUnkOuter, REFIID riid, void **ppv); static STDMETHODIMP UpdateRegistry(BOOL bRegister); private: LONG m_refCount; public: // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IElevationHelper STDMETHODIMP CreateObject(BSTR progID, IDispatch **retval); STDMETHODIMP SetBrowserHwnd(IUpdateInstaller *installer, HWND hwnd); STDMETHODIMP Reboot(); STDMETHODIMP BeforeUpdate(); STDMETHODIMP AfterUpdate(); }; ================================================ FILE: LegacyUpdate/IUpdateInstaller4.h ================================================ #pragma once #include // Copied from wuapi.h in Windows SDK 10.0.19041.0 #ifndef __IUpdateInstaller3_FWD_DEFINED__ #define __IUpdateInstaller3_FWD_DEFINED__ typedef interface IUpdateInstaller3 IUpdateInstaller3; #endif /* __IUpdateInstaller3_FWD_DEFINED__ */ #ifndef __IUpdateInstaller4_FWD_DEFINED__ #define __IUpdateInstaller4_FWD_DEFINED__ typedef interface IUpdateInstaller4 IUpdateInstaller4; #endif /* __IUpdateInstaller4_FWD_DEFINED__ */ // {16d11c35-099a-48d0-8338-5fae64047f8e} DEFINE_GUID(IID_IUpdateInstaller3,0x16d11c35,0x099a,0x48d0,0x83,0x38,0x5f,0xae,0x64,0x04,0x7f,0x8e); // {EF8208EA-2304-492D-9109-23813B0958E1} DEFINE_GUID(IID_IUpdateInstaller4, 0xef8208ea, 0x2304, 0x492d, 0x91, 0x9, 0x23, 0x81, 0x3b, 0x9, 0x58, 0xe1); #ifndef __IUpdateInstaller3_INTERFACE_DEFINED__ #define __IUpdateInstaller3_INTERFACE_DEFINED__ /* interface IUpdateInstaller3 */ /* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ EXTERN_C const IID IID_IUpdateInstaller3; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("16d11c35-099a-48d0-8338-5fae64047f8e") IUpdateInstaller3 : public IUpdateInstaller2 { public: virtual /* [helpstring][propget][id] */ HRESULT STDMETHODCALLTYPE get_AttemptCloseAppsIfNecessary( /* [retval][out] */ __RPC__out VARIANT_BOOL *retval) = 0; virtual /* [helpstring][propput][id] */ HRESULT STDMETHODCALLTYPE put_AttemptCloseAppsIfNecessary( /* [in] */ VARIANT_BOOL value) = 0; }; #else /* C style interface */ typedef struct IUpdateInstaller3Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( __RPC__in IUpdateInstaller3 * This, /* [in] */ __RPC__in REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( __RPC__in IUpdateInstaller3 * This); ULONG ( STDMETHODCALLTYPE *Release )( __RPC__in IUpdateInstaller3 * This); HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( __RPC__in IUpdateInstaller3 * This, /* [out] */ __RPC__out UINT *pctinfo); HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( __RPC__in IUpdateInstaller3 * This, /* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( __RPC__in IUpdateInstaller3 * 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 )( IUpdateInstaller3 * This, /* [annotation][in] */ _In_ DISPID dispIdMember, /* [annotation][in] */ _In_ REFIID riid, /* [annotation][in] */ _In_ LCID lcid, /* [annotation][in] */ _In_ WORD wFlags, /* [annotation][out][in] */ _In_ DISPPARAMS *pDispParams, /* [annotation][out] */ _Out_opt_ VARIANT *pVarResult, /* [annotation][out] */ _Out_opt_ EXCEPINFO *pExcepInfo, /* [annotation][out] */ _Out_opt_ UINT *puArgErr); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( __RPC__in IUpdateInstaller3 * This, /* [in] */ __RPC__in BSTR value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsForced )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsForced )( __RPC__in IUpdateInstaller3 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentHwnd )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__deref_out_opt HWND *retval); /* [helpstring][restricted][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentHwnd )( __RPC__in IUpdateInstaller3 * This, /* [unique][in] */ __RPC__in_opt HWND value); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentWindow )( __RPC__in IUpdateInstaller3 * This, /* [unique][in] */ __RPC__in_opt IUnknown *value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentWindow )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Updates )( __RPC__in IUpdateInstaller3 * This, /* [in] */ __RPC__in_opt IUpdateCollection *value); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginInstall )( __RPC__in IUpdateInstaller3 * 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 IUpdateInstaller3 * 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 IUpdateInstaller3 * This, /* [in] */ __RPC__in_opt IInstallationJob *value, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndUninstall )( __RPC__in IUpdateInstaller3 * This, /* [in] */ __RPC__in_opt IInstallationJob *value, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Install )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RunWizard )( __RPC__in IUpdateInstaller3 * 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 IUpdateInstaller3 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Uninstall )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowSourcePrompts )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowSourcePrompts )( __RPC__in IUpdateInstaller3 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequiredBeforeInstallation )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ForceQuiet )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ForceQuiet )( __RPC__in IUpdateInstaller3 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AttemptCloseAppsIfNecessary )( __RPC__in IUpdateInstaller3 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AttemptCloseAppsIfNecessary )( __RPC__in IUpdateInstaller3 * This, /* [in] */ VARIANT_BOOL value); END_INTERFACE } IUpdateInstaller3Vtbl; interface IUpdateInstaller3 { CONST_VTBL struct IUpdateInstaller3Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IUpdateInstaller3_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define IUpdateInstaller3_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define IUpdateInstaller3_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define IUpdateInstaller3_GetTypeInfoCount(This,pctinfo) \ ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) #define IUpdateInstaller3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) #define IUpdateInstaller3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) #define IUpdateInstaller3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) #define IUpdateInstaller3_get_ClientApplicationID(This,retval) \ ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) #define IUpdateInstaller3_put_ClientApplicationID(This,value) \ ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) #define IUpdateInstaller3_get_IsForced(This,retval) \ ( (This)->lpVtbl -> get_IsForced(This,retval) ) #define IUpdateInstaller3_put_IsForced(This,value) \ ( (This)->lpVtbl -> put_IsForced(This,value) ) #define IUpdateInstaller3_get_ParentHwnd(This,retval) \ ( (This)->lpVtbl -> get_ParentHwnd(This,retval) ) #define IUpdateInstaller3_put_ParentHwnd(This,value) \ ( (This)->lpVtbl -> put_ParentHwnd(This,value) ) #define IUpdateInstaller3_put_ParentWindow(This,value) \ ( (This)->lpVtbl -> put_ParentWindow(This,value) ) #define IUpdateInstaller3_get_ParentWindow(This,retval) \ ( (This)->lpVtbl -> get_ParentWindow(This,retval) ) #define IUpdateInstaller3_get_Updates(This,retval) \ ( (This)->lpVtbl -> get_Updates(This,retval) ) #define IUpdateInstaller3_put_Updates(This,value) \ ( (This)->lpVtbl -> put_Updates(This,value) ) #define IUpdateInstaller3_BeginInstall(This,onProgressChanged,onCompleted,state,retval) \ ( (This)->lpVtbl -> BeginInstall(This,onProgressChanged,onCompleted,state,retval) ) #define IUpdateInstaller3_BeginUninstall(This,onProgressChanged,onCompleted,state,retval) \ ( (This)->lpVtbl -> BeginUninstall(This,onProgressChanged,onCompleted,state,retval) ) #define IUpdateInstaller3_EndInstall(This,value,retval) \ ( (This)->lpVtbl -> EndInstall(This,value,retval) ) #define IUpdateInstaller3_EndUninstall(This,value,retval) \ ( (This)->lpVtbl -> EndUninstall(This,value,retval) ) #define IUpdateInstaller3_Install(This,retval) \ ( (This)->lpVtbl -> Install(This,retval) ) #define IUpdateInstaller3_RunWizard(This,dialogTitle,retval) \ ( (This)->lpVtbl -> RunWizard(This,dialogTitle,retval) ) #define IUpdateInstaller3_get_IsBusy(This,retval) \ ( (This)->lpVtbl -> get_IsBusy(This,retval) ) #define IUpdateInstaller3_Uninstall(This,retval) \ ( (This)->lpVtbl -> Uninstall(This,retval) ) #define IUpdateInstaller3_get_AllowSourcePrompts(This,retval) \ ( (This)->lpVtbl -> get_AllowSourcePrompts(This,retval) ) #define IUpdateInstaller3_put_AllowSourcePrompts(This,value) \ ( (This)->lpVtbl -> put_AllowSourcePrompts(This,value) ) #define IUpdateInstaller3_get_RebootRequiredBeforeInstallation(This,retval) \ ( (This)->lpVtbl -> get_RebootRequiredBeforeInstallation(This,retval) ) #define IUpdateInstaller3_get_ForceQuiet(This,retval) \ ( (This)->lpVtbl -> get_ForceQuiet(This,retval) ) #define IUpdateInstaller3_put_ForceQuiet(This,value) \ ( (This)->lpVtbl -> put_ForceQuiet(This,value) ) #define IUpdateInstaller3_get_AttemptCloseAppsIfNecessary(This,retval) \ ( (This)->lpVtbl -> get_AttemptCloseAppsIfNecessary(This,retval) ) #define IUpdateInstaller3_put_AttemptCloseAppsIfNecessary(This,value) \ ( (This)->lpVtbl -> put_AttemptCloseAppsIfNecessary(This,value) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __IUpdateInstaller3_INTERFACE_DEFINED__ */ #ifndef __IUpdateInstaller4_INTERFACE_DEFINED__ #define __IUpdateInstaller4_INTERFACE_DEFINED__ /* interface IUpdateInstaller4 */ /* [hidden][unique][uuid][nonextensible][dual][oleautomation][object][helpstring] */ EXTERN_C const IID IID_IUpdateInstaller4; #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("EF8208EA-2304-492D-9109-23813B0958E1") IUpdateInstaller4 : public IUpdateInstaller3 { public: virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Commit( /* [in] */ DWORD dwFlags) = 0; }; #else /* C style interface */ typedef struct IUpdateInstaller4Vtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( __RPC__in IUpdateInstaller4 * This, /* [in] */ __RPC__in REFIID riid, /* [annotation][iid_is][out] */ _COM_Outptr_ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( __RPC__in IUpdateInstaller4 * This); ULONG ( STDMETHODCALLTYPE *Release )( __RPC__in IUpdateInstaller4 * This); HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )( __RPC__in IUpdateInstaller4 * This, /* [out] */ __RPC__out UINT *pctinfo); HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )( __RPC__in IUpdateInstaller4 * This, /* [in] */ UINT iTInfo, /* [in] */ LCID lcid, /* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo); HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )( __RPC__in IUpdateInstaller4 * 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 )( IUpdateInstaller4 * This, /* [annotation][in] */ _In_ DISPID dispIdMember, /* [annotation][in] */ _In_ REFIID riid, /* [annotation][in] */ _In_ LCID lcid, /* [annotation][in] */ _In_ WORD wFlags, /* [annotation][out][in] */ _In_ DISPPARAMS *pDispParams, /* [annotation][out] */ _Out_opt_ VARIANT *pVarResult, /* [annotation][out] */ _Out_opt_ EXCEPINFO *pExcepInfo, /* [annotation][out] */ _Out_opt_ UINT *puArgErr); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ClientApplicationID )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__deref_out_opt BSTR *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ClientApplicationID )( __RPC__in IUpdateInstaller4 * This, /* [in] */ __RPC__in BSTR value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_IsForced )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_IsForced )( __RPC__in IUpdateInstaller4 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][restricted][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentHwnd )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__deref_out_opt HWND *retval); /* [helpstring][restricted][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentHwnd )( __RPC__in IUpdateInstaller4 * This, /* [unique][in] */ __RPC__in_opt HWND value); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ParentWindow )( __RPC__in IUpdateInstaller4 * This, /* [unique][in] */ __RPC__in_opt IUnknown *value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ParentWindow )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__deref_out_opt IUnknown **retval); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_Updates )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__deref_out_opt IUpdateCollection **retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_Updates )( __RPC__in IUpdateInstaller4 * This, /* [in] */ __RPC__in_opt IUpdateCollection *value); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *BeginInstall )( __RPC__in IUpdateInstaller4 * 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 IUpdateInstaller4 * 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 IUpdateInstaller4 * This, /* [in] */ __RPC__in_opt IInstallationJob *value, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EndUninstall )( __RPC__in IUpdateInstaller4 * This, /* [in] */ __RPC__in_opt IInstallationJob *value, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Install )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RunWizard )( __RPC__in IUpdateInstaller4 * 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 IUpdateInstaller4 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Uninstall )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__deref_out_opt IInstallationResult **retval); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AllowSourcePrompts )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AllowSourcePrompts )( __RPC__in IUpdateInstaller4 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_RebootRequiredBeforeInstallation )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_ForceQuiet )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_ForceQuiet )( __RPC__in IUpdateInstaller4 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][propget][id] */ HRESULT ( STDMETHODCALLTYPE *get_AttemptCloseAppsIfNecessary )( __RPC__in IUpdateInstaller4 * This, /* [retval][out] */ __RPC__out VARIANT_BOOL *retval); /* [helpstring][propput][id] */ HRESULT ( STDMETHODCALLTYPE *put_AttemptCloseAppsIfNecessary )( __RPC__in IUpdateInstaller4 * This, /* [in] */ VARIANT_BOOL value); /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Commit )( __RPC__in IUpdateInstaller4 * This, /* [in] */ DWORD dwFlags); END_INTERFACE } IUpdateInstaller4Vtbl; interface IUpdateInstaller4 { CONST_VTBL struct IUpdateInstaller4Vtbl *lpVtbl; }; #ifdef COBJMACROS #define IUpdateInstaller4_QueryInterface(This,riid,ppvObject) \ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) #define IUpdateInstaller4_AddRef(This) \ ( (This)->lpVtbl -> AddRef(This) ) #define IUpdateInstaller4_Release(This) \ ( (This)->lpVtbl -> Release(This) ) #define IUpdateInstaller4_GetTypeInfoCount(This,pctinfo) \ ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) ) #define IUpdateInstaller4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) ) #define IUpdateInstaller4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) ) #define IUpdateInstaller4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) ) #define IUpdateInstaller4_get_ClientApplicationID(This,retval) \ ( (This)->lpVtbl -> get_ClientApplicationID(This,retval) ) #define IUpdateInstaller4_put_ClientApplicationID(This,value) \ ( (This)->lpVtbl -> put_ClientApplicationID(This,value) ) #define IUpdateInstaller4_get_IsForced(This,retval) \ ( (This)->lpVtbl -> get_IsForced(This,retval) ) #define IUpdateInstaller4_put_IsForced(This,value) \ ( (This)->lpVtbl -> put_IsForced(This,value) ) #define IUpdateInstaller4_get_ParentHwnd(This,retval) \ ( (This)->lpVtbl -> get_ParentHwnd(This,retval) ) #define IUpdateInstaller4_put_ParentHwnd(This,value) \ ( (This)->lpVtbl -> put_ParentHwnd(This,value) ) #define IUpdateInstaller4_put_ParentWindow(This,value) \ ( (This)->lpVtbl -> put_ParentWindow(This,value) ) #define IUpdateInstaller4_get_ParentWindow(This,retval) \ ( (This)->lpVtbl -> get_ParentWindow(This,retval) ) #define IUpdateInstaller4_get_Updates(This,retval) \ ( (This)->lpVtbl -> get_Updates(This,retval) ) #define IUpdateInstaller4_put_Updates(This,value) \ ( (This)->lpVtbl -> put_Updates(This,value) ) #define IUpdateInstaller4_BeginInstall(This,onProgressChanged,onCompleted,state,retval) \ ( (This)->lpVtbl -> BeginInstall(This,onProgressChanged,onCompleted,state,retval) ) #define IUpdateInstaller4_BeginUninstall(This,onProgressChanged,onCompleted,state,retval) \ ( (This)->lpVtbl -> BeginUninstall(This,onProgressChanged,onCompleted,state,retval) ) #define IUpdateInstaller4_EndInstall(This,value,retval) \ ( (This)->lpVtbl -> EndInstall(This,value,retval) ) #define IUpdateInstaller4_EndUninstall(This,value,retval) \ ( (This)->lpVtbl -> EndUninstall(This,value,retval) ) #define IUpdateInstaller4_Install(This,retval) \ ( (This)->lpVtbl -> Install(This,retval) ) #define IUpdateInstaller4_RunWizard(This,dialogTitle,retval) \ ( (This)->lpVtbl -> RunWizard(This,dialogTitle,retval) ) #define IUpdateInstaller4_get_IsBusy(This,retval) \ ( (This)->lpVtbl -> get_IsBusy(This,retval) ) #define IUpdateInstaller4_Uninstall(This,retval) \ ( (This)->lpVtbl -> Uninstall(This,retval) ) #define IUpdateInstaller4_get_AllowSourcePrompts(This,retval) \ ( (This)->lpVtbl -> get_AllowSourcePrompts(This,retval) ) #define IUpdateInstaller4_put_AllowSourcePrompts(This,value) \ ( (This)->lpVtbl -> put_AllowSourcePrompts(This,value) ) #define IUpdateInstaller4_get_RebootRequiredBeforeInstallation(This,retval) \ ( (This)->lpVtbl -> get_RebootRequiredBeforeInstallation(This,retval) ) #define IUpdateInstaller4_get_ForceQuiet(This,retval) \ ( (This)->lpVtbl -> get_ForceQuiet(This,retval) ) #define IUpdateInstaller4_put_ForceQuiet(This,value) \ ( (This)->lpVtbl -> put_ForceQuiet(This,value) ) #define IUpdateInstaller4_get_AttemptCloseAppsIfNecessary(This,retval) \ ( (This)->lpVtbl -> get_AttemptCloseAppsIfNecessary(This,retval) ) #define IUpdateInstaller4_put_AttemptCloseAppsIfNecessary(This,value) \ ( (This)->lpVtbl -> put_AttemptCloseAppsIfNecessary(This,value) ) #define IUpdateInstaller4_Commit(This,dwFlags) \ ( (This)->lpVtbl -> Commit(This,dwFlags) ) #endif /* COBJMACROS */ #endif /* C style interface */ #endif /* __IUpdateInstaller4_INTERFACE_DEFINED__ */ ================================================ FILE: LegacyUpdate/LaunchUpdateSite.cpp ================================================ #include "Exec.h" #include "HResult.h" #include "Utils.h" #include // Function signature required by Rundll32.exe. EXTERN_C __declspec(dllexport) void CALLBACK LaunchUpdateSite(HWND hwnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) { HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); if (!SUCCEEDED(hr)) { goto end; } // This just calls LegacyUpdate.exe now for backwards compatibility. hr = StartLauncher(L"/launch", TRUE); end: if (!SUCCEEDED(hr)) { LPWSTR message = GetMessageForHresult(hr); MessageBox(NULL, message, L"Legacy Update", MB_OK | MB_ICONERROR); LocalFree(message); } CoUninitialize(); } ================================================ FILE: LegacyUpdate/LegacyUpdate.def ================================================ ; LegacyUpdate.def : Declares the module parameters. EXPORTS ; Registration DllCanUnloadNow PRIVATE DllGetClassObject PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE ; Rundll32 LaunchUpdateSite PRIVATE ; Internal use GetMessageForHresult ================================================ FILE: LegacyUpdate/LegacyUpdate.idl ================================================ // 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"; import "wuapi.idl"; typedef enum OSVersionField { 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 UserType { e_nonAdmin = 0, e_admin = 2, e_elevated = 3 } UserType; typedef enum ViewLogType { e_legacyUpdate = 0, e_legacyUpdateLocal = 1, e_legacyUpdateLocalLow = 2, e_windowsUpdate = 3, } ViewLogType; [ 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(15)] HRESULT SetBrowserHwnd(IUpdateInstaller *installer); [id(5)] HRESULT GetUserType([out, retval] UserType *retval); [id(8)] HRESULT RebootIfRequired(void); [id(18)] HRESULT ViewLog(ViewLogType logType); [id(9)] HRESULT ViewWindowsUpdateLog(void); [id(13)] HRESULT OpenWindowsUpdateSettings(void); [id(16)] HRESULT BeforeUpdate(void); [id(17)] HRESULT AfterUpdate(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); [id(5)] HRESULT SetBrowserHwnd(IUpdateInstaller *installer, HWND hwnd); [id(2)] HRESULT Reboot(void); [id(3)] HRESULT BeforeUpdate(void); [id(4)] HRESULT AfterUpdate(void); }; [ uuid(05D22F33-C7C3-4C90-BDD9-CEDC86EA8FBE), version(1.0), helpstring("Legacy Update Control") ] library LegacyUpdateLib { importlib("stdole2.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; }; }; ================================================ FILE: LegacyUpdate/LegacyUpdate.rc ================================================ #include "resource.h" #include #include "Version.h" ///////////////////////////////////////////////////////////////////////////// // 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 VERSION PRODUCTVERSION VERSION FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG | VS_FF_PRERELEASE #else FILEFLAGS 0 #endif FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "Hashbang Productions" VALUE "FileDescription", "Legacy Update" VALUE "FileVersion", VERSION_STRING VALUE "InternalName", "LegacyUpdate.dll" VALUE "LegalCopyright", "© Hashbang Productions. All rights reserved." VALUE "OriginalFilename", "LegacyUpdate.dll" VALUE "ProductName", "Legacy Update" VALUE "ProductVersion", VERSION_STRING END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0409, 0x04b0 END END ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE BEGIN IDS_LEGACYUPDATE "Legacy Update" END #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // // Type Library // ID_TYPELIB TYPELIB "LegacyUpdate.tlb" #include "wuerror.rc" ================================================ FILE: LegacyUpdate/LegacyUpdate.vcxproj ================================================ Debug Win32 Release Win32 Debug x64 Release x64 17.0 Win32Proj {e9142706-8e21-4ece-80f8-d3f7b95c6f27} LegacyUpdate 10.0 Application true v143 Unicode Application false v143 true Unicode DynamicLibrary true v143 Unicode DynamicLibrary false v143 true Unicode Level3 true WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true Console true Level3 true true true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true Console true Level3 true _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true Console true Level3 true true true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true Console true ================================================ FILE: LegacyUpdate/LegacyUpdate.vcxproj.filters ================================================  {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hh;hpp;hxx;h++;hm;inl;inc;ipp;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 ================================================ FILE: LegacyUpdate/LegacyUpdateCtrl.cpp ================================================ // LegacyUpdateCtrl.cpp : Implementation of the CLegacyUpdateCtrl ActiveX Control class. #include "LegacyUpdateCtrl.h" #include "Compat.h" #include "ElevationHelper.h" #include "Exec.h" #include "HResult.h" #include "LegacyUpdate.h" #include "ProductInfo.h" #include "ProductName.h" #include "Registry.h" #include "User.h" #include "Utils.h" #include "Version.h" #include "VersionInfo.h" #include "ViewLog.h" #include #include #include #include const WCHAR *permittedHosts[] = { L"legacyupdate.net", L"test.legacyupdate.net" }; #define LEGACYUPDATECTRL_MISCSTATUS (OLEMISC_RECOMPOSEONRESIZE | OLEMISC_CANTLINKINSIDE | OLEMISC_INSIDEOUT | OLEMISC_ACTIVATEWHENVISIBLE | OLEMISC_SETCLIENTSITEFIRST) DEFINE_UUIDOF(CLegacyUpdateCtrl, CLSID_LegacyUpdateCtrl); STDMETHODIMP CLegacyUpdateCtrl::Create(IUnknown *pUnkOuter, REFIID riid, void **ppv) { if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } CLegacyUpdateCtrl *pThis = (CLegacyUpdateCtrl *)CoTaskMemAlloc(sizeof(CLegacyUpdateCtrl)); if (pThis == NULL) { return E_OUTOFMEMORY; } new(pThis) CLegacyUpdateCtrl(); HRESULT hr = pThis->QueryInterface(riid, ppv); pThis->Release(); return hr; } CLegacyUpdateCtrl::~CLegacyUpdateCtrl(void) { if (m_clientSite) { m_clientSite->Release(); m_clientSite = NULL; } if (m_adviseSink) { m_adviseSink->Release(); m_adviseSink = NULL; } if (m_elevatedHelper) { m_elevatedHelper->Release(); m_elevatedHelper = NULL; } if (m_nonElevatedHelper) { m_nonElevatedHelper->Release(); m_nonElevatedHelper = NULL; } } STDMETHODIMP CLegacyUpdateCtrl::UpdateRegistry(BOOL bRegister) { if (bRegister) { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"LegacyUpdate.Control", NULL, REG_SZ, (LPVOID)L"Legacy Update Control"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.Control\\CurVer", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.Control.1"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.Control.1", NULL, REG_SZ, (LPVOID)L"Legacy Update Control"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.Control.1\\CLSID", NULL, REG_SZ, (LPVOID)L"%CLSID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", NULL, REG_SZ, (LPVOID)L"Legacy Update Control"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", L"AppID", REG_SZ, (LPVOID)L"%APPID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\ProgID", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.Control.1"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\VersionIndependentProgID", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.Control"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Programmable", NULL, REG_SZ, NULL}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\InprocServer32", NULL, REG_SZ, (LPVOID)L"%MODULE%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\InprocServer32", L"ThreadingModel", REG_SZ, (LPVOID)L"Apartment"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Control", NULL, REG_SZ, NULL}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\TypeLib", NULL, REG_SZ, (LPVOID)L"%LIBID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Version", NULL, REG_SZ, (LPVOID)L"1.0"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\MiscStatus", NULL, REG_DWORD, (LPVOID)LEGACYUPDATECTRL_MISCSTATUS}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Implemented Categories\\{7DD95801-9882-11CF-9FA9-00AA006C42C4}", NULL, REG_SZ, NULL}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Implemented Categories\\{7DD95802-9882-11CF-9FA9-00AA006C42C4}", NULL, REG_SZ, NULL}, {} }; return SetRegistryEntries(entries); } else { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"LegacyUpdate.Control", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.Control.1", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", NULL, 0, DELETE_KEY}, {} }; return SetRegistryEntries(entries); } } #pragma mark - IUnknown STDMETHODIMP CLegacyUpdateCtrl::QueryInterface(REFIID riid, void **ppvObject) { if (ppvObject == NULL) { return E_POINTER; } *ppvObject = NULL; if (IsEqualIID(riid, IID_IOleObject)) { *ppvObject = &m_IOleObject; AddRef(); return S_OK; } return IDispatchImpl::QueryInterface(riid, ppvObject); } STDMETHODIMP_(ULONG) CLegacyUpdateCtrl::AddRef(void) { return InterlockedIncrement(&m_refCount); } STDMETHODIMP_(ULONG) CLegacyUpdateCtrl::Release(void) { ULONG count = InterlockedDecrement(&m_refCount); if (count == 0) { this->~CLegacyUpdateCtrl(); CoTaskMemFree(this); } return count; } #pragma mark - ILegacyUpdateCtrl STDMETHODIMP CLegacyUpdateCtrl::GetHTMLDocument(IHTMLDocument2 **retval) { if (m_clientSite == NULL) { return E_ACCESSDENIED; } CComPtr container; HRESULT hr = m_clientSite->GetContainer(&container); CHECK_HR_OR_RETURN(L"GetContainer"); hr = container->QueryInterface(IID_IHTMLDocument2, (void **)retval); CHECK_HR_OR_RETURN(L"QueryInterface IID_IHTMLDocument2"); return hr; } STDMETHODIMP CLegacyUpdateCtrl::IsPermitted(void) { CComPtr document; CComPtr location; BSTR host = NULL; HRESULT hr = GetHTMLDocument(&document); if (!SUCCEEDED(hr)) { #ifdef _DEBUG // Allow debugging outside of IE (e.g. via PowerShell) TRACE(L"GetHTMLDocument() failed - allowing anyway due to debug build"); return S_OK; #else goto end; #endif } hr = document->get_location(&location); CHECK_HR_OR_GOTO_END(L"get_location"); if (location == NULL) { hr = E_ACCESSDENIED; goto end; } hr = location->get_host(&host); CHECK_HR_OR_GOTO_END(L"get_host"); for (DWORD i = 0; i < ARRAYSIZE(permittedHosts); i++) { if (wcscmp(host, permittedHosts[i]) == 0) { SysFreeString(host); return S_OK; } } end: if (host) { SysFreeString(host); } return hr; } STDMETHODIMP CLegacyUpdateCtrl::GetIEWindowHWND(HWND *retval) { *retval = NULL; if (m_clientSite == NULL) { return E_FAIL; } CComPtr oleWindow; HRESULT hr = m_clientSite->QueryInterface(IID_IOleWindow, (void **)&oleWindow); CHECK_HR_OR_RETURN(L"QueryInterface"); hr = oleWindow->GetWindow(retval); CHECK_HR_OR_RETURN(L"GetWindow"); return hr; } STDMETHODIMP CLegacyUpdateCtrl::GetElevatedHelper(IElevationHelper **retval) { IElevationHelper *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+. HRESULT hr = CoCreateInstance(CLSID_ElevationHelper, NULL, CLSCTX_INPROC_SERVER, IID_IElevationHelper, (void **)&elevatedHelper); CHECK_HR_OR_RETURN(L"CoCreateInstance"); if (elevatedHelper == NULL) { return E_POINTER; } m_nonElevatedHelper = elevatedHelper; } *retval = elevatedHelper; return S_OK; } #define DoIsPermittedCheck(void) { \ HRESULT hr = IsPermitted(); \ if (!SUCCEEDED(hr)) { \ return hr; \ } \ } STDMETHODIMP CLegacyUpdateCtrl::CheckControl(VARIANT_BOOL *retval) { if (retval == NULL) { return E_POINTER; } DoIsPermittedCheck(); *retval = VARIANT_TRUE; return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::MessageForHresult(LONG inHresult, BSTR *retval) { DoIsPermittedCheck(); LPWSTR message = GetMessageForHresult(inHresult); *retval = SysAllocString(message); LocalFree(message); return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::GetOSVersionInfo(OSVersionField osField, LONG systemMetric, VARIANT *retval) { DoIsPermittedCheck(); VariantInit(retval); OSVERSIONINFOEX *versionInfo = GetVersionInfo(); switch (osField) { case e_majorVer: retval->vt = VT_UI4; retval->ulVal = versionInfo->dwMajorVersion; break; case e_minorVer: retval->vt = VT_UI4; retval->ulVal = versionInfo->dwMinorVersion; break; case e_buildNumber: retval->vt = VT_UI4; retval->ulVal = versionInfo->dwBuildNumber; break; case e_platform: retval->vt = VT_UI4; retval->ulVal = versionInfo->dwPlatformId; break; case e_SPMajor: retval->vt = VT_I4; retval->lVal = versionInfo->wServicePackMajor; break; case e_SPMinor: retval->vt = VT_I4; retval->lVal = versionInfo->wServicePackMinor; break; case e_productSuite: retval->vt = VT_I4; retval->lVal = versionInfo->wSuiteMask; break; case e_productType: retval->vt = VT_I4; retval->lVal = versionInfo->wProductType; break; case e_systemMetric: retval->vt = VT_I4; retval->lVal = GetSystemMetrics(systemMetric); break; case e_SPVersionString: { LPWSTR data = NULL; DWORD size = 0; HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_WINNT, L"BuildLab", KEY_WOW64_64KEY, &data, &size); retval->vt = VT_BSTR; retval->bstrVal = SUCCEEDED(hr) ? SysAllocStringLen(data, size - 1) // BuildLab doesn't exist on Windows 2000. : SysAllocString(versionInfo->szCSDVersion); if (data) { LocalFree(data); } break; } case e_controlVersionString: retval->vt = VT_BSTR; retval->bstrVal = SysAllocString(L"" VERSION_STRING); break; case e_VistaProductType: { DWORD productType = 0; GetVistaProductInfo(versionInfo->dwMajorVersion, versionInfo->dwMinorVersion, versionInfo->wServicePackMajor, versionInfo->wServicePackMinor, &productType); retval->vt = VT_UI4; retval->ulVal = productType; break; } case e_productName: return GetOSProductName(retval); case e_displayVersion: { LPWSTR data = NULL; DWORD size = 0; HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_WINNT, L"DisplayVersion", KEY_WOW64_64KEY, &data, &size); if (SUCCEEDED(hr)) { retval->vt = VT_BSTR; retval->bstrVal = SysAllocStringLen(data, size - 1); LocalFree(data); } break; } } return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::RequestElevation(void) { DoIsPermittedCheck(); if (m_elevatedHelper != NULL || !AtLeastWinVista()) { return S_OK; } // https://learn.microsoft.com/en-us/windows/win32/com/the-com-elevation-moniker HWND hwnd; GetIEWindowHWND(&hwnd); HRESULT hr = CoCreateInstanceAsAdmin(hwnd, CLSID_ElevationHelper, IID_IElevationHelper, (void**)&m_elevatedHelper); CHECK_HR_OR_RETURN(L"CoCreateInstanceAsAdmin"); return hr; } STDMETHODIMP CLegacyUpdateCtrl::CreateObject(BSTR progID, IDispatch **retval) { DoIsPermittedCheck(); if (progID == NULL) { return E_INVALIDARG; } if (!ProgIDIsPermitted(progID)) { return E_ACCESSDENIED; } IElevationHelper *elevatedHelper; HRESULT hr = GetElevatedHelper(&elevatedHelper); CHECK_HR_OR_RETURN(L"GetElevatedHelper"); return elevatedHelper->CreateObject(progID, retval); } STDMETHODIMP CLegacyUpdateCtrl::SetBrowserHwnd(IUpdateInstaller *installer) { DoIsPermittedCheck(); if (installer == NULL) { return E_INVALIDARG; } IElevationHelper *elevatedHelper; HRESULT hr = GetElevatedHelper(&elevatedHelper); CHECK_HR_OR_RETURN(L"GetElevatedHelper"); HWND hwnd; hr = GetIEWindowHWND(&hwnd); CHECK_HR_OR_RETURN(L"GetIEWindowHWND"); return elevatedHelper->SetBrowserHwnd(installer, hwnd); } STDMETHODIMP CLegacyUpdateCtrl::GetUserType(UserType *retval) { DoIsPermittedCheck(); if (IsUserAdmin()) { // 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(); // Ask WU itself whether a reboot is required CComPtr systemInfo; if (SUCCEEDED(systemInfo.CoCreateInstance(CLSID_SystemInformation, NULL, CLSCTX_INPROC_SERVER))) { if (SUCCEEDED(systemInfo->get_RebootRequired(retval)) && *retval == VARIANT_TRUE) { return S_OK; } } // Check reboot flag in registry HKEY subkey = NULL; HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGPATH_WU_REBOOTREQUIRED, 0, GetRegistryWow64Flag(KEY_READ | KEY_WOW64_64KEY), &subkey)); if (SUCCEEDED(hr)) { RegCloseKey(subkey); *retval = VARIANT_TRUE; return S_OK; } *retval = VARIANT_FALSE; return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::get_IsWindowsUpdateDisabled(VARIANT_BOOL *retval) { DoIsPermittedCheck(); // Future note: These are in HKCU on NT; HKLM on 9x. // Remove links and access to Windows Update DWORD value = 0; HRESULT hr = GetRegistryDword(HKEY_CURRENT_USER, REGPATH_POLICIES_EXPLORER, L"NoWindowsUpdate", KEY_WOW64_64KEY, &value); if (SUCCEEDED(hr) && value == 1) { *retval = VARIANT_TRUE; return S_OK; } // Remove access to use all Windows Update features hr = GetRegistryDword(HKEY_CURRENT_USER, REGPATH_POLICIES_WU, L"DisableWindowsUpdateAccess", KEY_WOW64_64KEY, &value); if (SUCCEEDED(hr) && value == 1) { *retval = VARIANT_TRUE; return S_OK; } *retval = VARIANT_FALSE; return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::RebootIfRequired(void) { DoIsPermittedCheck(); VARIANT_BOOL isRebootRequired = VARIANT_FALSE; HRESULT hr = get_IsRebootRequired(&isRebootRequired); if (SUCCEEDED(hr) && isRebootRequired == VARIANT_TRUE) { IElevationHelper *elevatedHelper; hr = GetElevatedHelper(&elevatedHelper); CHECK_HR_OR_RETURN(L"GetElevatedHelper"); hr = elevatedHelper->Reboot(); CHECK_HR_OR_RETURN(L"Reboot"); } return hr; } static LPCWSTR logTypeParams[] = { L"/log system", L"/log local", L"/log locallow", L"/log windowsupdate" }; STDMETHODIMP CLegacyUpdateCtrl::ViewLog(ViewLogType logType) { DoIsPermittedCheck(); if (logType < 0 || logType >= ARRAYSIZE(logTypeParams)) { return E_INVALIDARG; } HRESULT hr = StartLauncher(logTypeParams[logType], FALSE); if (!SUCCEEDED(hr)) { // Try directly hr = ::ViewLog((LogAction)logType, SW_SHOWDEFAULT, TRUE); } CHECK_HR_OR_RETURN(L"ViewLog"); return hr; } STDMETHODIMP CLegacyUpdateCtrl::ViewWindowsUpdateLog(void) { return ViewLog(e_windowsUpdate); } STDMETHODIMP CLegacyUpdateCtrl::OpenWindowsUpdateSettings(void) { DoIsPermittedCheck(); HRESULT hr = StartLauncher(L"/options", FALSE); if (!SUCCEEDED(hr)) { TRACE(L"OpenWindowsUpdateSettings() failed, falling back: %08x", hr); // Might happen if the site isn't trusted, and the user rejected the IE medium integrity prompt. // Use the basic Automatic Updates dialog directly from COM. CComPtr automaticUpdates; hr = automaticUpdates.CoCreateInstance(CLSID_AutomaticUpdates, NULL, CLSCTX_INPROC_SERVER); CHECK_HR_OR_RETURN(L"CoCreateInstance CLSID_AutomaticUpdates"); hr = automaticUpdates->ShowSettingsDialog(); CHECK_HR_OR_RETURN(L"ShowSettingsDialog"); } return hr; } STDMETHODIMP CLegacyUpdateCtrl::get_IsUsingWsusServer(VARIANT_BOOL *retval) { DoIsPermittedCheck(); DWORD useWUServer = 0; HRESULT hr = GetRegistryDword(HKEY_LOCAL_MACHINE, REGPATH_POLICIES_WU_AU, L"UseWUServer", KEY_WOW64_64KEY, &useWUServer); *retval = SUCCEEDED(hr) && useWUServer == 1 ? VARIANT_TRUE : VARIANT_FALSE; return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::get_WsusServerUrl(BSTR *retval) { DoIsPermittedCheck(); LPWSTR data = NULL; DWORD size = 0; HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_POLICIES_WU, L"WUServer", KEY_WOW64_64KEY, &data, &size); *retval = SUCCEEDED(hr) ? SysAllocStringLen(data, size - 1) : NULL; if (data) { LocalFree(data); } return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::get_WsusStatusServerUrl(BSTR *retval) { DoIsPermittedCheck(); LPWSTR data = NULL; DWORD size = 0; HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_POLICIES_WU, L"WUStatusServer", KEY_WOW64_64KEY, &data, &size); *retval = SUCCEEDED(hr) ? SysAllocStringLen(data, size - 1) : NULL; if (data) { LocalFree(data); } return S_OK; } STDMETHODIMP CLegacyUpdateCtrl::BeforeUpdate(void) { DoIsPermittedCheck(); IElevationHelper *elevatedHelper; HRESULT hr = GetElevatedHelper(&elevatedHelper); CHECK_HR_OR_RETURN(L"GetElevatedHelper"); return elevatedHelper->BeforeUpdate(); } STDMETHODIMP CLegacyUpdateCtrl::AfterUpdate(void) { DoIsPermittedCheck(); IElevationHelper *elevatedHelper; HRESULT hr = GetElevatedHelper(&elevatedHelper); CHECK_HR_OR_RETURN(L"GetElevatedHelper"); return elevatedHelper->AfterUpdate(); } ================================================ FILE: LegacyUpdate/LegacyUpdateCtrl.h ================================================ #pragma once // LegacyUpdateCtrl.h : Declaration of the CLegacyUpdateCtrl ActiveX Control class. // CLegacyUpdateCtrl : See LegacyUpdateCtrl.cpp for implementation. #include #include #include "resource.h" #include "com.h" #include "LegacyUpdate_i.h" class CLegacyUpdateCtrl; class DECLSPEC_NOVTABLE CLegacyUpdateCtrl_IOleObject : public IOleObjectImpl { public: CLegacyUpdateCtrl_IOleObject(CLegacyUpdateCtrl *pParent) : IOleObjectImpl(pParent) {} }; class DECLSPEC_NOVTABLE CLegacyUpdateCtrl : public IDispatchImpl { public: CLegacyUpdateCtrl() : m_IOleObject(this), m_refCount(1), m_clientSite(NULL), m_adviseSink(NULL), m_elevatedHelper(NULL), m_nonElevatedHelper(NULL) {} virtual ~CLegacyUpdateCtrl(); static STDMETHODIMP Create(IUnknown *pUnkOuter, REFIID riid, void **ppv); static STDMETHODIMP UpdateRegistry(BOOL bRegister); private: CLegacyUpdateCtrl_IOleObject m_IOleObject; LONG m_refCount; public: // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); IOleClientSite *m_clientSite; IAdviseSink *m_adviseSink; private: IElevationHelper *m_elevatedHelper; IElevationHelper *m_nonElevatedHelper; STDMETHODIMP GetHTMLDocument(IHTMLDocument2 **retval); STDMETHODIMP IsPermitted(); STDMETHODIMP GetIEWindowHWND(HWND *retval); STDMETHODIMP GetElevatedHelper(IElevationHelper **retval); public: // ILegacyUpdateCtrl 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 SetBrowserHwnd(IUpdateInstaller *installer); STDMETHODIMP GetUserType(UserType *retval); STDMETHODIMP get_IsRebootRequired(VARIANT_BOOL *retval); STDMETHODIMP get_IsWindowsUpdateDisabled(VARIANT_BOOL *retval); STDMETHODIMP RebootIfRequired(); STDMETHODIMP ViewLog(ViewLogType logType); STDMETHODIMP ViewWindowsUpdateLog(); STDMETHODIMP OpenWindowsUpdateSettings(); STDMETHODIMP get_IsUsingWsusServer(VARIANT_BOOL *retval); STDMETHODIMP get_WsusServerUrl(BSTR *retval); STDMETHODIMP get_WsusStatusServerUrl(BSTR *retval); STDMETHODIMP BeforeUpdate(); STDMETHODIMP AfterUpdate(); }; ================================================ FILE: LegacyUpdate/Makefile ================================================ FILES = \ $(wildcard *.cpp) \ dlldatax.c \ ../shared/Exec.c \ ../shared/HResult.c \ ../shared/LegacyUpdate.c \ ../shared/Log.c \ ../shared/ProductInfo.c \ ../shared/Registry.c \ ../shared/ViewLog.c \ ../shared/WMI.c \ ../shared/Wow64.c \ $(OBJDIR)/LegacyUpdate_i.c RCFILES = LegacyUpdate.rc MCFILES = wuerror.mc IDLFILES = LegacyUpdate.idl BIN = obj/LegacyUpdate$(ARCH).dll DEF = LegacyUpdate.def C_LANG = c++ CXX_LANG = c++ all:: all-archs all-archs: all-32 all-64 include ../build/shared.mk CFLAGS += \ -DLOG_NAME="\"Control\"" LDFLAGS += \ -shared \ -lkernel32 \ -luser32 \ -lgdi32 \ -lole32 \ -loleaut32 \ -ladvapi32 \ -lshell32 \ -lcomctl32 \ -lpsapi \ -lwbemuuid \ -luuid \ -lshlwapi \ -lrpcrt4 \ -lrpcns4 ifeq ($(ARCH),64) LDFLAGS += -Wl,-eDllMain else LDFLAGS += -Wl,-e_DllMain endif $(OBJ): $(OBJDIR)/LegacyUpdate_i.h $(OBJDIR)/dlldatax.o: dlldatax.c $(DLLDATA) $(IDL_P) $(CC) -x c $< $(filter-out -Wpedantic, $(CFLAGS)) -c -o $@ .PHONY: all all-archs all-32 all-64 ================================================ FILE: LegacyUpdate/NGen.cpp ================================================ #include "NGen.h" #include "Exec.h" #include "VersionInfo.h" #include "Wow64.h" #include STDMETHODIMP PauseResumeNGenQueue(BOOL state) { // Only necessary prior to Windows 8 if (AtLeastWin8()) { return S_OK; } // If resuming but the system is already shutting down, ignore because it will process on boot if (state && GetSystemMetrics(SM_SHUTTINGDOWN)) { return S_OK; } // Pause and resume .NET Framework global assembly cache (GAC) and NGen queue static LPCWSTR versions[] = { L"v4.0.30319", L"v2.0.50727" }; SYSTEM_INFO systemInfo; OurGetNativeSystemInfo(&systemInfo); BOOL hasFramework64 = systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64; HRESULT hr = S_OK; for (DWORD i = 0; i < ARRAYSIZE(versions); i++) { for (int j = 0; j < 2; j++) { if (j == 1 && !hasFramework64) { break; } WCHAR path[MAX_PATH], expandedPath[MAX_PATH]; wsprintf(path, L"%%SystemRoot%%\\Microsoft.NET\\Framework%ls\\%ls\\ngen.exe", j == 1 ? L"64": L"", versions[i]); ExpandEnvironmentStrings(path, expandedPath, ARRAYSIZE(expandedPath)); if (PathFileExists(expandedPath)) { SHELLEXECUTEINFO execInfo = {0}; execInfo.cbSize = sizeof(execInfo); execInfo.fMask = SEE_MASK_FLAG_NO_UI; execInfo.lpFile = expandedPath; execInfo.lpParameters = state ? L"queue pause" : L"queue continue"; execInfo.nShow = SW_HIDE; hr = ExecEx(&execInfo, TRUE, NULL); if (SUCCEEDED(hr)) { break; } } } } return hr; } ================================================ FILE: LegacyUpdate/NGen.h ================================================ #pragma once STDMETHODIMP PauseResumeNGenQueue(BOOL state); ================================================ FILE: LegacyUpdate/ProductName.cpp ================================================ #include #include #include "Registry.h" #include "VersionInfo.h" #include "WMI.h" #include "Wow64.h" typedef WINBOOL (__stdcall *_IsOS)(DWORD dwOS); static VARIANT _productName; typedef struct { LPCWSTR library; UINT stringID; } WinNT5BrandString; typedef struct { DWORD version; DWORD osFlag; WORD archFlag; UINT stringIDs[3]; } WinNT5Variant; #define STR_WINXP 1 #define STR_SRV03 2 #define STR_IA64 3 #define STR_EMBEDDED 4 #define STR_HOME 5 #define STR_PRO 6 #define STR_STANDARD 7 #define STR_ENTERPRISE 8 #define STR_DATACENTER 9 #define STR_BLADE 10 #define STR_SBS 11 #define STR_TABLETPC2005 12 #define STR_WIN 13 #define STR_TABLETPC 14 #define STR_MEDIACENTER 15 #define STR_STARTER 16 #define STR_EMBPOS 17 #define STR_WINFLP 18 #define STR_EMBSTD2009 19 #define STR_EMBPOS2009 20 #define STR_PROIA64 21 #define STR_STANDARDIA64 22 #define STR_ENTERPRISEIA64 23 #define STR_DATACENTERIA64 24 #define STR_PROX64 25 #define STR_STANDARDX64 26 #define STR_ENTERPRISEX64 27 #define STR_DATACENTERX64 28 #define STR_SRV03R2 29 #define STR_APPLIANCE 30 #define STR_STORAGESERVER_1 31 #define STR_STORAGESERVER_2 32 #define STR_UDSSERVER_2 33 #define STR_COMPUTECLUSTER_1 34 #define STR_COMPUTECLUSTER_2 35 #define STR_COMPUTECLUSTER_3 36 #define STR_HOMESERVER_1 37 #define STR_HOMESERVER_2 38 static const WinNT5BrandString nt5BrandStrings[] = { // Skip index 0 {}, // Base editions {L"sysdm.cpl", 180}, // "Microsoft Windows XP" {L"sysdm.cpl", 181}, // "Microsoft Windows Server 2003" {L"sysdm.cpl", 188}, // "64-Bit Edition" {L"sysdm.cpl", 189}, // "Embedded" {L"sysdm.cpl", 190}, // "Home Edition" {L"sysdm.cpl", 191}, // "Professional" {L"sysdm.cpl", 192}, // "Standard Edition" {L"sysdm.cpl", 193}, // "Enterprise Edition" {L"sysdm.cpl", 194}, // "Datacenter Edition" {L"sysdm.cpl", 196}, // "Web Edition" {L"sysdm.cpl", 197}, // "for Small Business Server" // Post-SP1 {L"xpsp2res.dll", 13813}, // "Tablet PC Edition 2005" // Post-SP2 {L"xpsp3res.dll", 2000}, // "Microsoft Windows" // XP {L"winbrand.dll", 2000}, // "Tablet PC Edition" {L"winbrand.dll", 2001}, // "Media Center Edition" {L"winbrand.dll", 2002}, // "Starter Edition" {L"winbrand.dll", 2003}, // "Embedded for Point of Service" {L"winbrand.dll", 2004}, // "Fundamentals for Legacy PCs" {L"winbrand.dll", 2005}, // "Windows Embedded Standard" {L"winbrand.dll", 2006}, // "Embedded POSReady 2009" // Server 2003 {L"ws03res.dll", 4600}, // "Microsoft(R) Windows(R) XP 64-Bit Edition for Itanium-based Systems" {L"ws03res.dll", 4601}, // "Microsoft(R) Windows(R) Server 2003, Standard Edition for 64-Bit Itanium-based Systems" {L"ws03res.dll", 4602}, // "Microsoft(R) Windows(R) Server 2003, Enterprise Edition for 64-Bit Itanium-based Systems" {L"ws03res.dll", 4603}, // "Microsoft(R) Windows(R) Server 2003, Datacenter Edition for 64-Bit Itanium-based Systems" {L"ws03res.dll", 13812}, // "Professional x64 Edition" {L"ws03res.dll", 13814}, // "Standard x64 Edition" {L"ws03res.dll", 13815}, // "Enterprise x64 Edition" {L"ws03res.dll", 13816}, // "Datacenter x64 Edition" // R2 {L"r2brand.dll", 1101}, // "Microsoft Windows Server 2003 R2" // Appliance Server {L"winbrand.dll", 2002}, // "Appliance Server" // Storage Server {L"wssbrand.dll", 1101}, // "Microsoft" {L"wssbrand.dll", 1102}, // "Windows Storage Server 2003 R2" {L"wssbrand.dll", 1104}, // "Windows UDS Server 2003" // Compute Cluster {L"hpcbrand.dll", 1101}, // "Microsoft" {L"hpcbrand.dll", 1102}, // "Windows Server 2003" {L"hpcbrand.dll", 1103}, // "Compute Cluster Edition" // Home Server {L"whsbrand.dll", 1101}, // "Microsoft" {L"whsbrand.dll", 1102} // "Windows Home Server" }; static const WinNT5Variant nt5Variants[] = { // XP // "XP Reloaded" editions - also identifies as OS_PROFESSIONAL {MAXDWORD, OS_TABLETPC, MAXWORD, {STR_WINXP, STR_TABLETPC}}, // "Microsoft Windows XP Tablet PC Edition" {MAXDWORD, OS_MEDIACENTER, MAXWORD, {STR_WINXP, STR_MEDIACENTER}}, // "Microsoft Windows XP Media Center Edition" {MAXDWORD, OS_STARTER, MAXWORD, {STR_WINXP, STR_STARTER}}, // "Microsoft Windows XP Starter Edition" // Embedded editions - also identifies as OS_EMBEDDED and OS_PROFESSIONAL {0x0501, OS_EMBPOS, MAXWORD, {STR_WIN, STR_EMBPOS}}, // "Microsoft Windows Embedded for Point of Service" {MAXDWORD, OS_WINFLP, MAXWORD, {STR_WIN, STR_WINFLP}}, // "Microsoft Windows Fundamentals for Legacy PCs" {MAXDWORD, OS_EMBSTD2009, MAXWORD, {STR_WIN, STR_EMBSTD2009}}, // "Microsoft Windows Embedded Standard" {MAXDWORD, OS_EMBPOS2009, MAXWORD, {STR_WIN, STR_EMBPOS2009}}, // "Microsoft Windows Embedded POSReady 2009" {MAXDWORD, OS_EMBEDDED, MAXWORD, {STR_WINXP, STR_EMBEDDED}}, // "Microsoft Windows XP Embedded" // Base editions {MAXDWORD, OS_HOME, MAXWORD, {STR_WINXP, STR_HOME}}, // "Microsoft Windows XP Home Edition" {MAXDWORD, OS_PROFESSIONAL, PROCESSOR_ARCHITECTURE_AMD64, {STR_WINXP, STR_PROX64}}, // "Microsoft Windows XP Professional x64 Edition" {MAXDWORD, OS_PROFESSIONAL, PROCESSOR_ARCHITECTURE_IA64, {STR_WINXP, STR_PRO, STR_IA64}}, // "Microsoft Windows XP Professional 64-Bit Edition" {MAXDWORD, OS_PROFESSIONAL, MAXWORD, {STR_WINXP, STR_PRO}}, // "Microsoft Windows XP Professional" // Server 2003 // Neutral {MAXDWORD, OS_APPLIANCE, MAXWORD, {STR_SRV03, STR_APPLIANCE}}, // "Microsoft Windows Server 2003, Appliance Server" {MAXDWORD, OS_STORAGESERVER, MAXWORD, {STR_STORAGESERVER_1, STR_STORAGESERVER_2}}, // "Microsoft Windows Storage Server 2003 R2" {MAXDWORD, OS_COMPUTECLUSTER, MAXWORD, {STR_COMPUTECLUSTER_1, STR_COMPUTECLUSTER_2, STR_COMPUTECLUSTER_3}}, // "Microsoft Windows Server 2003 Compute Cluster Edition" {0x0502, OS_HOMESERVER, MAXWORD, {STR_HOMESERVER_1, STR_HOMESERVER_2}}, // "Microsoft Windows Home Server" // Base editions {MAXDWORD, OS_SMALLBUSINESSSERVER, MAXWORD, {STR_SRV03, STR_SBS}}, // "Microsoft Windows Server 2003 for Small Business Server" // Itanium {MAXDWORD, OS_SERVER, PROCESSOR_ARCHITECTURE_IA64, {STR_STANDARDIA64}}, // "Microsoft(R) Windows(R) Server 2003, Standard Edition for 64-Bit Itanium-based Systems" {MAXDWORD, OS_ADVSERVER, PROCESSOR_ARCHITECTURE_IA64, {STR_ENTERPRISEIA64}}, // "Microsoft(R) Windows(R) Server 2003, Enterprise Edition for 64-Bit Itanium-based Systems" {MAXDWORD, OS_DATACENTER, PROCESSOR_ARCHITECTURE_IA64, {STR_DATACENTERIA64}}, // "Microsoft(R) Windows(R) Server 2003, Datacenter Edition for 64-Bit Itanium-based Systems" // x64 {MAXDWORD, OS_SERVER, PROCESSOR_ARCHITECTURE_AMD64, {STR_SRV03, STR_STANDARDX64}}, // "Microsoft Windows Server 2003, Standard x64 Edition" {MAXDWORD, OS_ADVSERVER, PROCESSOR_ARCHITECTURE_AMD64, {STR_SRV03, STR_ENTERPRISEX64}}, // "Microsoft Windows Server 2003, Enterprise x64 Edition" {MAXDWORD, OS_DATACENTER, PROCESSOR_ARCHITECTURE_AMD64, {STR_SRV03, STR_DATACENTERX64}}, // "Microsoft Windows Server 2003, Datacenter x64 Edition" // x86 {MAXDWORD, OS_SERVER, MAXWORD, {STR_SRV03, STR_STANDARD}}, // "Microsoft Windows Server 2003, Standard Edition" {MAXDWORD, OS_ADVSERVER, MAXWORD, {STR_SRV03, STR_ENTERPRISE}}, // "Microsoft Windows Server 2003, Enterprise Edition" {MAXDWORD, OS_WEBSERVER, MAXWORD, {STR_SRV03, STR_BLADE}}, // "Microsoft Windows Server 2003, Web Edition" {MAXDWORD, OS_DATACENTER, MAXWORD, {STR_SRV03, STR_DATACENTER}}, // "Microsoft Windows Server 2003, Datacenter Edition" // Fallbacks {0x0501, MAXDWORD, MAXWORD, {STR_WINXP}}, // "Microsoft Windows XP" {0x0502, MAXDWORD, MAXWORD, {STR_SRV03}}, // "Microsoft Windows Server 2003" }; HRESULT GetOSProductName(LPVARIANT productName) { if (_productName.vt == VT_EMPTY) { VariantInit(&_productName); // Handle the absolute disaster of Windows XP/Server 2003 edition branding WORD winver = GetWinVer(); if (HIBYTE(winver) == 5 && LOBYTE(winver) != 0) { _IsOS $IsOS = (_IsOS)GetProcAddress(LoadLibrary(L"shlwapi.dll"), MAKEINTRESOURCEA(437)); if (!$IsOS) { return E_FAIL; } SYSTEM_INFO systemInfo; OurGetNativeSystemInfo(&systemInfo); WinNT5Variant variant = {}; for (DWORD i = 0; i < ARRAYSIZE(nt5Variants); i++) { WinNT5Variant thisVariant = nt5Variants[i]; if ((thisVariant.version == MAXDWORD || thisVariant.version == winver) && (thisVariant.archFlag == MAXWORD || thisVariant.archFlag == systemInfo.wProcessorArchitecture) && (thisVariant.osFlag == MAXDWORD || $IsOS(thisVariant.osFlag))) { variant = thisVariant; break; } } if (variant.version != 0) { WCHAR brandStr[1024]; ZeroMemory(brandStr, ARRAYSIZE(brandStr)); for (DWORD i = 0; variant.stringIDs[i] != 0; i++) { UINT id = variant.stringIDs[i]; // If Server 2003 R2, override to R2 string if (id == STR_SRV03 && $IsOS(OS_SERVERR2)) { id = STR_SRV03R2; } // If XP Tablet PC SP2, override to 2005 string if (id == STR_TABLETPC && GetVersionInfo()->wServicePackMajor >= 2) { id = STR_TABLETPC2005; } WinNT5BrandString brandString = nt5BrandStrings[id]; WCHAR str[340]; HMODULE dll = LoadLibraryEx(brandString.library, NULL, LOAD_LIBRARY_AS_DATAFILE); if (dll) { LoadString(dll, brandString.stringID, str, ARRAYSIZE(str)); FreeLibrary(dll); } // If Server 2003 (except SBS), add comma if (i == 1) { UINT lastID = variant.stringIDs[i - 1]; if (lastID == STR_SRV03 && !$IsOS(OS_SMALLBUSINESSSERVER)) { wcscat(brandStr, L","); } } if (i > 0) { wcscat(brandStr, L" "); } wcscat(brandStr, str); } if (wcslen(brandStr) > 0) { _productName.vt = VT_BSTR; _productName.bstrVal = SysAllocString(brandStr); } } } if (_productName.vt == VT_EMPTY) { // Get from WMI HRESULT hr = QueryWMIProperty(L"SELECT Caption FROM Win32_OperatingSystem", L"Caption", &_productName); CHECK_HR_OR_RETURN(L"QueryWMIProperty"); } if (_productName.vt == VT_EMPTY) { // Get from registry LPWSTR data = NULL; DWORD size = 0; HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_WINNT, L"ProductName", KEY_WOW64_64KEY, &data, &size); CHECK_HR_OR_RETURN(L"GetRegistryString"); _productName.vt = VT_BSTR; _productName.bstrVal = SysAllocStringLen(data, size - 1); LocalFree(data); } } VariantCopy(productName, &_productName); return S_OK; } ================================================ FILE: LegacyUpdate/ProductName.h ================================================ #pragma once HRESULT GetOSProductName(LPVARIANT productName); ================================================ FILE: LegacyUpdate/ProgressBarControl.cpp ================================================ // ProgressBarControl.cpp : Implementation of CProgressBarControl #include "ProgressBarControl.h" #include #include #include "Compat.h" #include "Registry.h" #include "resource.h" #include "VersionInfo.h" #define PROGRESSBARCONTROL_MISCSTATUS (OLEMISC_RECOMPOSEONRESIZE | OLEMISC_CANTLINKINSIDE | OLEMISC_INSIDEOUT | OLEMISC_ACTIVATEWHENVISIBLE | OLEMISC_SETCLIENTSITEFIRST | OLEMISC_NOUIACTIVATE) DEFINE_UUIDOF(CProgressBarControl, CLSID_ProgressBarControl); STDMETHODIMP CProgressBarControl::Create(IUnknown *pUnkOuter, REFIID riid, void **ppv) { if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } CProgressBarControl *pThis = (CProgressBarControl *)CoTaskMemAlloc(sizeof(CProgressBarControl)); if (pThis == NULL) { return E_OUTOFMEMORY; } new(pThis) CProgressBarControl(); HRESULT hr = pThis->QueryInterface(riid, ppv); CHECK_HR_OR_RETURN(L"QueryInterface"); pThis->Release(); return hr; } CProgressBarControl::~CProgressBarControl(void) { DestroyControlWindow(); if (m_clientSite) { m_clientSite->Release(); m_clientSite = NULL; } if (m_adviseSink) { m_adviseSink->Release(); m_adviseSink = NULL; } } STDMETHODIMP CProgressBarControl::UpdateRegistry(BOOL bRegister) { if (bRegister) { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"LegacyUpdate.ProgressBar", NULL, REG_SZ, (LPVOID)L"Legacy Update Progress Bar Control"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ProgressBar\\CurVer", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.ProgressBar.1"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ProgressBar.1", NULL, REG_SZ, (LPVOID)L"Legacy Update Progress Bar Control"}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ProgressBar.1\\CLSID", NULL, REG_SZ, (LPVOID)L"%CLSID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", NULL, REG_SZ, (LPVOID)L"Legacy Update Progress Bar Control"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", L"AppID", REG_SZ, (LPVOID)L"%APPID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\ProgID", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.ProgressBar.1"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\VersionIndependentProgID", NULL, REG_SZ, (LPVOID)L"LegacyUpdate.ProgressBar"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Programmable", NULL, REG_SZ, NULL}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\InprocServer32", NULL, REG_SZ, (LPVOID)L"%MODULE%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\InprocServer32", L"ThreadingModel", REG_SZ, (LPVOID)L"Apartment"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Control", NULL, REG_SZ, NULL}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\TypeLib", NULL, REG_SZ, (LPVOID)L"%LIBID%"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Version", NULL, REG_SZ, (LPVOID)L"1.0"}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\MiscStatus", NULL, REG_DWORD, (LPVOID)PROGRESSBARCONTROL_MISCSTATUS}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Implemented Categories\\{7DD95801-9882-11CF-9FA9-00AA006C42C4}", NULL, REG_SZ, NULL}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%\\Implemented Categories\\{7DD95802-9882-11CF-9FA9-00AA006C42C4}", NULL, REG_SZ, NULL}, {} }; return SetRegistryEntries(entries); } else { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"LegacyUpdate.ProgressBar", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"LegacyUpdate.ProgressBar.1", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"CLSID\\%CLSID%", NULL, 0, DELETE_KEY}, {} }; return SetRegistryEntries(entries); } } #pragma mark - IUnknown STDMETHODIMP CProgressBarControl::QueryInterface(REFIID riid, void **ppvObject) { if (ppvObject == NULL) { return E_POINTER; } *ppvObject = NULL; if (IsEqualIID(riid, IID_IOleObject)) { *ppvObject = (IOleObject *)&m_IOleObject; AddRef(); return S_OK; } else if (IsEqualIID(riid, IID_IViewObject) || IsEqualIID(riid, IID_IViewObject2) || IsEqualIID(riid, IID_IViewObjectEx)) { *ppvObject = (IViewObjectEx *)&m_IViewObjectEx; AddRef(); return S_OK; } else if (IsEqualIID(riid, IID_IOleInPlaceObject) || IsEqualIID(riid, IID_IOleWindow) || IsEqualIID(riid, IID_IOleInPlaceObjectWindowless)) { *ppvObject = (IOleInPlaceObject *)&m_IOleInPlaceObject; AddRef(); return S_OK; } else if (IsEqualIID(riid, IID_IOleInPlaceActiveObject)) { *ppvObject = (IOleInPlaceActiveObject *)&m_IOleInPlaceActiveObject; AddRef(); return S_OK; } else if (IsEqualIID(riid, IID_IQuickActivate)) { *ppvObject = (IQuickActivate *)&m_IQuickActivateImpl; AddRef(); return S_OK; } return IDispatchImpl::QueryInterface(riid, ppvObject); } STDMETHODIMP_(ULONG) CProgressBarControl::AddRef(void) { return InterlockedIncrement(&m_refCount); } STDMETHODIMP_(ULONG) CProgressBarControl::Release(void) { ULONG count = InterlockedDecrement(&m_refCount); if (count == 0) { this->~CProgressBarControl(); CoTaskMemFree(this); } return count; } #pragma mark - IOleObject STDMETHODIMP CProgressBarControl_IOleObject::GetExtent(DWORD dwDrawAspect, SIZEL *psizel) { if (psizel == NULL) { return E_POINTER; } if (dwDrawAspect != DVASPECT_CONTENT) { return DV_E_DVASPECT; } // Convert to HIMETRIC HDC hdc = GetDC(NULL); int ppiX = GetDeviceCaps(hdc, LOGPIXELSX); int ppiY = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(NULL, hdc); psizel->cx = MAP_PIX_TO_LOGHIM(m_pParent->m_width, ppiX); psizel->cy = MAP_PIX_TO_LOGHIM(m_pParent->m_height, ppiY); return S_OK; } STDMETHODIMP CProgressBarControl_IOleObject::SetExtent(DWORD dwDrawAspect, SIZEL *psizel) { if (psizel == NULL) { return E_POINTER; } if (dwDrawAspect != DVASPECT_CONTENT) { return DV_E_DVASPECT; } // Convert from HIMETRIC HDC hdc = GetDC(NULL); int ppiX = GetDeviceCaps(hdc, LOGPIXELSX); int ppiY = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(NULL, hdc); m_pParent->m_width = MAP_LOGHIM_TO_PIX(psizel->cx, ppiX); m_pParent->m_height = MAP_LOGHIM_TO_PIX(psizel->cy, ppiY); if (m_pParent->m_innerHwnd) { SetWindowPos( m_pParent->m_innerHwnd, NULL, 0, 0, m_pParent->m_width, m_pParent->m_height, SWP_NOZORDER | SWP_NOACTIVATE ); } return S_OK; } STDMETHODIMP CProgressBarControl_IOleObject::DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) { switch (iVerb) { case OLEIVERB_INPLACEACTIVATE: case OLEIVERB_UIACTIVATE: case OLEIVERB_SHOW: if (hwndParent && lprcPosRect) { HRESULT hr = m_pParent->CreateControlWindow(hwndParent, lprcPosRect); CHECK_HR_OR_RETURN(L"CreateControlWindow"); } return S_OK; case OLEIVERB_HIDE: return S_OK; default: return OLEOBJ_S_INVALIDVERB; } } STDMETHODIMP CProgressBarControl_IOleObject::GetMiscStatus(DWORD dwAspect, DWORD *pdwStatus) { if (pdwStatus == NULL) { return E_POINTER; } if (dwAspect == DVASPECT_CONTENT) { *pdwStatus = PROGRESSBARCONTROL_MISCSTATUS; return S_OK; } *pdwStatus = 0; return S_OK; } STDMETHODIMP CProgressBarControl_IOleObject::Close(DWORD dwSaveOption) { m_pParent->DestroyControlWindow(); return IOleObjectImpl::Close(dwSaveOption); } STDMETHODIMP CProgressBarControl::CreateControlWindow(HWND hParent, const RECT *pRect) { m_width = pRect->right - pRect->left; m_height = pRect->bottom - pRect->top; if (m_innerHwnd) { if (m_hwnd == hParent) { // Just update the position SetWindowPos( m_innerHwnd, NULL, pRect->left, pRect->top, m_width, m_height, SWP_NOZORDER | SWP_NOACTIVATE ); return S_OK; } else { // Parent changed, start over DestroyControlWindow(); } } m_hwnd = hParent; // Bind to our manifest to ensure we get visual styles and marquee ULONG_PTR cookie; IsolationAwareStart(&cookie); // Load and init comctl (hopefully 6.0) LoadLibrary(L"comctl32.dll"); INITCOMMONCONTROLSEX initComctl = {0}; initComctl.dwSize = sizeof(initComctl); initComctl.dwICC = ICC_PROGRESS_CLASS; InitCommonControlsEx(&initComctl); // Create progress bar window m_innerHwnd = CreateWindowEx( WS_EX_CLIENTEDGE, PROGRESS_CLASS, NULL, WS_CHILD | WS_VISIBLE, 0, 0, m_width, m_height, m_hwnd, NULL, OWN_MODULE, NULL ); IsolationAwareEnd(&cookie); if (!m_innerHwnd) { return E_FAIL; } return put_Value(-1); } STDMETHODIMP CProgressBarControl::DestroyControlWindow(void) { if (m_innerHwnd) { DestroyWindow(m_innerHwnd); m_innerHwnd = NULL; } m_hwnd = NULL; return S_OK; } #pragma mark - IViewObjectEx STDMETHODIMP CProgressBarControl::OnDraw(DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) { if (lprcBounds == NULL || hdcDraw == NULL) { return E_POINTER; } switch (dwDrawAspect) { case DVASPECT_CONTENT: case DVASPECT_OPAQUE: case DVASPECT_TRANSPARENT: break; default: return DV_E_DVASPECT; } if (m_innerHwnd) { // Set size LONG width = lprcBounds->right - lprcBounds->left; LONG height = lprcBounds->bottom - lprcBounds->top; SetWindowPos( m_innerHwnd, NULL, lprcBounds->left, lprcBounds->top, width, height, SWP_NOZORDER | SWP_NOACTIVATE ); } return S_OK; } #pragma mark - IOleInPlaceObject STDMETHODIMP CProgressBarControl_IOleInPlaceObject::SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect) { if (lprcPosRect == NULL) { return E_POINTER; } m_pParent->m_width = lprcPosRect->right - lprcPosRect->left; m_pParent->m_height = lprcPosRect->bottom - lprcPosRect->top; return S_OK; } #pragma mark - IOleInPlaceActiveObject STDMETHODIMP CProgressBarControl_IOleInPlaceActiveObject::ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow) { if (prcBorder && m_pParent->m_innerHwnd) { LONG width = prcBorder->right - prcBorder->left; LONG height = prcBorder->bottom - prcBorder->top; m_pParent->m_width = width; m_pParent->m_height = height; SetWindowPos( m_pParent->m_innerHwnd, NULL, prcBorder->left, prcBorder->top, width, height, SWP_NOZORDER | SWP_NOACTIVATE ); } return S_OK; } #pragma mark - Helper methods STDMETHODIMP CProgressBarControl::InvalidateContainer(void) { if (m_adviseSink) { m_adviseSink->OnViewChange(DVASPECT_CONTENT, -1); } if (m_clientSite) { CComPtr inPlaceSiteWindowless; m_clientSite->QueryInterface(IID_IOleInPlaceSiteWindowless, (void**)&inPlaceSiteWindowless); if (inPlaceSiteWindowless) { inPlaceSiteWindowless->InvalidateRect(NULL, TRUE); } else { CComPtr inPlaceSite; m_clientSite->QueryInterface(IID_IOleInPlaceSite, (void**)&inPlaceSite); if (inPlaceSite) { HWND containerHwnd; if (SUCCEEDED(inPlaceSite->GetWindow(&containerHwnd)) && containerHwnd) { InvalidateRect(containerHwnd, NULL, TRUE); } } } } return S_OK; } #pragma mark - IProgressBarControl STDMETHODIMP CProgressBarControl::get_Value(SHORT *pValue) { if (pValue == NULL) { return E_POINTER; } if (m_innerHwnd == NULL) { *pValue = 0; return S_OK; } if (GetWindowLongPtr(m_innerHwnd, GWL_STYLE) & PBS_MARQUEE) { // Marquee - no value *pValue = -1; } else { // Normal - return PBM_GETPOS *pValue = (SHORT)SendMessage(m_innerHwnd, PBM_GETPOS, 0, 0); } return S_OK; } STDMETHODIMP CProgressBarControl::put_Value(SHORT value) { if (m_innerHwnd == NULL) { return E_FAIL; } ULONG_PTR cookie; IsolationAwareStart(&cookie); if (value == -1) { // Marquee style SetWindowLongPtr(m_innerHwnd, GWL_STYLE, GetWindowLongPtr(m_innerHwnd, GWL_STYLE) | PBS_MARQUEE); SendMessage(m_innerHwnd, PBM_SETMARQUEE, TRUE, 100); } else { // Normal style SHORT oldValue = -1; get_Value(&oldValue); if (oldValue == -1) { SendMessage(m_innerHwnd, PBM_SETMARQUEE, FALSE, 0); SetWindowLongPtr(m_innerHwnd, GWL_STYLE, GetWindowLongPtr(m_innerHwnd, GWL_STYLE) & ~PBS_MARQUEE); SendMessage(m_innerHwnd, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); } SendMessage(m_innerHwnd, PBM_SETPOS, value, 0); } IsolationAwareEnd(&cookie); InvalidateContainer(); return S_OK; } ================================================ FILE: LegacyUpdate/ProgressBarControl.h ================================================ #pragma once // ProgressBarControl.h : Declaration of the CProgressBarControl class. #include "resource.h" #include "com.h" #include "LegacyUpdate_i.h" class CProgressBarControl; class DECLSPEC_NOVTABLE CProgressBarControl_IOleObject : public IOleObjectImpl { public: CProgressBarControl_IOleObject(CProgressBarControl *pParent) : IOleObjectImpl(pParent) {} STDMETHODIMP GetExtent(DWORD dwDrawAspect, SIZEL *psizel); STDMETHODIMP SetExtent(DWORD dwDrawAspect, SIZEL *psizel); STDMETHODIMP DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect); STDMETHODIMP GetMiscStatus(DWORD dwAspect, DWORD *pdwStatus); STDMETHODIMP Close(DWORD dwSaveOption); }; class DECLSPEC_NOVTABLE CProgressBarControl_IViewObjectEx : public IViewObjectExImpl { public: CProgressBarControl_IViewObjectEx(CProgressBarControl *pParent) : IViewObjectExImpl(pParent) {} }; class DECLSPEC_NOVTABLE CProgressBarControl_IOleInPlaceObject : public IOleInPlaceObjectImpl { public: CProgressBarControl_IOleInPlaceObject(CProgressBarControl *pParent) : IOleInPlaceObjectImpl(pParent) {} STDMETHODIMP SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect); }; class DECLSPEC_NOVTABLE CProgressBarControl_IOleInPlaceActiveObject : public IOleInPlaceActiveObjectImpl { public: CProgressBarControl_IOleInPlaceActiveObject(CProgressBarControl *pParent) : IOleInPlaceActiveObjectImpl(pParent) {} // IOleInPlaceActiveObject STDMETHODIMP ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow); }; class DECLSPEC_NOVTABLE CProgressBarControl_IQuickActivateImpl : public IQuickActivateImpl { public: CProgressBarControl_IQuickActivateImpl(CProgressBarControl *pParent) : IQuickActivateImpl(pParent) {} }; class DECLSPEC_NOVTABLE CProgressBarControl : public IDispatchImpl { public: CProgressBarControl() : m_IOleObject(this), m_IViewObjectEx(this), m_IOleInPlaceObject(this), m_IOleInPlaceActiveObject(this), m_IQuickActivateImpl(this), m_refCount(1), m_hwnd(NULL), m_innerHwnd(NULL), m_width(0), m_height(0), m_clientSite(NULL), m_adviseSink(NULL) { } virtual ~CProgressBarControl(); static STDMETHODIMP Create(IUnknown *pUnkOuter, REFIID riid, void **ppv); static STDMETHODIMP UpdateRegistry(BOOL bRegister); public: CProgressBarControl_IOleObject m_IOleObject; CProgressBarControl_IViewObjectEx m_IViewObjectEx; CProgressBarControl_IOleInPlaceObject m_IOleInPlaceObject; CProgressBarControl_IOleInPlaceActiveObject m_IOleInPlaceActiveObject; CProgressBarControl_IQuickActivateImpl m_IQuickActivateImpl; private: LONG m_refCount; public: HWND m_hwnd; HWND m_innerHwnd; LONG m_width; LONG m_height; IOleClientSite *m_clientSite; IAdviseSink *m_adviseSink; // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); // IProgressBarControl STDMETHODIMP get_Value(SHORT *pValue); STDMETHODIMP put_Value(SHORT value); // Helpers STDMETHODIMP CreateControlWindow(HWND hParent, const RECT *pRect); STDMETHODIMP DestroyControlWindow(); STDMETHODIMP OnDraw(DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue); STDMETHODIMP InvalidateContainer(); }; ================================================ FILE: LegacyUpdate/ProgressBarControl.html ================================================ ATL test page for object ProgressBarControl
.
-1
================================================ FILE: LegacyUpdate/Utils.cpp ================================================ #include "Utils.h" #include #include #include "Exec.h" #include "LegacyUpdate.h" #include "ViewLog.h" #ifndef SHUTDOWN_RESTART #define SHUTDOWN_RESTART 0x00000004 #endif #ifndef SHUTDOWN_INSTALL_UPDATES #define SHUTDOWN_INSTALL_UPDATES 0x00000040 #endif typedef DWORD (WINAPI *_InitiateShutdownW)(LPWSTR lpMachineName, LPWSTR lpMessage, DWORD dwGracePeriod, DWORD dwShutdownFlags, DWORD dwReason); HRESULT StartLauncher(LPCWSTR params, BOOL wait) { LPWSTR path = NULL; HRESULT hr = GetInstallPath(&path); CHECK_HR_OR_RETURN(L"GetInstallPath"); PathAppend(path, L"LegacyUpdate.exe"); DWORD code = 0; hr = Exec(NULL, path, params, NULL, SW_SHOWDEFAULT, wait, &code); CHECK_HR_OR_GOTO_END(L"Exec"); hr = HRESULT_FROM_WIN32(code); end: LocalFree(path); return hr; } HRESULT Reboot(void) { HRESULT hr = E_FAIL; HANDLE token = NULL; TOKEN_PRIVILEGES privileges; LUID shutdownLuid; _InitiateShutdownW $InitiateShutdownW = (_InitiateShutdownW)GetProcAddress(GetModuleHandle(L"advapi32.dll"), "InitiateShutdownW"); // Make sure we have permission to shut down if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token)) { hr = HRESULT_FROM_WIN32(GetLastError()); CHECK_HR_OR_GOTO_END(L"OpenProcessToken"); } if (!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &shutdownLuid)) { hr = HRESULT_FROM_WIN32(GetLastError()); CHECK_HR_OR_GOTO_END(L"LookupPrivilegeValue"); } // Ask the system nicely to give us shutdown privilege privileges.PrivilegeCount = 1; privileges.Privileges[0].Luid = shutdownLuid; privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!AdjustTokenPrivileges(token, FALSE, &privileges, 0, NULL, NULL)) { hr = HRESULT_FROM_WIN32(GetLastError()); CHECK_HR_OR_GOTO_END(L"AdjustTokenPrivileges"); } // Reboot with reason "Operating System: Security fix (Unplanned)", ensuring to install updates. // Try InitiateShutdown first (Vista+) if ($InitiateShutdownW) { hr = HRESULT_FROM_WIN32($InitiateShutdownW(NULL, NULL, 0, SHUTDOWN_RESTART | SHUTDOWN_INSTALL_UPDATES, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_SECURITYFIX)); } // Try InitiateSystemShutdownEx (2k/XP) if (!SUCCEEDED(hr)) { TRACE(L"InitiateShutdown failed: %08x", hr); if (InitiateSystemShutdownEx(NULL, NULL, 0, FALSE, TRUE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_SECURITYFIX) == 0) { hr = HRESULT_FROM_WIN32(GetLastError()); CHECK_HR_OR_GOTO_END(L"InitiateSystemShutdownEx"); } } // Last-ditch attempt ExitWindowsEx (only guaranteed to work for the current logged in user) if (!SUCCEEDED(hr) && !ExitWindowsEx(EWX_REBOOT | EWX_FORCEIFHUNG, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_SECURITYFIX)) { hr = HRESULT_FROM_WIN32(GetLastError()); CHECK_HR_OR_GOTO_END(L"ExitWindowsEx"); } end: if (token) { CloseHandle(token); } return hr; } void operator delete(void *ptr) { free(ptr); } ================================================ FILE: LegacyUpdate/Utils.h ================================================ #pragma once HRESULT StartLauncher(LPCWSTR params, BOOL wait); HRESULT Reboot(); ================================================ FILE: LegacyUpdate/dlldatax.c ================================================ // wrapper for dlldata.c #include #include #define REGISTER_PROXY_DLL #define USE_STUBLESS_PROXY #define PROXY_DELEGATION #define ENTRY_PREFIX Prx #include #include "LegacyUpdate_i.h" #include "LegacyUpdate_dlldata.c" #include "LegacyUpdate_p.c" ================================================ FILE: LegacyUpdate/dlldatax.h ================================================ #pragma once EXTERN_C BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved); EXTERN_C STDAPI PrxDllCanUnloadNow(void); EXTERN_C STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv); EXTERN_C STDAPI PrxDllRegisterServer(void); EXTERN_C STDAPI PrxDllUnregisterServer(void); ================================================ FILE: LegacyUpdate/dllmain.cpp ================================================ // dllmain.cpp : Implementation of DLL Exports. #include "LegacyUpdate_i.h" #include "dllmain.h" #include "dlldatax.h" #include "ClassFactory.h" #include "ElevationHelper.h" #include "ElevationHelper.h" #include "LegacyUpdate.h" #include "LegacyUpdateCtrl.h" #include "ProgressBarControl.h" #include "Registry.h" #include "VersionInfo.h" #include #include static LPCWSTR APPID_LegacyUpdateLib = L"{D0A82CD0-B6F0-4101-83ED-DA47D0D04830}"; HINSTANCE g_hInstance = NULL; LONG g_serverLocks = 0; typedef struct ClassEntry { const GUID *clsid; STDMETHODIMP (*createFunc)(IUnknown *pUnkOuter, REFIID riid, void **ppv); STDMETHODIMP (*updateRegistryFunc)(BOOL bRegister); } ClassEntry; static ClassEntry g_classEntries[] = { {&CLSID_LegacyUpdateCtrl, &CLegacyUpdateCtrl::Create, &CLegacyUpdateCtrl::UpdateRegistry}, {&CLSID_ElevationHelper, &CElevationHelper::Create, &CElevationHelper::UpdateRegistry}, {&CLSID_ProgressBarControl, &CProgressBarControl::Create, &CProgressBarControl::UpdateRegistry} }; // DLL Entry Point BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { if (!PrxDllMain(hInstance, dwReason, lpReserved)) { return FALSE; } switch (dwReason) { case DLL_PROCESS_ATTACH: g_hInstance = hInstance; DisableThreadLibraryCalls(hInstance); OpenLog(); break; case DLL_PROCESS_DETACH: g_hInstance = NULL; CloseLog(); break; } return TRUE; } // Used to determine whether the DLL can be unloaded by OLE STDAPI DllCanUnloadNow(void) { HRESULT hr = PrxDllCanUnloadNow(); if (hr != S_OK) { return hr; } return g_serverLocks == 0 ? S_OK : S_FALSE; } // Returns a class factory to create an object of the requested type STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK) { return S_OK; } if (ppv == NULL) { return E_POINTER; } *ppv = NULL; for (DWORD i = 0; i < ARRAYSIZE(g_classEntries); i++) { if (IsEqualCLSID(rclsid, *g_classEntries[i].clsid)) { CClassFactory *pFactory; HRESULT hr = CClassFactory::Create(NULL, riid, (void **)&pFactory); if (pFactory == NULL) { return E_OUTOFMEMORY; } pFactory->createFunc = g_classEntries[i].createFunc; pFactory->clsid = g_classEntries[i].clsid; *ppv = pFactory; return hr; } } return CLASS_E_CLASSNOTAVAILABLE; } // Shared register/unregister method STDAPI UpdateRegistration(BOOL state) { HRESULT hr = OleInitialize(NULL); BOOL oleInitialized = SUCCEEDED(hr); if (hr != RPC_E_CHANGED_MODE && hr != CO_E_ALREADYINITIALIZED) { CHECK_HR_OR_RETURN(L"OleInitialize"); } LPWSTR installPath = NULL, filename = NULL, libid = NULL; hr = GetInstallPath(&installPath); CHECK_HR_OR_GOTO_END(L"GetInstallPath"); hr = GetOwnFileName(&filename); CHECK_HR_OR_GOTO_END(L"GetOwnFileName"); // Register type library if (state) { CComPtr typeLib; hr = LoadTypeLib(filename, &typeLib); CHECK_HR_OR_GOTO_END(L"LoadTypeLib"); hr = RegisterTypeLib(typeLib, filename, NULL); CHECK_HR_OR_GOTO_END(L"RegisterTypeLib"); } else { CComPtr typeLib; hr = LoadRegTypeLib(LIBID_LegacyUpdateLib, 1, 0, LOCALE_NEUTRAL, &typeLib); if (hr != TYPE_E_LIBNOTREGISTERED) { CHECK_HR_OR_GOTO_END(L"LoadRegTypeLib"); TLIBATTR *attrs; hr = typeLib->GetLibAttr(&attrs); CHECK_HR_OR_GOTO_END(L"GetLibAttr"); hr = UnRegisterTypeLib(attrs->guid, attrs->wMajorVerNum, attrs->wMinorVerNum, attrs->lcid, attrs->syskind); typeLib->ReleaseTLibAttr(attrs); CHECK_HR_OR_GOTO_END(L"UnRegisterTypeLib"); } } // Set vars used for expansions hr = StringFromCLSID(LIBID_LegacyUpdateLib, &libid); CHECK_HR_OR_GOTO_END(L"StringFromCLSID"); SetEnvironmentVariable(L"APPID", APPID_LegacyUpdateLib); SetEnvironmentVariable(L"LIBID", libid); SetEnvironmentVariable(L"MODULE", filename); SetEnvironmentVariable(L"INSTALLPATH", installPath); CoTaskMemFree(libid); // Main if (state) { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"AppID\\%APPID%", NULL, REG_SZ, (LPVOID)L"Legacy Update Control"}, {HKEY_CLASSES_ROOT, L"AppID\\%APPID%", L"DllSurrogate", REG_SZ, (LPVOID)L""}, {HKEY_CLASSES_ROOT, L"AppID\\LegacyUpdate.dll", L"AppID", REG_SZ, (LPVOID)L"%APPID%"}, {} }; hr = SetRegistryEntries(entries); } else { RegistryEntry entries[] = { {HKEY_CLASSES_ROOT, L"AppID\\%APPID%", NULL, 0, DELETE_KEY}, {HKEY_CLASSES_ROOT, L"AppID\\LegacyUpdate.dll", NULL, 0, DELETE_KEY}, {} }; hr = SetRegistryEntries(entries); } CHECK_HR_OR_GOTO_END(L"SetRegistryEntries main"); // Register classes for (DWORD i = 0; i < ARRAYSIZE(g_classEntries); i++) { ClassEntry entry = g_classEntries[i]; LPWSTR clsidStr; hr = StringFromCLSID(*entry.clsid, &clsidStr); CHECK_HR_OR_GOTO_END(L"StringFromCLSID"); SetEnvironmentVariable(L"CLSID", clsidStr); CoTaskMemFree(clsidStr); hr = entry.updateRegistryFunc(state); CHECK_HR_OR_GOTO_END(L"SetRegistryEntries class"); } // Register proxy hr = state ? PrxDllRegisterServer() : PrxDllUnregisterServer(); CHECK_HR_OR_GOTO_END(L"Proxy registration"); end: // Clean up environment static LPCWSTR envVars[] = {L"APPID", L"LIBID", L"MODULE", L"INSTALLPATH", L"CLSID"}; for (DWORD i = 0; i < ARRAYSIZE(envVars); i++) { SetEnvironmentVariable(envVars[i], NULL); } if (installPath) { LocalFree(installPath); } if (filename) { LocalFree(filename); } if (oleInitialized) { OleUninitialize(); } return hr; } // DllRegisterServer - Adds entries to the system registry STDAPI DllRegisterServer(void) { LOG(L"DllRegisterServer"); return UpdateRegistration(TRUE); } // DllUnregisterServer - Removes entries from the system registry STDAPI DllUnregisterServer(void) { LOG(L"DllUnregisterServer"); return UpdateRegistration(FALSE); } // DllInstall - Adds/Removes entries to the system registry per machine only. STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) { LOG(L"DllInstall(%d)", bInstall); return HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED); } ================================================ FILE: LegacyUpdate/dllmain.h ================================================ #pragma once // dllmain.h : Declaration of module class. extern HINSTANCE g_hInstance; extern LONG g_serverLocks; ================================================ FILE: LegacyUpdate/resource.h ================================================ #define IDS_LEGACYUPDATE 1 #define ID_TYPELIB 1 ================================================ FILE: LegacyUpdate/stdafx.h ================================================ #pragma once // stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, // but are changed infrequently #define STRICT #define WINVER _WIN32_WINNT_WIN2K #define _WIN32_WINNT _WIN32_WINNT_WIN2K // Use msvcrt stdio functions #define __USE_MINGW_ANSI_STDIO 0 #include "resource.h" #include "Trace.h" #include ================================================ FILE: LegacyUpdate/wuapi.idl ================================================ import "oaidl.idl"; // Just types we need from wuapi.idl [ helpstring("IUpdateInstaller Interface"), object, oleautomation, dual, nonextensible, uuid(7b929c68-ccdc-4226-96b1-8724600b54c2), pointer_default(unique), ] interface IUpdateInstaller : IDispatch { [id(0x60020003), propget, restricted] HRESULT ParentHwnd([out, retval] HWND *retval); [id(0x60020003), propput, restricted] HRESULT ParentHwnd([in, unique] HWND value); }; [ uuid(B596CC9F-56E5-419E-A622-E01BB457431E), version(2.0), helpstring("WUAPI 2.0 Type Library") ] library WUApiLib { importlib("stdole2.tlb"); [ helpstring("UpdateInstaller Class"), uuid(D2E0FE7F-D23E-48E1-93C0-6FA8CC346474) ] coclass UpdateInstaller { [default] interface IUpdateInstaller2; }; }; ================================================ FILE: LegacyUpdate/wuerror.mc ================================================ ;// Reverse engineered from wuerror.h from Windows SDK 10.0.26100.0 ;/*************************************************************************** ;* * ;* wuerror.mc -- error code definitions for Windows Update. * ;* * ;* Copyright (c) Microsoft Corporation. All rights reserved. * ;* * ;***************************************************************************/ ;#ifndef _WUERROR_ ;#define _WUERROR_ MessageIdTypedef = DWORD OutputBase = 16 FacilityNames = ( WindowsUpdate = 0x024 ) SeverityNames = ( Success = 0x0 Error = 0x2 ) LanguageNames = ( English = 0x0409:MSG0409 ) ;/////////////////////////////////////////////////////////////////////////////// ;// Windows Update Success Codes ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x0001 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_SERVICE_STOP Language = English Windows Update Agent was stopped successfully. . MessageId = 0x0002 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_SELFUPDATE Language = English Windows Update Agent updated itself. . MessageId = 0x0003 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_UPDATE_ERROR Language = English Operation completed successfully but there were errors applying the updates. . MessageId = 0x0004 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_MARKED_FOR_DISCONNECT Language = English A callback was marked to be disconnected later because the request to disconnect the operation came while a callback was executing. . MessageId = 0x0005 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_REBOOT_REQUIRED Language = English The system must be restarted to complete installation of the update. . MessageId = 0x0006 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_ALREADY_INSTALLED Language = English The update to be installed is already installed on the system. . MessageId = 0x0007 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_ALREADY_UNINSTALLED Language = English The update to be removed is not installed on the system. . MessageId = 0x0008 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_ALREADY_DOWNLOADED Language = English The update to be downloaded has already been downloaded. . MessageId = 0x0009 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_SOME_UPDATES_SKIPPED_ON_BATTERY Language = English The operation completed successfully, but some updates were skipped because the system is running on batteries. . MessageId = 0x000A Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_ALREADY_REVERTED Language = English The update to be reverted is not present on the system. . MessageId = 0x0010 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_SEARCH_CRITERIA_NOT_SUPPORTED Language = English The operation is skipped because the update service does not support the requested search criteria. . MessageId = 0x2015 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_UH_INSTALLSTILLPENDING Language = English The installation operation for the update is still in progress. . MessageId = 0x2016 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_UH_DOWNLOAD_SIZE_CALCULATED Language = English The actual download size has been calculated by the handler. . MessageId = 0x5001 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_SIH_NOOP Language = English No operation was required by the server-initiated healing server response. . MessageId = 0x6001 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_DM_ALREADYDOWNLOADING Language = English The update to be downloaded is already being downloaded. . MessageId = 0x7101 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_METADATA_SKIPPED_BY_ENFORCEMENTMODE Language = English Metadata verification was skipped by enforcement mode. . MessageId = 0x7102 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_METADATA_IGNORED_SIGNATURE_VERIFICATION Language = English A server configuration refresh resulted in metadata signature verification to be ignored. . MessageId = 0x8001 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_SEARCH_LOAD_SHEDDING Language = English Search operation completed successfully but one or more services were shedding load. . MessageId = 0x8002 Facility = WindowsUpdate Severity = Success SymbolicName = WU_S_AAD_DEVICE_TICKET_NOT_NEEDED Language = English There was no need to retrieve an AAD device ticket. . ;/////////////////////////////////////////////////////////////////////////////// ;// Windows Update Error Codes ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x0001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_SERVICE Language = English Windows Update Agent was unable to provide the service. . MessageId = 0x0002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MAX_CAPACITY_REACHED Language = English The maximum capacity of the service was exceeded. . MessageId = 0x0003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNKNOWN_ID Language = English An ID cannot be found. . MessageId = 0x0004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NOT_INITIALIZED Language = English The object could not be initialized. . MessageId = 0x0005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_RANGEOVERLAP Language = English The update handler requested a byte range overlapping a previously requested range. . MessageId = 0x0006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TOOMANYRANGES Language = English The requested number of byte ranges exceeds the maximum number (2^31 - 1). . MessageId = 0x0007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALIDINDEX Language = English The index to a collection was invalid. . MessageId = 0x0008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_ITEMNOTFOUND Language = English The key for the item queried could not be found. . MessageId = 0x0009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_OPERATIONINPROGRESS Language = English Another conflicting operation was in progress. Some operations such as installation cannot be performed twice simultaneously. . MessageId = 0x000A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_COULDNOTCANCEL Language = English Cancellation of the operation was not allowed. . MessageId = 0x000B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CALL_CANCELLED Language = English Operation was cancelled. . MessageId = 0x000C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NOOP Language = English No operation was required. . MessageId = 0x000D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_XML_MISSINGDATA Language = English Windows Update Agent could not find required information in the update's XML data. . MessageId = 0x000E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_XML_INVALID Language = English Windows Update Agent found invalid information in the update's XML data. . MessageId = 0x000F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CYCLE_DETECTED Language = English Circular update relationships were detected in the metadata. . MessageId = 0x0010 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TOO_DEEP_RELATION Language = English Update relationships too deep to evaluate were evaluated. . MessageId = 0x0011 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_RELATIONSHIP Language = English An invalid update relationship was detected. . MessageId = 0x0012 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REG_VALUE_INVALID Language = English An invalid registry value was read. . MessageId = 0x0013 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DUPLICATE_ITEM Language = English Operation tried to add a duplicate item to a list. . MessageId = 0x0014 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_INSTALL_REQUESTED Language = English Updates requested for install are not installable by caller. . MessageId = 0x0016 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALL_NOT_ALLOWED Language = English Operation tried to install while another installation was in progress or the system was pending a mandatory restart. . MessageId = 0x0017 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NOT_APPLICABLE Language = English Operation was not performed because there are no applicable updates. . MessageId = 0x0018 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_USERTOKEN Language = English Operation failed because a required user token is missing. . MessageId = 0x0019 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EXCLUSIVE_INSTALL_CONFLICT Language = English An exclusive update cannot be installed with other updates at the same time. . MessageId = 0x001A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_POLICY_NOT_SET Language = English A policy value was not set. . MessageId = 0x001B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SELFUPDATE_IN_PROGRESS Language = English The operation could not be performed because the Windows Update Agent is self-updating. . MessageId = 0x001D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_UPDATE Language = English An update contains invalid metadata. . MessageId = 0x001E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SERVICE_STOP Language = English Operation did not complete because the service or system was being shut down. . MessageId = 0x001F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_CONNECTION Language = English Operation did not complete because the network connection was unavailable. . MessageId = 0x0020 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_INTERACTIVE_USER Language = English Operation did not complete because there is no logged-on interactive user. . MessageId = 0x0021 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TIME_OUT Language = English Operation did not complete because it timed out. . MessageId = 0x0022 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_ALL_UPDATES_FAILED Language = English Operation failed for all the updates. . MessageId = 0x0023 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EULAS_DECLINED Language = English The license terms for all updates were declined. . MessageId = 0x0024 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_UPDATE Language = English There are no updates. . MessageId = 0x0025 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_USER_ACCESS_DISABLED Language = English Group Policy settings prevented access to Windows Update. . MessageId = 0x0026 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_UPDATE_TYPE Language = English The type of update is invalid. . MessageId = 0x0027 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_URL_TOO_LONG Language = English The URL exceeded the maximum length. . MessageId = 0x0028 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNINSTALL_NOT_ALLOWED Language = English The update could not be uninstalled because the request did not originate from a WSUS server. . MessageId = 0x0029 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_PRODUCT_LICENSE Language = English Search may have missed some updates before there is an unlicensed application on the system. . MessageId = 0x002A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MISSING_HANDLER Language = English A component required to detect applicable updates was missing. . MessageId = 0x002B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_LEGACYSERVER Language = English An operation did not complete because it requires a newer version of server. . MessageId = 0x002C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_BIN_SOURCE_ABSENT Language = English A delta-compressed update could not be installed because it required the source. . MessageId = 0x002D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SOURCE_ABSENT Language = English A full-file update could not be installed because it required the source. . MessageId = 0x002E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WU_DISABLED Language = English Access to an unmanaged server is not allowed. . MessageId = 0x002F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CALL_CANCELLED_BY_POLICY Language = English Operation did not complete because the DisableWindowsUpdateAccess policy was set. . MessageId = 0x0030 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_PROXY_SERVER Language = English The format of the proxy list was invalid. . MessageId = 0x0031 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_FILE Language = English The file is in the wrong format. . MessageId = 0x0032 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_CRITERIA Language = English The search criteria string was invalid. . MessageId = 0x0033 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EULA_UNAVAILABLE Language = English License terms could not be downloaded. . MessageId = 0x0034 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DOWNLOAD_FAILED Language = English Update failed to download. . MessageId = 0x0035 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UPDATE_NOT_PROCESSED Language = English The update was not processed. . MessageId = 0x0036 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_OPERATION Language = English The object's current state did not allow the operation. . MessageId = 0x0037 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NOT_SUPPORTED Language = English The functionality for the operation is not supported. . MessageId = 0x0038 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WINHTTP_INVALID_FILE Language = English The downloaded file has an unexpected content type. . MessageId = 0x0039 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TOO_MANY_RESYNC Language = English Agent is asked by server to resync too many times. . MessageId = 0x0040 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_SERVER_CORE_SUPPORT Language = English WUA API method does not run on Server Core installation. . MessageId = 0x0041 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SYSPREP_IN_PROGRESS Language = English Service is not available while sysprep is running. . MessageId = 0x0042 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNKNOWN_SERVICE Language = English The update service is no longer registered with AU. . MessageId = 0x0043 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_UI_SUPPORT Language = English There is no support for WUA UI. . MessageId = 0x0044 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PER_MACHINE_UPDATE_ACCESS_DENIED Language = English Only administrators can perform this operation on per-machine updates. . MessageId = 0x0045 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNSUPPORTED_SEARCHSCOPE Language = English A search was attempted with a scope that is not currently supported for this type of search. . MessageId = 0x0046 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_BAD_FILE_URL Language = English The URL does not point to a file. . MessageId = 0x0047 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REVERT_NOT_ALLOWED Language = English The update could not be reverted. . MessageId = 0x0048 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_NOTIFICATION_INFO Language = English The featured update notification info returned by the server is invalid. . MessageId = 0x0049 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_OUTOFRANGE Language = English The data is out of range. . MessageId = 0x004A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_IN_PROGRESS Language = English Windows Update agent operations are not available while OS setup is running. . MessageId = 0x004B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_ORPHANED_DOWNLOAD_JOB Language = English An orphaned downloadjob was found with no active callers. . MessageId = 0x004C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_LOW_BATTERY Language = English An update could not be installed because the system battery power level is too low. . MessageId = 0x004D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INFRASTRUCTUREFILE_INVALID_FORMAT Language = English The downloaded infrastructure file is incorrectly formatted. . MessageId = 0x004E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INFRASTRUCTUREFILE_REQUIRES_SSL Language = English The infrastructure file must be downloaded using strong SSL. . MessageId = 0x004F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_IDLESHUTDOWN_OPCOUNT_DISCOVERY Language = English A discovery call contributed to a non-zero operation count at idle timer shutdown. . MessageId = 0x0050 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_IDLESHUTDOWN_OPCOUNT_SEARCH Language = English A search call contributed to a non-zero operation count at idle timer shutdown. . MessageId = 0x0051 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_IDLESHUTDOWN_OPCOUNT_DOWNLOAD Language = English A download call contributed to a non-zero operation count at idle timer shutdown. . MessageId = 0x0052 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_IDLESHUTDOWN_OPCOUNT_INSTALL Language = English An install call contributed to a non-zero operation count at idle timer shutdown. . MessageId = 0x0053 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_IDLESHUTDOWN_OPCOUNT_OTHER Language = English An unspecified call contributed to a non-zero operation count at idle timer shutdown. . MessageId = 0x0054 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INTERACTIVE_CALL_CANCELLED Language = English An interactive user cancelled this operation, which was started from the Windows Update Agent UI. . MessageId = 0x0055 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_CALL_CANCELLED Language = English Automatic Updates cancelled this operation because it applies to an update that is no longer applicable to this computer. . MessageId = 0x0056 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SYSTEM_UNSUPPORTED Language = English This version or edition of the operating system doesn't support the needed functionality. . MessageId = 0x0057 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NO_SUCH_HANDLER_PLUGIN Language = English The requested update download or install handler, or update applicability expression evaluator, is not provided by this Agent plugin. . MessageId = 0x0058 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_SERIALIZATION_VERSION Language = English The requested serialization version is not supported. . MessageId = 0x0059 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NETWORK_COST_EXCEEDS_POLICY Language = English The current network cost does not meet the conditions set by the network cost policy. . MessageId = 0x005A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CALL_CANCELLED_BY_HIDE Language = English The call is cancelled because it applies to an update that is hidden (no longer applicable to this computer). . MessageId = 0x005B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CALL_CANCELLED_BY_INVALID Language = English The call is cancelled because it applies to an update that is invalid (no longer applicable to this computer). . MessageId = 0x005C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_VOLUMEID Language = English The specified volume id is invalid. . MessageId = 0x005D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNRECOGNIZED_VOLUMEID Language = English The specified volume id is unrecognized by the system. . MessageId = 0x005E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EXTENDEDERROR_NOTSET Language = English The installation extended error code is not specified. . MessageId = 0x005F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EXTENDEDERROR_FAILED Language = English The installation extended error code is set to general fail. . MessageId = 0x0060 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_IDLESHUTDOWN_OPCOUNT_SERVICEREGISTRATION Language = English A service registration call contributed to a non-zero operation count at idle timer shutdown. . MessageId = 0x0061 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_FILETRUST_SHA2SIGNATURE_MISSING Language = English Signature validation of the file fails to find valid SHA2+ signature on MS signed payload. . MessageId = 0x0062 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UPDATE_NOT_APPROVED Language = English The update is not in the servicing approval list. . MessageId = 0x0063 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CALL_CANCELLED_BY_INTERACTIVE_SEARCH Language = English The search call was cancelled by another interactive search against the same service. . MessageId = 0x0064 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALL_JOB_RESUME_NOT_ALLOWED Language = English Resume of install job not allowed due to another installation in progress. . MessageId = 0x0065 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALL_JOB_NOT_SUSPENDED Language = English Resume of install job not allowed because job is not suspended. . MessageId = 0x0066 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALL_USERCONTEXT_ACCESSDENIED Language = English User context passed to installation from caller with insufficient privileges. . MessageId = 0x0067 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_STANDBY_ACTIVITY_NOT_ALLOWED Language = English Operation is not allowed because the device is in DC (Direct Current) and DS (Disconnected Standby). . MessageId = 0x0068 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_COULD_NOT_EVALUATE_PROPERTY Language = English The property could not be evaluated. . MessageId = 0x0FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNEXPECTED Language = English An operation failed due to reasons not covered by another error code. . ;/////////////////////////////////////////////////////////////////////////////// ;// 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 = 0x1001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MSI_WRONG_VERSION Language = English Search may have missed some updates because the Windows Installer is less than version 3.1. . MessageId = 0x1002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MSI_NOT_CONFIGURED Language = English Search may have missed some updates because the Windows Installer is not configured. . MessageId = 0x1003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MSP_DISABLED Language = English Search may have missed some updates because policy has disabled Windows Installer patching. . MessageId = 0x1004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MSI_WRONG_APP_CONTEXT Language = English An update could not be applied because the application is installed per-user. . MessageId = 0x1005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MSI_NOT_PRESENT Language = English Search may have missed some updates because the Windows Installer is less than version 3.1. . MessageId = 0x1FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_MSP_UNEXPECTED Language = English Search may have missed some updates because there was a failure of the Windows Installer. . ;/////////////////////////////////////////////////////////////////////////////// ;// Protocol Talker errors ;// ;// The following map to SOAPCLIENT_ERRORs from atlsoap.h. These errors ;// are obtained from calling GetClientError() on the CClientWebService ;// object. ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x4000 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_BASE Language = English WU_E_PT_SOAPCLIENT_* error codes map to the SOAPCLIENT_ERROR enum of the ATL Server Library. . MessageId = 0x4001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_INITIALIZE Language = English SOAPCLIENT_INITIALIZE_ERROR - initialization of the SOAP client failed, possibly because of an MSXML installation failure. . MessageId = 0x4002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_OUTOFMEMORY Language = English SOAPCLIENT_OUTOFMEMORY - SOAP client failed because it ran out of memory. . MessageId = 0x4003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_GENERATE Language = English SOAPCLIENT_GENERATE_ERROR - SOAP client failed to generate the request. . MessageId = 0x4004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_CONNECT Language = English SOAPCLIENT_CONNECT_ERROR - SOAP client failed to connect to the server. . MessageId = 0x4005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_SEND Language = English SOAPCLIENT_SEND_ERROR - SOAP client failed to send a message for reasons of WU_E_WINHTTP_* error codes. . MessageId = 0x4006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_SERVER Language = English SOAPCLIENT_SERVER_ERROR - SOAP client failed because there was a server error. . MessageId = 0x4007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_SOAPFAULT Language = English SOAPCLIENT_SOAPFAULT - SOAP client failed because there was a SOAP fault for reasons of WU_E_PT_SOAP_* error codes. . MessageId = 0x4008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_PARSEFAULT Language = English SOAPCLIENT_PARSEFAULT_ERROR - SOAP client failed to parse a SOAP fault. . MessageId = 0x4009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_READ Language = English SOAPCLIENT_READ_ERROR - SOAP client failed while reading the response from the server. . MessageId = 0x400A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAPCLIENT_PARSE Language = English SOAPCLIENT_PARSE_ERROR - SOAP client failed to parse the response from the server. . ;// 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 = 0x400B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAP_VERSION Language = English SOAP_E_VERSION_MISMATCH - SOAP client found an unrecognizable namespace for the SOAP envelope. . MessageId = 0x400C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAP_MUST_UNDERSTAND Language = English SOAP_E_MUST_UNDERSTAND - SOAP client was unable to understand a header. . MessageId = 0x400D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAP_CLIENT Language = English SOAP_E_CLIENT - SOAP client found the message was malformed; fix before resending. . MessageId = 0x400E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SOAP_SERVER Language = English SOAP_E_SERVER - The SOAP message could not be processed due to a server error; resend later. . MessageId = 0x400F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_WMI_ERROR Language = English There was an unspecified Windows Management Instrumentation (WMI) error. . MessageId = 0x4010 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_EXCEEDED_MAX_SERVER_TRIPS Language = English The number of round trips to the server exceeded the maximum limit. . MessageId = 0x4011 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SUS_SERVER_NOT_SET Language = English WUServer policy value is missing in the registry. . MessageId = 0x4012 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_DOUBLE_INITIALIZATION Language = English Initialization failed because the object was already initialized. . MessageId = 0x4013 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_INVALID_COMPUTER_NAME Language = English The computer name could not be determined. . MessageId = 0x4015 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_REFRESH_CACHE_REQUIRED Language = English 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. . MessageId = 0x4016 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_BAD_REQUEST Language = English HTTP status 400 - the server could not process the request due to invalid syntax. . MessageId = 0x4017 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_DENIED Language = English HTTP status 401 - the requested resource requires user authentication. . MessageId = 0x4018 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_FORBIDDEN Language = English HTTP status 403 - server understood the request, but declined to fulfill it. . MessageId = 0x4019 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_NOT_FOUND Language = English HTTP status 404 - the server cannot find the requested URI (Uniform Resource Identifier). . MessageId = 0x401A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_BAD_METHOD Language = English HTTP status 405 - the HTTP method is not allowed. . MessageId = 0x401B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_PROXY_AUTH_REQ Language = English HTTP status 407 - proxy authentication is required. . MessageId = 0x401C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT Language = English HTTP status 408 - the server timed out waiting for the request. . MessageId = 0x401D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_CONFLICT Language = English HTTP status 409 - the request was not completed due to a conflict with the current state of the resource. . MessageId = 0x401E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_GONE Language = English HTTP status 410 - requested resource is no longer available at the server. . MessageId = 0x401F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_SERVER_ERROR Language = English HTTP status 500 - an error internal to the server prevented fulfilling the request. . MessageId = 0x4020 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_NOT_SUPPORTED Language = English HTTP status 501 - server does not support the functionality required to fulfill the request. . MessageId = 0x4021 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_BAD_GATEWAY Language = English 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. . MessageId = 0x4022 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_SERVICE_UNAVAIL Language = English HTTP status 503 - the service is temporarily overloaded. . MessageId = 0x4023 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_GATEWAY_TIMEOUT Language = English HTTP status 504 - the request was timed out waiting for a gateway. . MessageId = 0x4024 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_VERSION_NOT_SUP Language = English HTTP status 505 - the server does not support the HTTP protocol version used for the request. . MessageId = 0x4025 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_FILE_LOCATIONS_CHANGED Language = English Operation failed due to a changed file location; refresh internal state and resend. . MessageId = 0x4026 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_REGISTRATION_NOT_SUPPORTED Language = English Operation failed because Windows Update Agent does not support registration with a non-WSUS server. . MessageId = 0x4027 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_NO_AUTH_PLUGINS_REQUESTED Language = English The server returned an empty authentication information list. . MessageId = 0x4028 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_NO_AUTH_COOKIES_CREATED Language = English Windows Update Agent was unable to create any valid authentication cookies. . MessageId = 0x4029 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_INVALID_CONFIG_PROP Language = English A configuration property value was wrong. . MessageId = 0x402A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_CONFIG_PROP_MISSING Language = English A configuration property value was missing. . MessageId = 0x402B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_HTTP_STATUS_NOT_MAPPED Language = English The HTTP request could not be completed and the reason did not correspond to any of the WU_E_PT_HTTP_* error codes. . MessageId = 0x402C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_WINHTTP_NAME_NOT_RESOLVED Language = English ERROR_WINHTTP_NAME_NOT_RESOLVED - the proxy server or target server name cannot be resolved. . MessageId = 0x402D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_LOAD_SHEDDING Language = English The server is shedding load. . MessageId = 0x402E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_CLIENT_ENFORCED_LOAD_SHEDDING Language = English Windows Update Agent is enforcing honoring the service load shedding interval. . MessageId = 0x502D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SAME_REDIR_ID Language = English Windows Update Agent failed to download a redirector cabinet file with a new redirectorId value from the server during the recovery. . MessageId = 0x502E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_NO_MANAGED_RECOVER Language = English A redirector recovery action did not complete because the server is managed. . MessageId = 0x402F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS Language = English External cab file processing completed with some errors. . MessageId = 0x4030 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_INIT_FAILED Language = English The external cab processor initialization did not complete. . MessageId = 0x4031 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_INVALID_FILE_FORMAT Language = English The format of a metadata file was invalid. . MessageId = 0x4032 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_INVALID_METADATA Language = English External cab processor found invalid metadata. . MessageId = 0x4033 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_FAILURE_TO_EXTRACT_DIGEST Language = English The file digest could not be extracted from an external cab file. . MessageId = 0x4034 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_FAILURE_TO_DECOMPRESS_CAB_FILE Language = English An external cab file could not be decompressed. . MessageId = 0x4035 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ECP_FILE_LOCATION_ERROR Language = English External cab processor was unable to get file locations. . MessageId = 0x0436 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_CATALOG_SYNC_REQUIRED Language = English The server does not support category-specific search; Full catalog search has to be issued instead. . MessageId = 0x0437 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SECURITY_VERIFICATION_FAILURE Language = English There was a problem authorizing with the service. . MessageId = 0x0438 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ENDPOINT_UNREACHABLE Language = English There is no route or network connectivity to the endpoint. . MessageId = 0x0439 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_INVALID_FORMAT Language = English The data received does not meet the data contract expectations. . MessageId = 0x043A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_INVALID_URL Language = English The url is invalid. . MessageId = 0x043B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_NWS_NOT_LOADED Language = English Unable to load NWS runtime. . MessageId = 0x043C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_PROXY_AUTH_SCHEME_NOT_SUPPORTED Language = English The proxy auth scheme is not supported. . MessageId = 0x043D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SERVICEPROP_NOTAVAIL Language = English The requested service property is not available. . MessageId = 0x043E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ENDPOINT_REFRESH_REQUIRED Language = English The endpoint provider plugin requires online refresh. . MessageId = 0x043F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ENDPOINTURL_NOTAVAIL Language = English A URL for the requested service endpoint is not available. . MessageId = 0x0440 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ENDPOINT_DISCONNECTED Language = English The connection to the service endpoint died. . MessageId = 0x0441 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_INVALID_OPERATION Language = English The operation is invalid because protocol talker is in an inappropriate state. . ;// Same as WS_E_OBJECT_FAULTED MessageId = 0x0442 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_OBJECT_FAULTED Language = English The object is in a faulted state due to a previous error. . ;// Same as WS_E_NUMERIC_OVERFLOW MessageId = 0x0443 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_NUMERIC_OVERFLOW Language = English The operation would lead to numeric overflow. . ;// Same as WS_E_OPERATION_ABORTED MessageId = 0x0444 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_OPERATION_ABORTED Language = English The operation was aborted. . ;// Same as WS_E_OPERATION_ABANDONED MessageId = 0x0445 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_OPERATION_ABANDONED Language = English The operation was abandoned. . ;// Same as WS_E_QUOTA_EXCEEDED MessageId = 0x0446 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_QUOTA_EXCEEDED Language = English A quota was exceeded. . ;// Same as WS_E_NO_TRANSLATION_AVAILABLE MessageId = 0x0447 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_NO_TRANSLATION_AVAILABLE Language = English The information was not available in the specified language. . ;// Same as WS_E_ADDRESS_IN_USE MessageId = 0x0448 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ADDRESS_IN_USE Language = English The address is already being used. . ;// Same as WS_E_ADDRESS_NOT_AVAILABLE MessageId = 0x0449 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_ADDRESS_NOT_AVAILABLE Language = English The address is not valid for this context. . ;// Same as WS_E_OTHER MessageId = 0x044A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_OTHER Language = English Unrecognized error occurred in the Windows Web Services framework. . ;// Same as WS_E_SECURITY_SYSTEM_FAILURE MessageId = 0x044B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_SECURITY_SYSTEM_FAILURE Language = English A security operation failed in the Windows Web Services framework. . MessageId = 0x4100 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_DATA_BOUNDARY_RESTRICTED Language = English The client is data boundary restricted and needs to talk to a restricted endpoint. . MessageId = 0x4101 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_GENERAL_AAD_CLIENT_ERROR Language = English The client hit an error in retrieving AAD device ticket. . MessageId = 0x4FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_PT_UNEXPECTED Language = English A communication error not covered by another WU_E_PT_* error code. . ;/////////////////////////////////////////////////////////////////////////////// ;// Redirector errors ;// ;// The following errors are generated by the components that download and ;// parse the wuredir.cab ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x5001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_LOAD_XML Language = English The redirector XML document could not be loaded into the DOM class. . MessageId = 0x5002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_S_FALSE Language = English The redirector XML document is missing some required information. . MessageId = 0x5003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_ID_SMALLER Language = English The redirectorId in the downloaded redirector cab is less than in the cached cab. . MessageId = 0x5004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_UNKNOWN_SERVICE Language = English The service ID is not supported in the service environment. . MessageId = 0x5005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_UNSUPPORTED_CONTENTTYPE Language = English The response from the redirector server had an unsupported content type. . MessageId = 0x5006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_INVALID_RESPONSE Language = English The response from the redirector server had an error status or was invalid. . MessageId = 0x5008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_ATTRPROVIDER_EXCEEDED_MAX_NAMEVALUE Language = English The maximum number of name value pairs was exceeded by the attribute provider. . MessageId = 0x5009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_ATTRPROVIDER_INVALID_NAME Language = English The name received from the attribute provider was invalid. . MessageId = 0x500A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_ATTRPROVIDER_INVALID_VALUE Language = English The value received from the attribute provider was invalid. . MessageId = 0x500B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_SLS_GENERIC_ERROR Language = English There was an error in connecting to or parsing the response from the Service Locator Service redirector server. . MessageId = 0x500C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_CONNECT_POLICY Language = English Connections to the redirector server are disallowed by managed policy. . MessageId = 0x500D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_ONLINE_DISALLOWED Language = English The redirector would go online but is disallowed by caller configuration. . MessageId = 0x50FF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REDIRECTOR_UNEXPECTED Language = English The redirector failed for reasons not covered by another WU_E_REDIRECTOR_* error code. . ;/////////////////////////////////////////////////////////////////////////////// ;// SIH errors ;// ;// The following errors are generated by the components that are involved with ;// service-initiated healing. ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x5101 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_VERIFY_DOWNLOAD_ENGINE Language = English Verification of the servicing engine package failed. . MessageId = 0x5102 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_VERIFY_DOWNLOAD_PAYLOAD Language = English Verification of a servicing package failed. . MessageId = 0x5103 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_VERIFY_STAGE_ENGINE Language = English Verification of the staged engine failed. . MessageId = 0x5104 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_VERIFY_STAGE_PAYLOAD Language = English Verification of a staged payload failed. . MessageId = 0x5105 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_ACTION_NOT_FOUND Language = English An internal error occurred where the servicing action was not found. . MessageId = 0x5106 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_SLS_PARSE Language = English There was a parse error in the service environment response. . MessageId = 0x5107 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_INVALIDHASH Language = English A downloaded file failed an integrity check. . MessageId = 0x5108 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_NO_ENGINE Language = English No engine was provided by the server-initiated healing server response. . MessageId = 0x5109 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_POST_REBOOT_INSTALL_FAILED Language = English Post-reboot install failed. . MessageId = 0x510A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_POST_REBOOT_NO_CACHED_SLS_RESPONSE Language = English There were pending reboot actions, but cached SLS response was not found post-reboot. . MessageId = 0x510B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_PARSE Language = English Parsing command line arguments failed. . MessageId = 0x510C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_SECURITY Language = English Security check failed. . MessageId = 0x510D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_PPL Language = English PPL check failed. . MessageId = 0x510E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_POLICY Language = English Execution was disabled by policy. . MessageId = 0x510F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_STDEXCEPTION Language = English A standard exception was caught. . MessageId = 0x5110 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_NONSTDEXCEPTION Language = English A non-standard exception was caught. . MessageId = 0x5111 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_ENGINE_EXCEPTION Language = English The server-initiated healing engine encountered an exception not covered by another WU_E_SIH_* error code. . MessageId = 0x5112 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_BLOCKED_FOR_PLATFORM Language = English You are running SIH Client with cmd not supported on your platform. . MessageId = 0x5113 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_ANOTHER_INSTANCE_RUNNING Language = English Another SIH Client is already running. . MessageId = 0x5114 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_DNSRESILIENCY_OFF Language = English Disable DNS resiliency feature per service configuration. . MessageId = 0x51FF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SIH_UNEXPECTED Language = English There was a failure for reasons not covered by another WU_E_SIH_* error code. . ;/////////////////////////////////////////////////////////////////////////////// ;// 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 = 0xC001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_PRUNED Language = English A driver was skipped. . MessageId = 0xC002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_NOPROP_OR_LEGACY Language = English A property for the driver could not be found. It may not conform with required specifications. . MessageId = 0xC003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_REG_MISMATCH Language = English The registry type read for the driver does not match the expected type. . MessageId = 0xC004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_NO_METADATA Language = English The driver update is missing metadata. . MessageId = 0xC005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_MISSING_ATTRIBUTE Language = English The driver update is missing a required attribute. . MessageId = 0xC006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_SYNC_FAILED Language = English Driver synchronization failed. . MessageId = 0xC007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_NO_PRINTER_CONTENT Language = English Information required for the synchronization of applicable printers is missing. . MessageId = 0xC008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_DEVICE_PROBLEM Language = English After installing a driver update, the updated device has reported a problem. . ;// MessageId 0xCE00 through 0xCEFF are reserved for post-install driver problem codes ;// (see uhdriver.cpp) MessageId = 0xCFFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DRV_UNEXPECTED Language = English A driver error not covered by another WU_E_DRV_* code. . ;////////////////////////////////////////////////////////////////////////////// ;// data store errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x8000 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_SHUTDOWN Language = English An operation failed because Windows Update Agent is shutting down. . MessageId = 0x8001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_INUSE Language = English An operation failed because the data store was in use. . MessageId = 0x8002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_INVALID Language = English The current and expected states of the data store do not match. . MessageId = 0x8003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_TABLEMISSING Language = English The data store is missing a table. . MessageId = 0x8004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_TABLEINCORRECT Language = English The data store contains a table with unexpected columns. . MessageId = 0x8005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_INVALIDTABLENAME Language = English A table could not be opened because the table is not in the data store. . MessageId = 0x8006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_BADVERSION Language = English The current and expected versions of the data store do not match. . MessageId = 0x8007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA Language = English The information requested is not in the data store. . MessageId = 0x8008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_MISSINGDATA Language = English The data store is missing required information or has a NULL in a table column that requires a non-null value. . MessageId = 0x8009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_MISSINGREF Language = English The data store is missing required information or has a reference to missing license terms, file, localized property or linked row. . MessageId = 0x800A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_UNKNOWNHANDLER Language = English The update was not processed because its update handler could not be recognized. . MessageId = 0x800B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_CANTDELETE Language = English The update was not deleted because it is still referenced by one or more services. . MessageId = 0x800C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_LOCKTIMEOUTEXPIRED Language = English The data store section could not be locked within the allotted time. . MessageId = 0x800D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NOCATEGORIES Language = English The category was not added because it contains no parent categories and is not a top-level category itself. . MessageId = 0x800E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_ROWEXISTS Language = English The row was not added because an existing row has the same primary key. . MessageId = 0x800F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_STOREFILELOCKED Language = English The data store could not be initialized because it was locked by another process. . MessageId = 0x8010 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_CANNOTREGISTER Language = English The data store is not allowed to be registered with COM in the current process. . MessageId = 0x8011 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_UNABLETOSTART Language = English Could not create a data store object in another process. . MessageId = 0x8013 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_DUPLICATEUPDATEID Language = English The server sent the same update to the client with two different revision IDs. . MessageId = 0x8014 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_UNKNOWNSERVICE Language = English An operation did not complete because the service is not in the data store. . MessageId = 0x8015 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_SERVICEEXPIRED Language = English An operation did not complete because the registration of the service has expired. . MessageId = 0x8016 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_DECLINENOTALLOWED Language = English A request to hide an update was declined because it is a mandatory update or because it was deployed with a deadline. . MessageId = 0x8017 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_TABLESESSIONMISMATCH Language = English A table was not closed because it is not associated with the session. . MessageId = 0x8018 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_SESSIONLOCKMISMATCH Language = English A table was not closed because it is not associated with the session. . MessageId = 0x8019 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NEEDWINDOWSSERVICE Language = English 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. . MessageId = 0x801A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_INVALIDOPERATION Language = English A request was declined because the operation is not allowed. . MessageId = 0x801B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_SCHEMAMISMATCH Language = English The schema of the current data store and the schema of a table in a backup XML document do not match. . MessageId = 0x801C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_RESETREQUIRED Language = English The data store requires a session reset; release the session and retry with a new session. . MessageId = 0x801D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_IMPERSONATED Language = English A data store operation did not complete because it was requested with an impersonated identity. . MessageId = 0x801E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_DATANOTAVAILABLE Language = English An operation against update metadata did not complete because the data was never received from server. . MessageId = 0x801F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_DATANOTLOADED Language = English An operation against update metadata did not complete because the data was available but not loaded from datastore. . MessageId = 0x8020 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_NOSUCHREVISION Language = English A data store operation did not complete because no such update revision is known. . MessageId = 0x8021 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_NOSUCHUPDATE Language = English A data store operation did not complete because no such update is known. . MessageId = 0x8022 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_EULA Language = English A data store operation did not complete because an update's EULA information is missing. . MessageId = 0x8023 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_SERVICE Language = English A data store operation did not complete because a service's information is missing. . MessageId = 0x8024 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_COOKIE Language = English A data store operation did not complete because a service's synchronization information is missing. . MessageId = 0x8025 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_TIMER Language = English A data store operation did not complete because a timer's information is missing. . MessageId = 0x8026 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_CCR Language = English A data store operation did not complete because a download's information is missing. . MessageId = 0x8027 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_FILE Language = English A data store operation did not complete because a file's information is missing. . MessageId = 0x8028 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_DOWNLOADJOB Language = English A data store operation did not complete because a download job's information is missing. . MessageId = 0x8029 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_NODATA_TMI Language = English A data store operation did not complete because a service's timestamp information is missing. . MessageId = 0x8FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DS_UNEXPECTED Language = English A data store error not covered by another WU_E_DS_* code. . ;///////////////////////////////////////////////////////////////////////////// ;//Inventory Errors ;///////////////////////////////////////////////////////////////////////////// MessageId = 0x9001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVENTORY_PARSEFAILED Language = English Parsing of the rule file failed. . MessageId = 0x9002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVENTORY_GET_INVENTORY_TYPE_FAILED Language = English Failed to get the requested inventory type from the server. . MessageId = 0x9003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVENTORY_RESULT_UPLOAD_FAILED Language = English Failed to upload inventory result to the server. . MessageId = 0x9004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVENTORY_UNEXPECTED Language = English There was an inventory error not covered by another error code. . MessageId = 0x9005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVENTORY_WMI_ERROR Language = English A WMI error occurred when enumerating the instances for a particular class. . ;///////////////////////////////////////////////////////////////////////////// ;//AU Errors ;///////////////////////////////////////////////////////////////////////////// MessageId = 0xA000 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_NOSERVICE Language = English Automatic Updates was unable to service incoming requests. . MessageId = 0xA002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_NONLEGACYSERVER Language = English The old version of the Automatic Updates client has stopped because the WSUS server has been upgraded. . MessageId = 0xA003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_LEGACYCLIENTDISABLED Language = English The old version of the Automatic Updates client was disabled. . MessageId = 0xA004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_PAUSED Language = English Automatic Updates was unable to process incoming requests because it was paused. . MessageId = 0xA005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_NO_REGISTERED_SERVICE Language = English No unmanaged service is registered with AU. . MessageId = 0xA006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_DETECT_SVCID_MISMATCH Language = English The default service registered with AU changed during the search. . MessageId = 0xA007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REBOOT_IN_PROGRESS Language = English A reboot is in progress. . MessageId = 0xA008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_OOBE_IN_PROGRESS Language = English Automatic Updates can't process incoming requests while Windows Welcome is running. . MessageId = 0xAFFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AU_UNEXPECTED Language = English An Automatic Updates error not covered by another WU_E_AU * code. . ;////////////////////////////////////////////////////////////////////////////// ;// update handler errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x2000 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_REMOTEUNAVAILABLE Language = English A request for a remote update handler could not be completed because no remote process is available. . MessageId = 0x2001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_LOCALONLY Language = English A request for a remote update handler could not be completed because the handler is local only. . MessageId = 0x2002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_UNKNOWNHANDLER Language = English A request for an update handler could not be completed because the handler could not be recognized. . MessageId = 0x2003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_REMOTEALREADYACTIVE Language = English A remote update handler could not be created because one already exists. . MessageId = 0x2004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_DOESNOTSUPPORTACTION Language = English A request for the handler to install (uninstall) an update could not be completed because the update does not support install (uninstall). . MessageId = 0x2005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_WRONGHANDLER Language = English An operation did not complete because the wrong handler was specified. . MessageId = 0x2006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_INVALIDMETADATA Language = English A handler operation could not be completed because the update contains invalid metadata. . MessageId = 0x2007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_INSTALLERHUNG Language = English An operation could not be completed because the installer exceeded the time limit. . MessageId = 0x2008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_OPERATIONCANCELLED Language = English An operation being done by the update handler was cancelled. . MessageId = 0x2009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_BADHANDLERXML Language = English An operation could not be completed because the handler-specific metadata is invalid. . MessageId = 0x200A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_CANREQUIREINPUT Language = English A request to the handler to install an update could not be completed because the update requires user input. . MessageId = 0x200B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_INSTALLERFAILURE Language = English The installer failed to install (uninstall) one or more updates. . MessageId = 0x200C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_FALLBACKTOSELFCONTAINED Language = English The update handler should download self-contained content rather than delta-compressed content for the update. . MessageId = 0x200D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_NEEDANOTHERDOWNLOAD Language = English The update handler did not install the update because it needs to be downloaded again. . MessageId = 0x200E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_NOTIFYFAILURE Language = English The update handler failed to send notification of the status of the install (uninstall) operation. . MessageId = 0x200F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_INCONSISTENT_FILE_NAMES Language = English The file names contained in the update metadata and in the update package are inconsistent. . MessageId = 0x2010 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_FALLBACKERROR Language = English The update handler failed to fall back to the self-contained content. . MessageId = 0x2011 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_TOOMANYDOWNLOADREQUESTS Language = English The update handler has exceeded the maximum number of download requests. . MessageId = 0x2012 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_UNEXPECTEDCBSRESPONSE Language = English The update handler has received an unexpected response from CBS. . MessageId = 0x2013 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_BADCBSPACKAGEID Language = English The update metadata contains an invalid CBS package identifier. . MessageId = 0x2014 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_POSTREBOOTSTILLPENDING Language = English The post-reboot operation for the update is still in progress. . MessageId = 0x2015 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_POSTREBOOTRESULTUNKNOWN Language = English The result of the post-reboot operation for the update could not be determined. . MessageId = 0x2016 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_POSTREBOOTUNEXPECTEDSTATE Language = English The state of the update after its post-reboot operation has completed is unexpected. . MessageId = 0x2017 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_NEW_SERVICING_STACK_REQUIRED Language = English The OS servicing stack must be updated before this update is downloaded or installed. . MessageId = 0x2018 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_CALLED_BACK_FAILURE Language = English A callback installer called back with an error. . MessageId = 0x2019 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_CUSTOMINSTALLER_INVALID_SIGNATURE Language = English The custom installer signature did not match the signature required by the update. . MessageId = 0x201A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_UNSUPPORTED_INSTALLCONTEXT Language = English The installer does not support the installation configuration. . MessageId = 0x201B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_INVALID_TARGETSESSION Language = English The targeted session for install is invalid. . MessageId = 0x201C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_DECRYPTFAILURE Language = English The handler failed to decrypt the update files. . MessageId = 0x201D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_HANDLER_DISABLEDUNTILREBOOT Language = English The update handler is disabled until the system reboots. . MessageId = 0x201E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_APPX_NOT_PRESENT Language = English The AppX infrastructure is not present on the system. . MessageId = 0x201F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_NOTREADYTOCOMMIT Language = English The update cannot be committed because it has not been previously installed or staged. . MessageId = 0x2020 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_APPX_INVALID_PACKAGE_VOLUME Language = English The specified volume is not a valid AppX package volume. . MessageId = 0x2021 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_APPX_DEFAULT_PACKAGE_VOLUME_UNAVAILABLE Language = English The configured default storage volume is unavailable. . MessageId = 0x2022 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_APPX_INSTALLED_PACKAGE_VOLUME_UNAVAILABLE Language = English The volume on which the application is installed is unavailable. . MessageId = 0x2023 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_APPX_PACKAGE_FAMILY_NOT_FOUND Language = English The specified package family is not present on the system. . MessageId = 0x2024 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_APPX_SYSTEM_VOLUME_NOT_FOUND Language = English Unable to find a package volume marked as system. . MessageId = 0x2025 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_UA_SESSION_INFO_VERSION_NOT_SUPPORTED Language = English UA does not support the version of OptionalSessionInfo. . MessageId = 0x2026 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_RESERVICING_REQUIRED_BASELINE Language = English This operation cannot be completed. You must install the baseline update(s) before you can install this update. . MessageId = 0x2FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UH_UNEXPECTED Language = English An update handler error not covered by another WU_E_UH_* code. . ;////////////////////////////////////////////////////////////////////////////// ;// download manager errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x6001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_URLNOTAVAILABLE Language = English A download manager operation could not be completed because the requested file does not have a URL. . MessageId = 0x6002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_INCORRECTFILEHASH Language = English A download manager operation could not be completed because the file digest was not recognized. . MessageId = 0x6003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNKNOWNALGORITHM Language = English A download manager operation could not be completed because the file metadata requested an unrecognized hash algorithm. . MessageId = 0x6004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_NEEDDOWNLOADREQUEST Language = English An operation could not be completed because a download request is required from the download handler. . MessageId = 0x6005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_NONETWORK Language = English A download manager operation could not be completed because the network connection was unavailable. . MessageId = 0x6006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_WRONGBITSVERSION Language = English A download manager operation could not be completed because the version of Background Intelligent Transfer Service (BITS) is incompatible. . MessageId = 0x6007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_NOTDOWNLOADED Language = English The update has not been downloaded. . MessageId = 0x6008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_FAILTOCONNECTTOBITS Language = English A download manager operation failed because the download manager was unable to connect the Background Intelligent Transfer Service (BITS). . MessageId = 0x6009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_BITSTRANSFERERROR Language = English A download manager operation failed because there was an unspecified Background Intelligent Transfer Service (BITS) transfer error. . MessageId = 0x600A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOADLOCATIONCHANGED Language = English A download must be restarted because the location of the source of the download has changed. . MessageId = 0x600B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_CONTENTCHANGED Language = English A download must be restarted because the update content changed in a new revision. . MessageId = 0x600C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOADLIMITEDBYUPDATESIZE Language = English A download failed because the current network limits downloads by update size for the update service. . MessageId = 0x600E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNAUTHORIZED Language = English The download failed because the client was denied authorization to download the content. . MessageId = 0x600F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_BG_ERROR_TOKEN_REQUIRED Language = English The download failed because the user token associated with the BITS job no longer exists. . MessageId = 0x6010 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOADSANDBOXNOTFOUND Language = English The sandbox directory for the downloaded update was not found. . MessageId = 0x6011 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOADFILEPATHUNKNOWN Language = English The downloaded update has an unknown file path. . MessageId = 0x6012 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOADFILEMISSING Language = English One or more of the files for the downloaded update is missing. . MessageId = 0x6013 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UPDATEREMOVED Language = English An attempt was made to access a downloaded update that has already been removed. . MessageId = 0x6014 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_READRANGEFAILED Language = English Windows Update couldn't find a needed portion of a downloaded update's file. . MessageId = 0x6016 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNAUTHORIZED_NO_USER Language = English The download failed because the client was denied authorization to download the content due to no user logged on. . MessageId = 0x6017 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNAUTHORIZED_LOCAL_USER Language = English The download failed because the local user was denied authorization to download the content. . MessageId = 0x6018 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNAUTHORIZED_DOMAIN_USER Language = English The download failed because the domain user was denied authorization to download the content. . MessageId = 0x6019 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNAUTHORIZED_MSA_USER Language = English The download failed because the MSA account associated with the user was denied authorization to download the content. . MessageId = 0x601A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_FALLINGBACKTOBITS Language = English The download will be continued by falling back to BITS to download the content. . MessageId = 0x601B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOAD_VOLUME_CONFLICT Language = English Another caller has requested download to a different volume. . MessageId = 0x601C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_SANDBOX_HASH_MISMATCH Language = English The hash of the update's sandbox does not match the expected value. . MessageId = 0x601D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_HARDRESERVEID_CONFLICT Language = English The hard reserve id specified conflicts with an id from another caller. . MessageId = 0x601E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOSVC_REQUIRED Language = English The update has to be downloaded via DO. . MessageId = 0x601F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_DOWNLOADTYPE_CONFLICT Language = English Windows Update only supports one download type per update at one time. The download failure is by design here since the same update with different download type is operating. Please try again later. . MessageId = 0x6FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_DM_UNEXPECTED Language = English There was a download manager error not covered by another WU_E_DM_* error code. . ;////////////////////////////////////////////////////////////////////////////// ;// Setup/SelfUpdate errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0xD001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_INVALID_INFDATA Language = English Windows Update Agent could not be updated because an INF file contains invalid information. . MessageId = 0xD002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_INVALID_IDENTDATA Language = English Windows Update Agent could not be updated because the wuident.cab file contains invalid information. . MessageId = 0xD003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_ALREADY_INITIALIZED Language = English Windows Update Agent could not be updated because of an internal error that caused setup initialization to be performed twice. . MessageId = 0xD004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_NOT_INITIALIZED Language = English Windows Update Agent could not be updated because setup initialization never completed successfully. . MessageId = 0xD005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_SOURCE_VERSION_MISMATCH Language = English Windows Update Agent could not be updated because the versions specified in the INF do not match the actual source file versions. . MessageId = 0xD006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_TARGET_VERSION_GREATER Language = English Windows Update Agent could not be updated because a WUA file on the target system is newer than the corresponding source file. . MessageId = 0xD007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_REGISTRATION_FAILED Language = English Windows Update Agent could not be updated because regsvr32.exe returned an error. . MessageId = 0xD008 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SELFUPDATE_SKIP_ON_FAILURE Language = English An update to the Windows Update Agent was skipped because previous attempts to update have failed. . MessageId = 0xD009 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_SKIP_UPDATE Language = English An update to the Windows Update Agent was skipped due to a directive in the wuident.cab file. . MessageId = 0xD00A Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_UNSUPPORTED_CONFIGURATION Language = English Windows Update Agent could not be updated because the current system configuration is not supported. . MessageId = 0xD00B Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_BLOCKED_CONFIGURATION Language = English Windows Update Agent could not be updated because the system is configured to block the update. . MessageId = 0xD00C Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_REBOOT_TO_FIX Language = English Windows Update Agent could not be updated because a restart of the system is required. . MessageId = 0xD00D Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_ALREADYRUNNING Language = English Windows Update Agent setup is already running. . MessageId = 0xD00E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_REBOOTREQUIRED Language = English Windows Update Agent setup package requires a reboot to complete installation. . MessageId = 0xD00F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_HANDLER_EXEC_FAILURE Language = English Windows Update Agent could not be updated because the setup handler failed during execution. . MessageId = 0xD010 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_INVALID_REGISTRY_DATA Language = English Windows Update Agent could not be updated because the registry contains invalid information. . MessageId = 0xD011 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SELFUPDATE_REQUIRED Language = English Windows Update Agent must be updated before search can continue. . MessageId = 0xD012 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SELFUPDATE_REQUIRED_ADMIN Language = English Windows Update Agent must be updated before search can continue. An administrator is required to perform the operation. . MessageId = 0xD013 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_WRONG_SERVER_VERSION Language = English Windows Update Agent could not be updated because the server does not contain update information for this version. . MessageId = 0xD014 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_DEFERRABLE_REBOOT_PENDING Language = English Windows Update Agent is successfully updated, but a reboot is required to complete the setup. . MessageId = 0xD015 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_NON_DEFERRABLE_REBOOT_PENDING Language = English Windows Update Agent is successfully updated, but a reboot is required to complete the setup. . MessageId = 0xD016 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_FAIL Language = English Windows Update Agent could not be updated because of an unknown error. . MessageId = 0xDFFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SETUP_UNEXPECTED Language = English Windows Update Agent could not be updated because of an error not covered by another WU_E_SETUP_* error code. . ;////////////////////////////////////////////////////////////////////////////// ;// expression evaluator errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0xE001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_UNKNOWN_EXPRESSION Language = English An expression evaluator operation could not be completed because an expression was unrecognized. . MessageId = 0xE002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_INVALID_EXPRESSION Language = English An expression evaluator operation could not be completed because an expression was invalid. . MessageId = 0xE003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_MISSING_METADATA Language = English An expression evaluator operation could not be completed because an expression contains an incorrect number of metadata nodes. . MessageId = 0xE004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_INVALID_VERSION Language = English An expression evaluator operation could not be completed because the version of the serialized expression data is invalid. . MessageId = 0xE005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_NOT_INITIALIZED Language = English The expression evaluator could not be initialized. . MessageId = 0xE006 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_INVALID_ATTRIBUTEDATA Language = English An expression evaluator operation could not be completed because there was an invalid attribute. . MessageId = 0xE007 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_CLUSTER_ERROR Language = English An expression evaluator operation could not be completed because the cluster state of the computer could not be determined. . MessageId = 0xEFFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_EE_UNEXPECTED Language = English There was an expression evaluator error not covered by another WU_E_EE_* error code. . ;////////////////////////////////////////////////////////////////////////////// ;// UI errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0x3001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALLATION_RESULTS_UNKNOWN_VERSION Language = English The results of download and installation could not be read from the registry due to an unrecognized data format version. . MessageId = 0x3002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALLATION_RESULTS_INVALID_DATA Language = English The results of download and installation could not be read from the registry due to an invalid data format. . MessageId = 0x3003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INSTALLATION_RESULTS_NOT_FOUND Language = English The results of download and installation are not available; the operation may have failed to start. . MessageId = 0x3004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TRAYICON_FAILURE Language = English A failure occurred when trying to create an icon in the taskbar notification area. . MessageId = 0x3FFD Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_NON_UI_MODE Language = English Unable to show UI when in non-UI mode; WU client UI modules may not be installed. . MessageId = 0x3FFE Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WUCLTUI_UNSUPPORTED_VERSION Language = English Unsupported version of WU client UI exported functions. . MessageId = 0x3FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_AUCLIENT_UNEXPECTED Language = English There was a user interface error not covered by another WU_E_AUCLIENT_* error code. . ;////////////////////////////////////////////////////////////////////////////// ;// reporter errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0xF001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REPORTER_EVENTCACHECORRUPT Language = English The event cache file was defective. . MessageId = 0xF002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REPORTER_EVENTNAMESPACEPARSEFAILED Language = English The XML in the event namespace descriptor could not be parsed. . MessageId = 0xF003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_EVENT Language = English The XML in the event namespace descriptor could not be parsed. . MessageId = 0xF004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SERVER_BUSY Language = English The server rejected an event because the server was too busy. . MessageId = 0xF005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_CALLBACK_COOKIE_NOT_FOUND Language = English The specified callback cookie is not found. . MessageId = 0xFFFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_REPORTER_UNEXPECTED Language = English There was a reporter error not covered by another error code. . MessageId = 0x7001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_OL_INVALID_SCANFILE Language = English An operation could not be completed because the scan package was invalid. . MessageId = 0x7002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_OL_NEWCLIENT_REQUIRED Language = English An operation could not be completed because the scan package requires a greater version of the Windows Update Agent. . MessageId = 0x7003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_EVENT_PAYLOAD Language = English An invalid event payload was specified. . MessageId = 0x7004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_INVALID_EVENT_PAYLOADSIZE Language = English The size of the event payload submitted is invalid. . MessageId = 0x7005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SERVICE_NOT_REGISTERED Language = English The service is not registered. . MessageId = 0x7FFF Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_OL_UNEXPECTED Language = English Search using the scan package failed. . ;////////////////////////////////////////////////////////////////////////////// ;// WU Metadata Integrity related errors - 0x71FE ;/////////////////////////////////////////////////////////////////////////////// ;/////// ;// Metadata General errors 0x7100 - 0x711F ;/////// MessageId = 0x7100 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_NOOP Language = English No operation was required by update metadata verification. . MessageId = 0x7101 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_CONFIG_INVALID_BINARY_ENCODING Language = English The binary encoding of metadata config data was invalid. . MessageId = 0x7102 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_FETCH_CONFIG Language = English Unable to fetch required configuration for metadata signature verification. . MessageId = 0x7104 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_INVALID_PARAMETER Language = English A metadata verification operation failed due to an invalid parameter. . MessageId = 0x7105 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_UNEXPECTED Language = English A metadata verification operation failed due to reasons not covered by another error code. . MessageId = 0x7106 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_NO_VERIFICATION_DATA Language = English None of the update metadata had verification data, which may be disabled on the update server. . MessageId = 0x7107 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_BAD_FRAGMENTSIGNING_CONFIG Language = English The fragment signing configuration used for verifying update metadata signatures was bad. . MessageId = 0x7108 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_FAILURE_PROCESSING_FRAGMENTSIGNING_CONFIG Language = English There was an unexpected operational failure while parsing fragment signing configuration. . ;/////// ;// Metadata XML errors 0x7120 - 0x713F ;/////// MessageId = 0x7120 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_MISSING Language = English Required xml data was missing from configuration. . MessageId = 0x7121 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_FRAGMENTSIGNING_MISSING Language = English Required fragmentsigning data was missing from xml configuration. . MessageId = 0x7122 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_MODE_MISSING Language = English Required mode data was missing from xml configuration. . MessageId = 0x7123 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_MODE_INVALID Language = English An invalid metadata enforcement mode was detected. . MessageId = 0x7124 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_VALIDITY_INVALID Language = English An invalid timestamp validity window configuration was detected. . MessageId = 0x7125 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_LEAFCERT_MISSING Language = English Required leaf certificate data was missing from xml configuration. . MessageId = 0x7126 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_INTERMEDIATECERT_MISSING Language = English Required intermediate certificate data was missing from xml configuration. . MessageId = 0x7127 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_LEAFCERT_ID_MISSING Language = English Required leaf certificate id attribute was missing from xml configuration. . MessageId = 0x7128 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_XML_BASE64CERDATA_MISSING Language = English Required certificate base64CerData attribute was missing from xml configuration. . ;/////// ;// Metadata Signature/Hash-related errors 0x7140 - 0x714F ;/////// MessageId = 0x7140 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_BAD_SIGNATURE Language = English The metadata for an update was found to have a bad or invalid digital signature. . MessageId = 0x7141 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_UNSUPPORTED_HASH_ALG Language = English An unsupported hash algorithm for metadata verification was specified. . MessageId = 0x7142 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_SIGNATURE_VERIFY_FAILED Language = English An error occurred during an update's metadata signature verification. . ;/////// ;// Metadata Certificate Chain trust related errors 0x7150 - 0x715F ;/////// MessageId = 0x7150 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATATRUST_CERTIFICATECHAIN_VERIFICATION Language = English An failure occurred while verifying trust for metadata signing certificate chains. . MessageId = 0x7151 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATATRUST_UNTRUSTED_CERTIFICATECHAIN Language = English A metadata signing certificate had an untrusted certificate chain. . ;/////// ;// Metadata Timestamp Token/Signature errors 0x7160 - 0x717F ;/////// MessageId = 0x7160 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_MISSING Language = English An expected metadata timestamp token was missing. . MessageId = 0x7161 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_VERIFICATION_FAILED Language = English A metadata Timestamp token failed verification. . MessageId = 0x7162 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_UNTRUSTED Language = English A metadata timestamp token signer certificate chain was untrusted. . MessageId = 0x7163 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_VALIDITY_WINDOW Language = English A metadata signature timestamp token was no longer within the validity window. . MessageId = 0x7164 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_SIGNATURE Language = English A metadata timestamp token failed signature validation . MessageId = 0x7165 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_CERTCHAIN Language = English A metadata timestamp token certificate failed certificate chain verification. . MessageId = 0x7166 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_REFRESHONLINE Language = English A failure occurred when refreshing a missing timestamp token from the network. . MessageId = 0x7167 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_ALL_BAD Language = English All update metadata verification timestamp tokens from the timestamp token cache are invalid. . MessageId = 0x7168 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_NODATA Language = English No update metadata verification timestamp tokens exist in the timestamp token cache. . MessageId = 0x7169 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_CACHELOOKUP Language = English An error occurred during cache lookup of update metadata verification timestamp token. . MessageId = 0x717E Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_VALIDITYWINDOW_UNEXPECTED Language = English An metadata timestamp token validity window failed unexpectedly due to reasons not covered by another error code. . MessageId = 0x717F Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_TIMESTAMP_TOKEN_UNEXPECTED Language = English An metadata timestamp token verification operation failed due to reasons not covered by another error code. . ;/////// ;// Metadata Certificate-Related errors 0x7180 - 0x719F ;/////// MessageId = 0x7180 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_CERT_MISSING Language = English An expected metadata signing certificate was missing. . MessageId = 0x7181 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_LEAFCERT_BAD_TRANSPORT_ENCODING Language = English The transport encoding of a metadata signing leaf certificate was malformed. . MessageId = 0x7182 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_INTCERT_BAD_TRANSPORT_ENCODING Language = English The transport encoding of a metadata signing intermediate certificate was malformed. . MessageId = 0x7183 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_METADATA_CERT_UNTRUSTED Language = English A metadata certificate chain was untrusted. . ;////////////////////////////////////////////////////////////////////////////// ;// WU Task related errors ;/////////////////////////////////////////////////////////////////////////////// MessageId = 0xB001 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WUTASK_INPROGRESS Language = English The task is currently in progress. . MessageId = 0xB002 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WUTASK_STATUS_DISABLED Language = English The operation cannot be completed since the task status is currently disabled. . MessageId = 0xB003 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WUTASK_NOT_STARTED Language = English The operation cannot be completed since the task is not yet started. . MessageId = 0xB004 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WUTASK_RETRY Language = English The task was stopped and needs to be run again to complete. . MessageId = 0xB005 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WUTASK_CANCELINSTALL_DISALLOWED Language = English Cannot cancel a non-scheduled install. . ;////////////////////////////////////////////////////////////////////////////// ;// Hardware Capability related errors ;//// MessageId = 0xB101 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UNKNOWN_HARDWARECAPABILITY Language = English Hardware capability meta data was not found after a sync with the service. . MessageId = 0xB102 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_BAD_XML_HARDWARECAPABILITY Language = English Hardware capability meta data was malformed and/or failed to parse. . MessageId = 0xB103 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_WMI_NOT_SUPPORTED Language = English Unable to complete action due to WMI dependency, which isn't supported on this platform. . MessageId = 0xB104 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_UPDATE_MERGE_NOT_ALLOWED Language = English Merging of the update is not allowed . MessageId = 0xB105 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SKIPPED_UPDATE_INSTALLATION Language = English Installing merged updates only. So skipping non mergeable updates. . ;////////////////////////////////////////////////////////////////////////////// ;// SLS related errors - 0xB201 ;//// ;/////// ;// SLS General errors 0xB201 - 0xB2FF ;/////// MessageId = 0xB201 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_SLS_INVALID_REVISION Language = English SLS response returned invalid revision number. . ;////////////////////////////////////////////////////////////////////////////// ;// trust related errors - 0xB301 ;//// ;/////// ;// trust General errors 0xB301 - 0xB3FF ;/////// MessageId = 0xB301 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_FILETRUST_DUALSIGNATURE_RSA Language = English File signature validation fails to find valid RSA signature on infrastructure payload. . MessageId = 0xB302 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_FILETRUST_DUALSIGNATURE_ECC Language = English File signature validation fails to find valid ECC signature on infrastructure payload. . MessageId = 0xB303 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TRUST_SUBJECT_NOT_TRUSTED Language = English The subject is not trusted by WU for the specified action. . MessageId = 0xB304 Facility = WindowsUpdate Severity = Error SymbolicName = WU_E_TRUST_PROVIDER_UNKNOWN Language = English Unknown trust provider for WU. . ;#endif //_WUERROR_ ================================================ FILE: LegacyUpdate/wuguid.cpp ================================================ #include #include #include DEFINE_GUID(CLSID_UpdateInstaller, 0xd2e0fe7f, 0xd23e, 0x48e1, 0x93, 0xc0, 0x6f, 0xa8, 0xcc, 0x34, 0x64, 0x74); DEFINE_GUID(IID_IUpdateInstaller, 0x7b929c68, 0xccdc, 0x4226, 0x96, 0xb1, 0x87, 0x24, 0x60, 0x0b, 0x54, 0xc2); DEFINE_GUID(IID_IUpdateInstaller4, 0xef8208ea, 0x2304, 0x492d, 0x91, 0x09, 0x23, 0x81, 0x3b, 0x09, 0x58, 0xe1); DEFINE_GUID(CLSID_AutomaticUpdates, 0xbfe18e9c, 0x6d87, 0x4450, 0xb3, 0x7c, 0xe0, 0x2f, 0x0b, 0x37, 0x38, 0x03); DEFINE_GUID(IID_IAutomaticUpdates, 0x673425bf, 0xc082, 0x4c7c, 0xbd, 0xfd, 0x56, 0x9e, 0xd4, 0x53, 0x17, 0xc5); DEFINE_GUID(CLSID_SystemInformation, 0xc01b9ba0, 0xbea7, 0x41ba, 0xb6, 0x04, 0xd0, 0xa3, 0x6f, 0x46, 0x91, 0x33); DEFINE_GUID(IID_ISystemInformation, 0xada74191, 0x3b75, 0x4b40, 0x9b, 0xd8, 0x7f, 0x29, 0x30, 0x7b, 0xb7, 0xa5); interface ISystemInformation; interface IAutomaticUpdates; interface IUpdateInstaller4; EXTERN_C const GUID IID_ISystemInformation; EXTERN_C const GUID IID_IAutomaticUpdates; EXTERN_C const GUID IID_IUpdateInstaller4; DEFINE_UUIDOF(ISystemInformation, IID_ISystemInformation); DEFINE_UUIDOF(IAutomaticUpdates, IID_IAutomaticUpdates); DEFINE_UUIDOF(IUpdateInstaller4, IID_IUpdateInstaller4); ================================================ FILE: LegacyUpdate.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.14.36408.4 d17.14 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LegacyUpdate", "LegacyUpdate\LegacyUpdate.vcxproj", "{E9142706-8E21-4ECE-80F8-D3F7B95C6F27}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Debug|x64.ActiveCfg = Debug|x64 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Debug|x64.Build.0 = Debug|x64 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Debug|x86.ActiveCfg = Debug|Win32 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Debug|x86.Build.0 = Debug|Win32 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Release|x64.ActiveCfg = Release|x64 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Release|x64.Build.0 = Release|x64 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Release|x86.ActiveCfg = Release|Win32 {E9142706-8E21-4ECE-80F8-D3F7B95C6F27}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {64E0615D-0D1F-45F1-9634-2EE6D534187B} EndGlobalSection EndGlobal ================================================ FILE: Makefile ================================================ export CI ?= 0 export SIGN ?= 0 export DEBUG ?= 1 all: setup activex: +$(MAKE) -C LegacyUpdate launcher: +$(MAKE) -C launcher nsisplugin: +$(MAKE) -C nsisplugin setup: activex launcher nsisplugin +$(MAKE) -C setup setup-nt4: nsisplugin +$(MAKE) -C setup nt4 nt4: setup-nt4 clean: +$(MAKE) -C LegacyUpdate clean +$(MAKE) -C launcher clean +$(MAKE) -C nsisplugin clean +$(MAKE) -C setup clean clean-nt4: +$(MAKE) -C nsisplugin clean +$(MAKE) -C setup clean .PHONY: all activex launcher nsisplugin setup nt4 clean clean-nt4 ================================================ FILE: README.md ================================================ # [Legacy Update](http://legacyupdate.net/) [![wakatime](https://wakatime.com/badge/user/b9fcf8ba-3fce-41a4-a480-d3fe6074a1ad/project/c9516ff1-10b9-41da-82fb-b86b24b0acc8.svg)](https://wakatime.com/badge/user/b9fcf8ba-3fce-41a4-a480-d3fe6074a1ad/project/c9516ff1-10b9-41da-82fb-b86b24b0acc8) [![Build](https://github.com/LegacyUpdate/LegacyUpdate/actions/workflows/build.yml/badge.svg)](https://github.com/LegacyUpdate/LegacyUpdate/actions/workflows/build.yml) Since Windows XP was discontinued in 2014, followed by Windows 7 in 2020, Microsoft has closed services they depend on, such as Windows Update. There are also design flaws with these earlier versions of Windows Update, which make them difficult to get working on new installations. Legacy Update can install all relevant updates necessary to fix access to the Windows Update service on unsupported versions of Windows. These versions of Windows may display the error “Windows could not search for new updates: Windows Update encountered an unknown error” with error code **80072EFE**, or may simply never finish checking for updates. Legacy Update identifies the updates your system lacks, and installs them automatically, restoring the Windows Update service to full functionality. Windows Update provides many optional and recommended updates, in addition to drivers for your system, but Windows XP and 2000 can only install critical security updates through the built-in Automatic Updates feature. **Legacy Update** revives the original Windows Update website - the only way to see and install every update available for your system. Legacy Update also restores access to **Windows Ultimate Extras** on Windows Vista Ultimate. Legacy Update also restores connectivity to some websites in Internet Explorer, and other programs that use the Windows built-in networking functionality. This includes **Windows Product Activation** on Windows XP and Windows Server 2003, allowing you to activate these versions of Windows online in seconds (a legitimate product key is [still required](https://legacyupdate.net/faq/security)). Just want to appreciate the nostalgia of the classic Windows Update website? Legacy Update can also be installed on Windows 10 and 11. This works even on versions of these OSes that have removed Internet Explorer. Legacy Update won’t modify your Windows 10 or 11 installation. > *If this website helped you to update your old PCs, please consider [leaving a tip](https://ko-fi.com/adamdemasi) to help me pay for the server costs. Thank you!* ## Download Download the latest version from the [Releases](https://github.com/LegacyUpdate/LegacyUpdate/releases) page of this repo, or from [**legacyupdate.net**](https://legacyupdate.net/). You can also download the [latest nightly build](https://nightly.link/LegacyUpdate/LegacyUpdate/workflows/build/main/artifact.zip), based on the current development work. Nightly builds are not guaranteed to be stable. 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 Internet Explorer security settings to intercept requests to the **update.microsoft.com** domain, because the Microsoft Wuweb.dll control has safety measures ensuring it can only be used by 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 us to extend it with convenient features not possible with JavaScript alone. Particularly, we have “forward-ported” the control to add support for Windows Vista and later, which introduces extra challenges such as User Account Control (UAC) and Internet Explorer’s Protected Mode. ### Building The project is built using [MinGW-w64](https://www.mingw-w64.org/) on Linux. You can test much of the project using your running version of Windows, although for best results you should test using a virtual machine of Windows XP, Windows Vista, and Windows 7. Take snapshots of your VMs - this will make it far easier to test update scenarios. You will need to install: * [MinGW-w64](https://www.mingw-w64.org/) for i686 and x86_64 * [NSIS](https://nsis.sourceforge.io/) * [UPX](https://upx.github.io/) * [Wine](https://www.winehq.org/) development tools Run the following command to install build dependencies. This command specific to 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 libwine-dev make mingw-w64-i686-dev mingw-w64-x86-64-dev nsis upx-ucl ``` If you use Debian/Ubuntu’s build of NSIS, please note that it is compiled for Pentium II and later, and will fail to launch on Pentium, AMD K6, and other CPUs lacking SSE instructions. If you want to support these CPUs, run `./build/fix-nsis.sh` to patch the NSIS exehead binaries with a build that supports these CPUs. ### Testing A barebones Visual Studio project is included to help with debugging. For debugging, if running on Windows XP with IE8, consider installing [Utilu IE Collection](https://www.utilu.com/iecollection/). IE6/IE7 are more convenient for debugging the native code because of their simplistic single-process model. Visual Studio is able to launch it and directly attach to the process the code is running in. Otherwise, you will need to manually find and attach the debugger to the IE child process hosting the website and ActiveX control. 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` * For PowerShell: `$(SystemRoot)\System32\WindowsPowerShell\v1.0\powershell.exe` (or SysWOW64 to test the 32-bit build on 64-bit Windows) 3. If using IE, set the Command Arguments field to `http://legacyupdate.net/windowsupdate/v6/`, or any other URL you want to use for debugging You can directly test the ActiveX control using PowerShell: ```powershell PS> $lu = New-Object -ComObject LegacyUpdate.Control PS> $lu.CheckControl() True ``` If set up correctly, `CheckControl()` should return `True`. This is only supported in debug builds - release builds throw `E_ACCESSDENIED`. ## Setup and Launcher Legacy Update makes use of the [Nullsoft Scriptable Install System](https://nsis.sourceforge.io/) (NSIS) for its setup program. NSIS provides a scripting language we use to install prerequisite updates. We extend NSIS with a custom plugin to provide features that improve the setup user experience. As of 1.10, Legacy Update includes a “launcher” program, responsible for tasks including launching the website in Internet Explorer, repairing a broken installation of Legacy Update, and continuing setup when the system restarts into Winlogon “setup mode”. Both are compiled using MinGW-w64 and are written in C to keep things simple. ## Website source code I haven’t yet open sourced the website. This is because much of it is Microsoft code - just with patches I’ve made to remove Microsoft trademark branding, switch it to the Legacy Update ActiveX control, and make some quality-of-life improvements. It doesn’t feel appropriate to put an open source license on something I don’t own. Since it’s almost entirely client-side HTML and JavaScript, you can still review it by poking around the source on the website. 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. I haven’t worked on this in a while, but I’ll open source it when I feel it’s ready enough. ## 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. ## Credits Legacy Update was started and is primarily developed by [Adam Demasi (@kirb)](https://kirb.me/), with contributions from: * [Douglas R. Reno (@renodr)](https://github.com/renodr): Build system improvements and other project maintenance. Check out his awesome work on [Linux From Scratch](https://www.linuxfromscratch.org/)! * [Jonas Deutz (@CHA0SHACKER)](https://github.com/CHA0SHACKER): Helps us with finding and sorting through the crazy number of patches. Check out his [update archives](https://archive.org/details/@cha0shacker)! * [@stdin82](https://github.com/stdin82): Helped us find some patches on the Windows Update server, and other general help on the issue tracker. * The [Windows Update Restored](https://windowsupdaterestored.com/) team: [@CaptainTER06](https://github.com/CaptainTER06), [@TheOneGoofAli](https://github.com/TheOneGoofAli), [et al.](https://windowsupdaterestored.com/) Legacy Update NT is built thanks to the great research and documentation on Windows NT 4.0 updates by [ZCM Services](https://nt4ref.zcm.com.au/), [Bear Windows](https://bearwindows.zcm.com.au/), [MDGx](https://www.mdgx.com/), and members of [MSFN](https://msfn.org/). We make use of some portions of the Windows SDK, [MinGW-w64](https://www.mingw-w64.org/), and [NSIS](https://nsis.sourceforge.io/). ## License Licensed under the Apache License, version 2.0. Refer to [LICENSE.md](https://github.com/LegacyUpdate/LegacyUpdate/blob/main/LICENSE.md). The repository includes some portions of NSIS, licensed under the [zlib/libpng license](https://nsis.sourceforge.io/License). It also 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). ================================================ FILE: build/fix-nsis.sh ================================================ #!/bin/bash # Fixes NSIS binaries so they run on Pentium/486. Debian's build of NSIS is compiled with MinGW, # but they lack any -mcpu flag, so the binaries receive a default of i686. To fix this, we'll # download the official Windows build of NSIS and extract its binaries. We only handle stubs though, # because we provide our own plugin builds in this repo. set -e if [[ $UID != 0 ]]; then echo "This script needs to be run as root (sorry)" >&2 exit 1 fi if [[ ! -d /usr/share/nsis/Stubs ]]; then echo "NSIS not installed, or Stubs directory is broken" >&2 exit 1 fi if [[ -d /usr/share/nsis/Stubs_old ]]; then echo "NSIS stubs are already fixed" >&2 exit 0 fi apt-get install -qy curl p7zip-full mkdir /tmp/nsis cd /tmp/nsis curl -fSL https://prdownloads.sourceforge.net/nsis/NSIS%203/3.11/nsis-3.11-setup.exe -o nsis.exe 7z x nsis.exe mv /usr/share/nsis/Stubs{,_old} cp -ra Stubs /usr/share/nsis/Stubs rm -rf /tmp/nsis ================================================ FILE: build/get-nt4-patches.sh ================================================ #!/bin/bash # Get dependencies for NT4 build set -e cd "$(dirname "$0")"/.. for i in usb; do echo "Downloading $i..." curl -fL https://content.legacyupdate.net/legacyupdate/patches/nt4/$i.zip -o /tmp/$i.zip mkdir -p setup/patches/nt4/$i unzip -o /tmp/$i.zip -d setup/patches/nt4/$i rm /tmp/$i.zip done ================================================ FILE: build/getvc.cmd ================================================ @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 ================================================ FILE: build/shared.mk ================================================ _COMMA = , CLANG ?= 0 ARCH ?= 32 ifeq ($(ARCH),64) TAG = x86_64 else TAG = i686 endif PREFIX = $(TAG)-w64-mingw32- EXT = $(if $(findstring .exe,$(BIN)),exe,dll) ifeq ($(DEF),) DEF = $(patsubst %.$(EXT),%.def,$(BIN)) EMITDEF = 1 endif STATIC = $(patsubst %.$(EXT),%.a,$(BIN)) OBJDIR = obj/$(TAG) OBJ = $(foreach file,$(FILES),$(OBJDIR)/$(notdir $(basename $(file)).o)) DEFDLL = $(foreach file,$(DEFFILES),$(OBJDIR)/lib$(notdir $(basename $(file)).a)) RES = $(foreach file,$(RCFILES),$(OBJDIR)/$(notdir $(basename $(file)).res)) MSG = $(foreach file,$(MCFILES),$(OBJDIR)/$(notdir $(basename $(file)).bin)) IDL = $(foreach file,$(IDLFILES),$(OBJDIR)/$(notdir $(basename $(file))_i.c)) IDL_H = $(foreach file,$(IDLFILES),$(OBJDIR)/$(notdir $(basename $(file))_i.h)) IDL_P = $(foreach file,$(IDLFILES),$(OBJDIR)/$(notdir $(basename $(file))_p.c)) DLLDATA = $(foreach file,$(IDLFILES),$(OBJDIR)/$(notdir $(basename $(file))_dlldata.c)) TLB = $(foreach file,$(IDLFILES),$(OBJDIR)/$(notdir $(basename $(file)).tlb)) ifeq ($(CLANG),1) CC = $(PREFIX)clang++ else CC = $(PREFIX)gcc endif RC = $(PREFIX)windres MC = $(PREFIX)windmc WIDL = $(PREFIX)widl DLLTOOL = $(PREFIX)dlltool C_LANG ?= c CXX_LANG ?= c++ override DEBUG := $(or $(DEBUG),1) CFLAGS += \ -municode \ -DUNICODE \ -D_UNICODE \ -DWIN32_LEAN_AND_MEAN \ $(if $(filter 1,$(DEBUG)),-D_DEBUG -g,-DNDEBUG -Os -s) \ -fPIE \ -ffunction-sections \ -fdata-sections \ -fno-unwind-tables \ -fno-asynchronous-unwind-tables \ -fno-exceptions \ $(if $(EMITDEF),-flto,) \ -Wall \ -Wextra \ -Wpedantic \ -Wno-unused-parameter \ -Wno-unused-variable \ -Wno-unknown-pragmas \ -Wno-cast-function-type \ -Wno-missing-field-initializers \ -I../include \ -I../shared \ -I$(OBJDIR) \ -include stdafx.h ifeq ($(CLANG),1) CFLAGS += \ -Wno-dollar-in-identifier-extension \ -Wno-missing-braces \ -Wno-duplicate-decl-specifier endif CXXFLAGS += \ $(CFLAGS) \ -std=c++11 \ -fno-rtti LDFLAGS += \ -nodefaultlibs \ -nostartfiles \ -nostdlib \ -Wl,--gc-sections \ -Wl,--no-seh \ -Wl,--nxcompat \ -Wl,--enable-auto-image-base \ -Wl,--enable-stdcall-fixup \ -Wl,--out-implib,$(STATIC) \ $(if $(EMITDEF),-Wl$(_COMMA)--output-def$(_COMMA)$(DEF),$(DEF)) \ $(if $(filter 1,$(DEBUG)),,-Wl$(_COMMA)--strip-all) \ -lmsvcrt ifeq ($(CLANG),1) LDFLAGS += \ -static else LDFLAGS += \ -lgcc endif RCFLAGS += \ -O coff \ -I$(OBJDIR) \ -I../shared MCFLAGS += IDLFLAGS += \ -m$(ARCH) \ --win$(ARCH) \ -Oicf \ -Ishared \ -I/usr/include/wine/wine/windows \ -L/usr/lib/x86_64-linux-gnu/wine/x86_64-windows ifeq ($(ARCH),64) RCFLAGS += -F pe-x86-64 else CFLAGS += -march=i486 RCFLAGS += -F pe-i386 endif all:: all-32: +$(MAKE) internal-all ARCH=32 all-64: +$(MAKE) internal-all ARCH=64 internal-all:: $(BIN) ifeq ($(SIGN),1) ../build/sign.sh $(BIN) endif $(BIN): $(OBJ) $(RES) $(CC) $^ $(CFLAGS) $(LDFLAGS) -o $@ $(DEF): ; $(OBJDIR): mkdir -p $@ $(OBJDIR)/lib%.a: ../LegacyUpdate/%.def $(DLLTOOL) -d $< -l $@ -D $(notdir $(basename $<).dll) $(OBJDIR)/%.o: %.c $(CC) -x $(C_LANG) $< $(CFLAGS) -c -o $@ $(OBJDIR)/%.o: %.cpp $(CC) -x $(CXX_LANG) $< $(CXXFLAGS) -c -o $@ $(OBJDIR)/%.o: ../shared/%.c $(CC) -x $(C_LANG) $< $(CFLAGS) -c -o $@ $(OBJDIR)/%.o: ../shared/%.cpp $(CC) -x $(CXX_LANG) $< $(CXXFLAGS) -c -o $@ $(OBJDIR)/%.o: $(OBJDIR)/%.c $(CC) -x $(C_LANG) $< $(CFLAGS) -c -o $@ $(OBJDIR)/%.o: $(OBJDIR)/%.c $(CC) -x $(C_LANG) $< $(CFLAGS) -c -o $@ $(OBJDIR)/%.res: %.rc $(RC) $< $(RCFLAGS) -o $@ $(OBJDIR)/%.bin: %.mc $(MC) $< $(MCFLAGS) -h $(dir $@) -r $(dir $@) $(OBJDIR)/%.tlb: %.idl | $(OBJDIR) $(WIDL) $(IDLFLAGS) -t -o $@ $< $(OBJDIR)/%_i.h: %.idl | $(OBJDIR) $(WIDL) $(IDLFLAGS) -h -o $@ $< $(OBJDIR)/%_i.c: %.idl | $(OBJDIR) $(WIDL) $(IDLFLAGS) -u -o $@ $< $(OBJDIR)/%_p.c: %.idl | $(OBJDIR) $(WIDL) $(IDLFLAGS) -p -o $@ $< $(OBJDIR)/%_dlldata.c: %.idl | $(OBJDIR) $(WIDL) $(IDLFLAGS) --dlldata-only -o $@ $(notdir $(basename $<)) $(OBJ): stdafx.h $(IDL_H) $(OBJ) $(RES) $(MSG): | $(OBJDIR) $(RES): $(MSG) $(TLB) clean:: rm -rf obj .PHONY: all all-32 all-64 internal-all clean ================================================ FILE: build/sign.cmd ================================================ @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% ================================================ FILE: build/sign.sh ================================================ #!/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[@]}" ================================================ FILE: include/com/ComClass.h ================================================ #pragma once #include #include #include template class ComClass : public TInterface { protected: TImpl *m_pParent; public: ComClass(TImpl *pParent) : m_pParent(pParent) {} // IUnknown delegation STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { return m_pParent->QueryInterface(riid, ppvObject); } STDMETHODIMP_(ULONG) AddRef(void) { return m_pParent->AddRef(); } STDMETHODIMP_(ULONG) Release(void) { return m_pParent->Release(); } }; ================================================ FILE: include/com/ComPtr.h ================================================ #pragma once #ifdef __cplusplus template class CComPtr { public: TInterface *pointer; void *operator new(size_t) = delete; void *operator new[](size_t) = delete; void operator delete(void *ptr) = delete; void operator delete[](void *ptr) = delete; CComPtr(void) { this->pointer = NULL; } CComPtr(TInterface *ptr) { this->pointer = ptr; if (this->pointer != NULL) { this->pointer->AddRef(); } } CComPtr(CComPtr &other) : CComPtr(other.pointer) {} CComPtr(CComPtr &&other) { other.Swap(*this); } ~CComPtr(void) { TInterface *pointer = this->pointer; if (pointer != NULL) { this->pointer = NULL; pointer->Release(); } } operator TInterface *(void) { return this->pointer; } operator TInterface *() const { return this->pointer; } TInterface &operator *(void) { return *this->pointer; } TInterface &operator *() const { return *this->pointer; } TInterface **operator &(void) { return &this->pointer; } TInterface **operator &() const { return &this->pointer; } TInterface *operator ->(void) { return this->pointer; } TInterface *operator ->() const { return this->pointer; } TInterface *operator =(TInterface *other) { if (this->pointer != other) { TInterface *oldPtr = this->pointer; this->pointer = other; if (this->pointer != NULL) { this->pointer->AddRef(); } if (oldPtr != NULL) { oldPtr->Release(); } } return this->pointer; } TInterface *operator =(const CComPtr &other) { if (this->pointer != other.pointer) { TInterface *oldPtr = this->pointer; this->pointer = other.pointer; if (this->pointer != NULL) { this->pointer->AddRef(); } if (oldPtr != NULL) { oldPtr->Release(); } } return this->pointer; } bool operator !() const { return this->pointer == NULL; } bool operator <(TInterface *other) const { return this->pointer < other; } bool operator ==(TInterface *other) const { return this->pointer == other; } bool operator ==(const CComPtr &other) const { return this->pointer == other; } void Release(void) { this->~CComPtr(); } TInterface *Detach(void) { TInterface *ptr = this->pointer; this->pointer = NULL; return ptr; } void Swap(CComPtr &other) { TInterface *ptr = this->pointer; this->pointer = other.pointer; other.pointer = ptr; } HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) { return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(TInterface), (void **)&this->pointer); } HRESULT CoCreateInstance(REFCLSID rclsid, REFIID riid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) { return ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, (void **)&this->pointer); } }; #endif ================================================ FILE: include/com/IDispatchImpl.h ================================================ #pragma once #include #include #include #include #include "ComPtr.h" template class IDispatchImpl : public TImpl { private: CComPtr m_pTypeInfo; public: // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { if (ppvObject == NULL) { return E_POINTER; } *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IDispatch) || IsEqualIID(riid, __uuidof(TImpl))) { *ppvObject = (TImpl *)this; this->AddRef(); return S_OK; } return E_NOINTERFACE; } // IDispatch STDMETHODIMP GetTypeInfoCount(UINT *pctinfo) { if (pctinfo == NULL) { return E_POINTER; } *pctinfo = 1; return S_OK; } STDMETHODIMP GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) { if (ppTInfo == NULL) { return E_POINTER; } *ppTInfo = NULL; if (iTInfo != 0) { return DISP_E_BADINDEX; } if (m_pTypeInfo == NULL) { if (plibid == NULL) { return E_NOTIMPL; } CComPtr pTypeLib; HRESULT hr = LoadRegTypeLib(*plibid, 1, 0, LOCALE_NEUTRAL, &pTypeLib); CHECK_HR_OR_RETURN(L"LoadRegTypeLib"); hr = pTypeLib->GetTypeInfoOfGuid(__uuidof(TImpl), &m_pTypeInfo); CHECK_HR_OR_RETURN(L"GetTypeInfoOfGuid"); } *ppTInfo = m_pTypeInfo; m_pTypeInfo->AddRef(); return S_OK; } STDMETHODIMP GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) { if (rgszNames == NULL || rgDispId == NULL) { return E_POINTER; } if (!IsEqualIID(riid, IID_NULL)) { return DISP_E_UNKNOWNINTERFACE; } CComPtr pTypeInfo; HRESULT hr = GetTypeInfo(0, lcid, &pTypeInfo); CHECK_HR_OR_RETURN(L"GetTypeInfo"); return pTypeInfo->GetIDsOfNames(rgszNames, cNames, rgDispId); } STDMETHODIMP Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) { if (!IsEqualIID(riid, IID_NULL)) { return DISP_E_UNKNOWNINTERFACE; } CComPtr pTypeInfo; HRESULT hr = GetTypeInfo(0, lcid, &pTypeInfo); CHECK_HR_OR_RETURN(L"GetTypeInfo"); return pTypeInfo->Invoke(this, dispIdMember, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); } }; ================================================ FILE: include/com/IOleInPlaceActiveObjectImpl.h ================================================ #pragma once #include #include #include #include "ComClass.h" template class IOleInPlaceActiveObjectImpl : public ComClass { public: IOleInPlaceActiveObjectImpl(TImpl *pParent) : ComClass(pParent) {} // IOleWindow STDMETHODIMP GetWindow(HWND *phwnd) { if (phwnd == NULL) { return E_POINTER; } *phwnd = this->m_pParent->m_innerHwnd; return *phwnd == NULL ? E_FAIL : S_OK; } STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode) { return E_NOTIMPL; } // IOleInPlaceActiveObject STDMETHODIMP TranslateAccelerator(LPMSG lpmsg) { return S_FALSE; } STDMETHODIMP OnFrameWindowActivate(WINBOOL fActivate) { return S_OK; } STDMETHODIMP OnDocWindowActivate(WINBOOL fActivate) { return S_OK; } STDMETHODIMP ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, WINBOOL fFrameWindow) { return S_OK; } STDMETHODIMP EnableModeless(WINBOOL fEnable) { return S_OK; } }; ================================================ FILE: include/com/IOleInPlaceObjectImpl.h ================================================ #pragma once #include #include #include #include "ComClass.h" template class IOleInPlaceObjectImpl : public ComClass { public: IOleInPlaceObjectImpl(TImpl *pParent) : ComClass(pParent) {} // IOleWindow STDMETHODIMP GetWindow(HWND *phwnd) { if (phwnd == NULL) { return E_POINTER; } *phwnd = this->m_pParent->m_innerHwnd; return *phwnd == NULL ? E_FAIL : S_OK; } STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode) { return E_NOTIMPL; } // IOleInPlaceObject STDMETHODIMP InPlaceDeactivate(void) { return S_OK; } STDMETHODIMP UIDeactivate(void) { return S_OK; } STDMETHODIMP SetObjectRects(LPCRECT lprcPosRect, LPCRECT lprcClipRect) { if (lprcPosRect == NULL) { return E_POINTER; } if (this->m_pParent->m_innerHwnd) { SetWindowPos( this->m_pParent->m_innerHwnd, NULL, lprcPosRect->left, lprcPosRect->top, lprcPosRect->right - lprcPosRect->left, lprcPosRect->bottom - lprcPosRect->top, SWP_NOZORDER | SWP_SHOWWINDOW ); } return S_OK; } STDMETHODIMP ReactivateAndUndo(void) { return E_NOTIMPL; } }; ================================================ FILE: include/com/IOleObjectImpl.h ================================================ #pragma once #include #include #include #include "ComClass.h" template class IOleObjectImpl : public ComClass { public: IOleObjectImpl(TImpl *pParent) : ComClass(pParent) {} // IOleObject STDMETHODIMP SetClientSite(IOleClientSite *pClientSite) { if (this->m_pParent->m_clientSite) { this->m_pParent->m_clientSite->Release(); } this->m_pParent->m_clientSite = pClientSite; if (this->m_pParent->m_clientSite) { this->m_pParent->m_clientSite->AddRef(); } return S_OK; } STDMETHODIMP GetClientSite(IOleClientSite **ppClientSite) { if (ppClientSite == NULL) { return E_POINTER; } if (this->m_pParent->m_clientSite == NULL) { *ppClientSite = NULL; return E_FAIL; } this->m_pParent->m_clientSite->AddRef(); *ppClientSite = this->m_pParent->m_clientSite; return S_OK; } STDMETHODIMP SetHostNames(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj) { return S_OK; } STDMETHODIMP Close(DWORD dwSaveOption) { if (this->m_pParent->m_clientSite) { this->m_pParent->m_clientSite->Release(); this->m_pParent->m_clientSite = NULL; } return S_OK; } STDMETHODIMP SetMoniker(DWORD dwWhichMoniker, IMoniker *pmk) { return E_NOTIMPL; } STDMETHODIMP GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk) { return E_NOTIMPL; } STDMETHODIMP InitFromData(IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved) { return E_NOTIMPL; } STDMETHODIMP GetClipboardData(DWORD dwReserved, IDataObject **ppDataObject) { return E_NOTIMPL; } STDMETHODIMP DoVerb(LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) { switch (iVerb) { case OLEIVERB_INPLACEACTIVATE: case OLEIVERB_UIACTIVATE: case OLEIVERB_SHOW: return S_OK; default: return OLEOBJ_S_INVALIDVERB; } } STDMETHODIMP EnumVerbs(IEnumOLEVERB **ppEnumOleVerb) { if (ppEnumOleVerb == NULL) { return E_POINTER; } return OleRegEnumVerbs(__uuidof(TImpl), ppEnumOleVerb); } STDMETHODIMP Update(void) { return S_OK; } STDMETHODIMP IsUpToDate(void) { return S_OK; } STDMETHODIMP GetUserClassID(CLSID *pClsid) { if (pClsid == NULL) { return E_POINTER; } *pClsid = __uuidof(TImpl); return S_OK; } STDMETHODIMP GetUserType(DWORD dwFormOfType, LPOLESTR *pszUserType) { if (pszUserType == NULL) { return E_POINTER; } return OleRegGetUserType(__uuidof(TImpl), dwFormOfType, pszUserType); } STDMETHODIMP SetExtent(DWORD dwDrawAspect, SIZEL *psizel) { return S_OK; } STDMETHODIMP GetExtent(DWORD dwDrawAspect, SIZEL *psizel) { if (psizel == NULL) { return E_POINTER; } psizel->cx = 0; psizel->cy = 0; return S_OK; } STDMETHODIMP Advise(IAdviseSink *pAdvSink, DWORD *pdwConnection) { return S_OK; } STDMETHODIMP Unadvise(DWORD dwConnection) { return E_NOTIMPL; } STDMETHODIMP EnumAdvise(IEnumSTATDATA **ppenumAdvise) { return E_NOTIMPL; } STDMETHODIMP GetMiscStatus(DWORD dwAspect, DWORD *pdwStatus) { return OleRegGetMiscStatus(__uuidof(TImpl), dwAspect, pdwStatus); } STDMETHODIMP SetColorScheme(LOGPALETTE *pLogpal) { return E_NOTIMPL; } }; ================================================ FILE: include/com/IQuickActivateImpl.h ================================================ #pragma once #include #include #include #include "ComClass.h" template class IQuickActivateImpl : public ComClass { public: IQuickActivateImpl(TImpl *pParent) : ComClass(pParent) {} // IQuickActivate STDMETHODIMP QuickActivate(QACONTAINER *pQaContainer, QACONTROL *pQaControl) { CComPtr oleObject; CComPtr viewObject; this->m_pParent->QueryInterface(IID_IOleObject, (void **)&oleObject); this->m_pParent->QueryInterface(IID_IViewObjectEx, (void **)&viewObject); if (!oleObject || !viewObject) { return E_NOINTERFACE; } oleObject->SetClientSite(pQaContainer->pClientSite); if (pQaContainer->pAdviseSink) { viewObject->SetAdvise(DVASPECT_CONTENT, 0, pQaContainer->pAdviseSink); } oleObject->GetMiscStatus(DVASPECT_CONTENT, &pQaControl->dwMiscStatus); viewObject->GetViewStatus(&pQaControl->dwViewStatus); return S_OK; } STDMETHODIMP SetContentExtent(LPSIZEL pSizel) { CComPtr oleObject; this->m_pParent->QueryInterface(IID_IOleObject, (void **)&oleObject); if (!oleObject) { return E_NOINTERFACE; } return oleObject->SetExtent(DVASPECT_CONTENT, pSizel); } STDMETHODIMP GetContentExtent(LPSIZEL pSizel) { CComPtr oleObject; this->m_pParent->QueryInterface(IID_IOleObject, (void **)&oleObject); if (!oleObject) { return E_NOINTERFACE; } return oleObject->GetExtent(DVASPECT_CONTENT, pSizel); } }; ================================================ FILE: include/com/IUnknownImpl.h ================================================ #pragma once #include #include #include #include "ComClass.h" class IUnknownImpl { private: LONG m_refCount; protected: IUnknownImpl() : m_refCount(1) {} virtual ~IUnknownImpl(void) { if (m_refCount != 0) { DebugBreak(); } } public: // IUnknown STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) { if (ppvObject == NULL) { return E_POINTER; } *ppvObject = NULL; if (IsEqualIID(riid, IID_IUnknown)) { *ppvObject = (IUnknown *)this; } if (*ppvObject != NULL) { this->AddRef(); return S_OK; } return E_NOINTERFACE; } STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&m_refCount); } STDMETHODIMP_(ULONG) Release(void) { ULONG count = InterlockedDecrement(&m_refCount); if (count == 0) { delete this; } return count; } }; ================================================ FILE: include/com/IViewObjectExImpl.h ================================================ #pragma once #include #include #include #include "ComClass.h" template class IViewObjectExImpl : public ComClass { public: IViewObjectExImpl(TImpl *pParent) : ComClass(pParent) {} // IViewObject STDMETHODIMP Draw(DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue) { return this->m_pParent->OnDraw(dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue); } STDMETHODIMP GetColorSet(DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet) { if (ppColorSet == NULL) { return E_POINTER; } *ppColorSet = NULL; return S_FALSE; } STDMETHODIMP Freeze(DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze) { return E_NOTIMPL; } STDMETHODIMP Unfreeze(DWORD dwFreeze) { return E_NOTIMPL; } STDMETHODIMP SetAdvise(DWORD aspects, DWORD advf, IAdviseSink *pAdvSink) { if (this->m_pParent->m_adviseSink) { this->m_pParent->m_adviseSink->Release(); } this->m_pParent->m_adviseSink = pAdvSink; if (this->m_pParent->m_adviseSink) { this->m_pParent->m_adviseSink->AddRef(); } return S_OK; } STDMETHODIMP GetAdvise(DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink) { if (pAspects) { *pAspects = DVASPECT_CONTENT; } if (pAdvf) { *pAdvf = 0; } if (ppAdvSink) { *ppAdvSink = this->m_pParent->m_adviseSink; } return S_OK; } // IViewObject2 STDMETHODIMP GetExtent(DWORD dwAspect, LONG lindex, DVTARGETDEVICE *ptd, LPSIZEL lpsizel) { if (lpsizel == NULL) { return E_POINTER; } if (dwAspect != DVASPECT_CONTENT) { return DV_E_DVASPECT; } if (!this->m_pParent->m_innerHwnd) { lpsizel->cx = 0; lpsizel->cy = 0; return E_FAIL; } RECT rect; GetClientRect(this->m_pParent->m_innerHwnd, &rect); // Convert to HIMETRIC HDC hdc = GetDC(NULL); int ppiX = GetDeviceCaps(hdc, LOGPIXELSX); int ppiY = GetDeviceCaps(hdc, LOGPIXELSY); ReleaseDC(NULL, hdc); lpsizel->cx = MAP_PIX_TO_LOGHIM(rect.right - rect.left, ppiX); lpsizel->cy = MAP_PIX_TO_LOGHIM(rect.bottom - rect.top, ppiY); return S_OK; } // IViewObjectEx STDMETHODIMP GetRect(DWORD dwAspect, LPRECTL pRect) { if (pRect == NULL) { return E_POINTER; } if (dwAspect != DVASPECT_CONTENT) { return DV_E_DVASPECT; } if (!this->m_pParent->m_innerHwnd) { return E_FAIL; } RECT rect; GetClientRect(this->m_pParent->m_innerHwnd, &rect); pRect->left = rect.left; pRect->top = rect.top; pRect->right = rect.right; pRect->bottom = rect.bottom; return S_OK; } STDMETHODIMP GetViewStatus(DWORD *pdwStatus) { if (pdwStatus == NULL) { return E_POINTER; } *pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE; return S_OK; } STDMETHODIMP QueryHitPoint(DWORD dwAspect, LPCRECT pRectBounds, POINT ptlLoc, LONG lCloseHint, DWORD *pHitResult) { if (pRectBounds == NULL || pHitResult == NULL) { return E_POINTER; } *pHitResult = PtInRect(pRectBounds, *(POINT *)&ptlLoc) ? HITRESULT_HIT : HITRESULT_OUTSIDE; return S_OK; } STDMETHODIMP QueryHitRect(DWORD dwAspect, LPCRECT pRectBounds, LPCRECT pRectLoc, LONG lCloseHint, DWORD *pHitResult) { if (pRectBounds == NULL || pRectLoc == NULL || pHitResult == NULL) { return E_POINTER; } *pHitResult = IntersectRect((LPRECT)pHitResult, pRectBounds, pRectLoc) ? HITRESULT_HIT : HITRESULT_OUTSIDE; return S_OK; } STDMETHODIMP GetNaturalExtent(DWORD dwAspect, LONG lindex, DVTARGETDEVICE *ptd, HDC hicTargetDev, DVEXTENTINFO *pExtentInfo, LPSIZEL pSizel) { return GetExtent(dwAspect, lindex, ptd, pSizel); } }; ================================================ FILE: include/com/helpers.h ================================================ #pragma once #include #include #include #define DEFINE_UUIDOF(cls, uuid) \ template<> const GUID &__mingw_uuidof(void) { \ return uuid; \ } #define HIMETRIC_PER_INCH 2540 #define MAP_PIX_TO_LOGHIM(x, ppli) MulDiv(HIMETRIC_PER_INCH, (x), (ppli)) #define MAP_LOGHIM_TO_PIX(x, ppli) MulDiv((ppli), (x), HIMETRIC_PER_INCH) ================================================ FILE: include/com.h ================================================ #pragma once #include #include #include #include #include #include #include #include #include #include ================================================ FILE: include/licdll.h ================================================ /*** Autogenerated by WIDL 8.5 from licdll.idl - Do not edit ***/ #ifdef _WIN32 #ifndef __REQUIRED_RPCNDR_H_VERSION__ #define __REQUIRED_RPCNDR_H_VERSION__ 475 #endif #include #include #endif #ifndef COM_NO_WINDOWS_H #include #include #endif #ifndef __licdll_h__ #define __licdll_h__ #ifndef __WIDL_INLINE #if defined(__cplusplus) || defined(_MSC_VER) #define __WIDL_INLINE inline #elif defined(__GNUC__) #define __WIDL_INLINE __inline__ #endif #endif /* Forward declarations */ #ifndef __COMLicenseAgent_FWD_DEFINED__ #define __COMLicenseAgent_FWD_DEFINED__ #ifdef __cplusplus typedef class COMLicenseAgent COMLicenseAgent; #else typedef struct COMLicenseAgent COMLicenseAgent; #endif /* defined __cplusplus */ #endif /* defined __COMLicenseAgent_FWD_DEFINED__ */ #ifndef __ICOMLicenseAgent_FWD_DEFINED__ #define __ICOMLicenseAgent_FWD_DEFINED__ typedef interface ICOMLicenseAgent ICOMLicenseAgent; #ifdef __cplusplus interface ICOMLicenseAgent; #endif /* __cplusplus */ #endif #ifndef __ICOMLicenseAgent2_FWD_DEFINED__ #define __ICOMLicenseAgent2_FWD_DEFINED__ typedef interface ICOMLicenseAgent2 ICOMLicenseAgent2; #ifdef __cplusplus interface ICOMLicenseAgent2; #endif /* __cplusplus */ #endif /* Headers for imported files */ #include #ifdef __cplusplus extern "C" { #endif #ifndef __LICDLLLib_LIBRARY_DEFINED__ #define __LICDLLLib_LIBRARY_DEFINED__ DEFINE_GUID(LIBID_LICDLLLib, 0xc7879482, 0xf798, 0x4a74, 0xaf,0x43, 0xe8,0x87,0xfb,0xdc,0xed,0x40); #ifndef __ICOMLicenseAgent_FWD_DEFINED__ #define __ICOMLicenseAgent_FWD_DEFINED__ typedef interface ICOMLicenseAgent ICOMLicenseAgent; #ifdef __cplusplus interface ICOMLicenseAgent; #endif /* __cplusplus */ #endif #ifndef __ICOMLicenseAgent2_FWD_DEFINED__ #define __ICOMLicenseAgent2_FWD_DEFINED__ typedef interface ICOMLicenseAgent2 ICOMLicenseAgent2; #ifdef __cplusplus interface ICOMLicenseAgent2; #endif /* __cplusplus */ #endif /***************************************************************************** * COMLicenseAgent coclass */ DEFINE_GUID(CLSID_COMLicenseAgent, 0xacadf079, 0xcbcd, 0x4032, 0x83,0xf2, 0xfa,0x47,0xc4,0xdb,0x09,0x6f); #ifdef __cplusplus class DECLSPEC_UUID("acadf079-cbcd-4032-83f2-fa47c4db096f") COMLicenseAgent; #ifdef __CRT_UUID_DECL __CRT_UUID_DECL(COMLicenseAgent, 0xacadf079, 0xcbcd, 0x4032, 0x83,0xf2, 0xfa,0x47,0xc4,0xdb,0x09,0x6f) #endif #endif /***************************************************************************** * ICOMLicenseAgent interface */ #ifndef __ICOMLicenseAgent_INTERFACE_DEFINED__ #define __ICOMLicenseAgent_INTERFACE_DEFINED__ DEFINE_GUID(IID_ICOMLicenseAgent, 0xb8cbad79, 0x3f1f, 0x481a, 0xbb,0x0c, 0xe7,0xbb,0xd7,0x7b,0xdd,0xd1); #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("b8cbad79-3f1f-481a-bb0c-e7bbd77bddd1") ICOMLicenseAgent : public IDispatch { virtual HRESULT STDMETHODCALLTYPE Initialize( ULONG dwBPC, ULONG dwMode, BSTR bstrLicSource, ULONG *pdwRetCode) = 0; virtual HRESULT STDMETHODCALLTYPE GetFirstName( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetFirstName( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetLastName( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetLastName( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetOrgName( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetOrgName( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetEmail( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetEmail( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetPhone( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetPhone( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetAddress1( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetAddress1( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetCity( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetCity( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetState( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetState( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetCountryCode( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetCountryCode( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetCountryDesc( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetCountryDesc( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetZip( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetZip( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetIsoLanguage( ULONG *pdwVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetIsoLanguage( ULONG dwNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetMSUpdate( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetMSUpdate( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetMSOffer( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetMSOffer( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetOtherOffer( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetOtherOffer( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE GetAddress2( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE SetAddress2( BSTR bstrNewVal) = 0; virtual HRESULT STDMETHODCALLTYPE AsyncProcessHandshakeRequest( LONG bReviseCustInfo) = 0; virtual HRESULT STDMETHODCALLTYPE AsyncProcessNewLicenseRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE AsyncProcessReissueLicenseRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE AsyncProcessReviseCustInfoRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE GetAsyncProcessReturnCode( ULONG *pdwRetCode) = 0; virtual HRESULT STDMETHODCALLTYPE AsyncProcessDroppedLicenseRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE GenerateInstallationId( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE DepositConfirmationId( BSTR bstrVal, ULONG *pdwRetCode) = 0; virtual HRESULT STDMETHODCALLTYPE GetExpirationInfo( ULONG *pdwWPALeft, ULONG *pdwEvalLeft) = 0; virtual HRESULT STDMETHODCALLTYPE AsyncProcessRegistrationRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE ProcessHandshakeRequest( LONG bReviseCustInfo) = 0; virtual HRESULT STDMETHODCALLTYPE ProcessNewLicenseRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE ProcessDroppedLicenseRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE ProcessReissueLicenseRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE ProcessReviseCustInfoRequest( ) = 0; virtual HRESULT STDMETHODCALLTYPE EnsureInternetConnection( ) = 0; virtual HRESULT STDMETHODCALLTYPE SetProductKey( LPWSTR pszNewProductKey) = 0; virtual HRESULT STDMETHODCALLTYPE GetProductID( BSTR *pbstrVal) = 0; virtual HRESULT STDMETHODCALLTYPE VerifyCheckDigits( BSTR bstrCIDIID, LONG *pbValue) = 0; }; #ifdef __CRT_UUID_DECL __CRT_UUID_DECL(ICOMLicenseAgent, 0xb8cbad79, 0x3f1f, 0x481a, 0xbb,0x0c, 0xe7,0xbb,0xd7,0x7b,0xdd,0xd1) #endif #else typedef struct ICOMLicenseAgentVtbl { BEGIN_INTERFACE /*** IUnknown methods ***/ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ICOMLicenseAgent *This, REFIID riid, void **ppvObject); ULONG (STDMETHODCALLTYPE *AddRef)( ICOMLicenseAgent *This); ULONG (STDMETHODCALLTYPE *Release)( ICOMLicenseAgent *This); /*** IDispatch methods ***/ HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( ICOMLicenseAgent *This, UINT *pctinfo); HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( ICOMLicenseAgent *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( ICOMLicenseAgent *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); HRESULT (STDMETHODCALLTYPE *Invoke)( ICOMLicenseAgent *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); /*** ICOMLicenseAgent methods ***/ HRESULT (STDMETHODCALLTYPE *Initialize)( ICOMLicenseAgent *This, ULONG dwBPC, ULONG dwMode, BSTR bstrLicSource, ULONG *pdwRetCode); HRESULT (STDMETHODCALLTYPE *GetFirstName)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetFirstName)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetLastName)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetLastName)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetOrgName)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetOrgName)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetEmail)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetEmail)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetPhone)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetPhone)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetAddress1)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetAddress1)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetCity)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetCity)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetState)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetState)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetCountryCode)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetCountryCode)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetCountryDesc)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetCountryDesc)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetZip)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetZip)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetIsoLanguage)( ICOMLicenseAgent *This, ULONG *pdwVal); HRESULT (STDMETHODCALLTYPE *SetIsoLanguage)( ICOMLicenseAgent *This, ULONG dwNewVal); HRESULT (STDMETHODCALLTYPE *GetMSUpdate)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetMSUpdate)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetMSOffer)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetMSOffer)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetOtherOffer)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetOtherOffer)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetAddress2)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetAddress2)( ICOMLicenseAgent *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *AsyncProcessHandshakeRequest)( ICOMLicenseAgent *This, LONG bReviseCustInfo); HRESULT (STDMETHODCALLTYPE *AsyncProcessNewLicenseRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *AsyncProcessReissueLicenseRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *AsyncProcessReviseCustInfoRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *GetAsyncProcessReturnCode)( ICOMLicenseAgent *This, ULONG *pdwRetCode); HRESULT (STDMETHODCALLTYPE *AsyncProcessDroppedLicenseRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *GenerateInstallationId)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *DepositConfirmationId)( ICOMLicenseAgent *This, BSTR bstrVal, ULONG *pdwRetCode); HRESULT (STDMETHODCALLTYPE *GetExpirationInfo)( ICOMLicenseAgent *This, ULONG *pdwWPALeft, ULONG *pdwEvalLeft); HRESULT (STDMETHODCALLTYPE *AsyncProcessRegistrationRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *ProcessHandshakeRequest)( ICOMLicenseAgent *This, LONG bReviseCustInfo); HRESULT (STDMETHODCALLTYPE *ProcessNewLicenseRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *ProcessDroppedLicenseRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *ProcessReissueLicenseRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *ProcessReviseCustInfoRequest)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *EnsureInternetConnection)( ICOMLicenseAgent *This); HRESULT (STDMETHODCALLTYPE *SetProductKey)( ICOMLicenseAgent *This, LPWSTR pszNewProductKey); HRESULT (STDMETHODCALLTYPE *GetProductID)( ICOMLicenseAgent *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *VerifyCheckDigits)( ICOMLicenseAgent *This, BSTR bstrCIDIID, LONG *pbValue); END_INTERFACE } ICOMLicenseAgentVtbl; interface ICOMLicenseAgent { CONST_VTBL ICOMLicenseAgentVtbl* lpVtbl; }; #ifdef COBJMACROS #ifndef WIDL_C_INLINE_WRAPPERS /*** IUnknown methods ***/ #define ICOMLicenseAgent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ICOMLicenseAgent_AddRef(This) (This)->lpVtbl->AddRef(This) #define ICOMLicenseAgent_Release(This) (This)->lpVtbl->Release(This) /*** IDispatch methods ***/ #define ICOMLicenseAgent_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo) #define ICOMLicenseAgent_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo) #define ICOMLicenseAgent_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) #define ICOMLicenseAgent_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) /*** ICOMLicenseAgent methods ***/ #define ICOMLicenseAgent_Initialize(This,dwBPC,dwMode,bstrLicSource,pdwRetCode) (This)->lpVtbl->Initialize(This,dwBPC,dwMode,bstrLicSource,pdwRetCode) #define ICOMLicenseAgent_GetFirstName(This,pbstrVal) (This)->lpVtbl->GetFirstName(This,pbstrVal) #define ICOMLicenseAgent_SetFirstName(This,bstrNewVal) (This)->lpVtbl->SetFirstName(This,bstrNewVal) #define ICOMLicenseAgent_GetLastName(This,pbstrVal) (This)->lpVtbl->GetLastName(This,pbstrVal) #define ICOMLicenseAgent_SetLastName(This,bstrNewVal) (This)->lpVtbl->SetLastName(This,bstrNewVal) #define ICOMLicenseAgent_GetOrgName(This,pbstrVal) (This)->lpVtbl->GetOrgName(This,pbstrVal) #define ICOMLicenseAgent_SetOrgName(This,bstrNewVal) (This)->lpVtbl->SetOrgName(This,bstrNewVal) #define ICOMLicenseAgent_GetEmail(This,pbstrVal) (This)->lpVtbl->GetEmail(This,pbstrVal) #define ICOMLicenseAgent_SetEmail(This,bstrNewVal) (This)->lpVtbl->SetEmail(This,bstrNewVal) #define ICOMLicenseAgent_GetPhone(This,pbstrVal) (This)->lpVtbl->GetPhone(This,pbstrVal) #define ICOMLicenseAgent_SetPhone(This,bstrNewVal) (This)->lpVtbl->SetPhone(This,bstrNewVal) #define ICOMLicenseAgent_GetAddress1(This,pbstrVal) (This)->lpVtbl->GetAddress1(This,pbstrVal) #define ICOMLicenseAgent_SetAddress1(This,bstrNewVal) (This)->lpVtbl->SetAddress1(This,bstrNewVal) #define ICOMLicenseAgent_GetCity(This,pbstrVal) (This)->lpVtbl->GetCity(This,pbstrVal) #define ICOMLicenseAgent_SetCity(This,bstrNewVal) (This)->lpVtbl->SetCity(This,bstrNewVal) #define ICOMLicenseAgent_GetState(This,pbstrVal) (This)->lpVtbl->GetState(This,pbstrVal) #define ICOMLicenseAgent_SetState(This,bstrNewVal) (This)->lpVtbl->SetState(This,bstrNewVal) #define ICOMLicenseAgent_GetCountryCode(This,pbstrVal) (This)->lpVtbl->GetCountryCode(This,pbstrVal) #define ICOMLicenseAgent_SetCountryCode(This,bstrNewVal) (This)->lpVtbl->SetCountryCode(This,bstrNewVal) #define ICOMLicenseAgent_GetCountryDesc(This,pbstrVal) (This)->lpVtbl->GetCountryDesc(This,pbstrVal) #define ICOMLicenseAgent_SetCountryDesc(This,bstrNewVal) (This)->lpVtbl->SetCountryDesc(This,bstrNewVal) #define ICOMLicenseAgent_GetZip(This,pbstrVal) (This)->lpVtbl->GetZip(This,pbstrVal) #define ICOMLicenseAgent_SetZip(This,bstrNewVal) (This)->lpVtbl->SetZip(This,bstrNewVal) #define ICOMLicenseAgent_GetIsoLanguage(This,pdwVal) (This)->lpVtbl->GetIsoLanguage(This,pdwVal) #define ICOMLicenseAgent_SetIsoLanguage(This,dwNewVal) (This)->lpVtbl->SetIsoLanguage(This,dwNewVal) #define ICOMLicenseAgent_GetMSUpdate(This,pbstrVal) (This)->lpVtbl->GetMSUpdate(This,pbstrVal) #define ICOMLicenseAgent_SetMSUpdate(This,bstrNewVal) (This)->lpVtbl->SetMSUpdate(This,bstrNewVal) #define ICOMLicenseAgent_GetMSOffer(This,pbstrVal) (This)->lpVtbl->GetMSOffer(This,pbstrVal) #define ICOMLicenseAgent_SetMSOffer(This,bstrNewVal) (This)->lpVtbl->SetMSOffer(This,bstrNewVal) #define ICOMLicenseAgent_GetOtherOffer(This,pbstrVal) (This)->lpVtbl->GetOtherOffer(This,pbstrVal) #define ICOMLicenseAgent_SetOtherOffer(This,bstrNewVal) (This)->lpVtbl->SetOtherOffer(This,bstrNewVal) #define ICOMLicenseAgent_GetAddress2(This,pbstrVal) (This)->lpVtbl->GetAddress2(This,pbstrVal) #define ICOMLicenseAgent_SetAddress2(This,bstrNewVal) (This)->lpVtbl->SetAddress2(This,bstrNewVal) #define ICOMLicenseAgent_AsyncProcessHandshakeRequest(This,bReviseCustInfo) (This)->lpVtbl->AsyncProcessHandshakeRequest(This,bReviseCustInfo) #define ICOMLicenseAgent_AsyncProcessNewLicenseRequest(This) (This)->lpVtbl->AsyncProcessNewLicenseRequest(This) #define ICOMLicenseAgent_AsyncProcessReissueLicenseRequest(This) (This)->lpVtbl->AsyncProcessReissueLicenseRequest(This) #define ICOMLicenseAgent_AsyncProcessReviseCustInfoRequest(This) (This)->lpVtbl->AsyncProcessReviseCustInfoRequest(This) #define ICOMLicenseAgent_GetAsyncProcessReturnCode(This,pdwRetCode) (This)->lpVtbl->GetAsyncProcessReturnCode(This,pdwRetCode) #define ICOMLicenseAgent_AsyncProcessDroppedLicenseRequest(This) (This)->lpVtbl->AsyncProcessDroppedLicenseRequest(This) #define ICOMLicenseAgent_GenerateInstallationId(This,pbstrVal) (This)->lpVtbl->GenerateInstallationId(This,pbstrVal) #define ICOMLicenseAgent_DepositConfirmationId(This,bstrVal,pdwRetCode) (This)->lpVtbl->DepositConfirmationId(This,bstrVal,pdwRetCode) #define ICOMLicenseAgent_GetExpirationInfo(This,pdwWPALeft,pdwEvalLeft) (This)->lpVtbl->GetExpirationInfo(This,pdwWPALeft,pdwEvalLeft) #define ICOMLicenseAgent_AsyncProcessRegistrationRequest(This) (This)->lpVtbl->AsyncProcessRegistrationRequest(This) #define ICOMLicenseAgent_ProcessHandshakeRequest(This,bReviseCustInfo) (This)->lpVtbl->ProcessHandshakeRequest(This,bReviseCustInfo) #define ICOMLicenseAgent_ProcessNewLicenseRequest(This) (This)->lpVtbl->ProcessNewLicenseRequest(This) #define ICOMLicenseAgent_ProcessDroppedLicenseRequest(This) (This)->lpVtbl->ProcessDroppedLicenseRequest(This) #define ICOMLicenseAgent_ProcessReissueLicenseRequest(This) (This)->lpVtbl->ProcessReissueLicenseRequest(This) #define ICOMLicenseAgent_ProcessReviseCustInfoRequest(This) (This)->lpVtbl->ProcessReviseCustInfoRequest(This) #define ICOMLicenseAgent_EnsureInternetConnection(This) (This)->lpVtbl->EnsureInternetConnection(This) #define ICOMLicenseAgent_SetProductKey(This,pszNewProductKey) (This)->lpVtbl->SetProductKey(This,pszNewProductKey) #define ICOMLicenseAgent_GetProductID(This,pbstrVal) (This)->lpVtbl->GetProductID(This,pbstrVal) #define ICOMLicenseAgent_VerifyCheckDigits(This,bstrCIDIID,pbValue) (This)->lpVtbl->VerifyCheckDigits(This,bstrCIDIID,pbValue) #else /*** IUnknown methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent_QueryInterface(ICOMLicenseAgent* This,REFIID riid,void **ppvObject) { return This->lpVtbl->QueryInterface(This,riid,ppvObject); } static __WIDL_INLINE ULONG ICOMLicenseAgent_AddRef(ICOMLicenseAgent* This) { return This->lpVtbl->AddRef(This); } static __WIDL_INLINE ULONG ICOMLicenseAgent_Release(ICOMLicenseAgent* This) { return This->lpVtbl->Release(This); } /*** IDispatch methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetTypeInfoCount(ICOMLicenseAgent* This,UINT *pctinfo) { return This->lpVtbl->GetTypeInfoCount(This,pctinfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetTypeInfo(ICOMLicenseAgent* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) { return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetIDsOfNames(ICOMLicenseAgent* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) { return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_Invoke(ICOMLicenseAgent* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) { return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr); } /*** ICOMLicenseAgent methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent_Initialize(ICOMLicenseAgent* This,ULONG dwBPC,ULONG dwMode,BSTR bstrLicSource,ULONG *pdwRetCode) { return This->lpVtbl->Initialize(This,dwBPC,dwMode,bstrLicSource,pdwRetCode); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetFirstName(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetFirstName(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetFirstName(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetFirstName(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetLastName(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetLastName(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetLastName(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetLastName(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetOrgName(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetOrgName(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetOrgName(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetOrgName(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetEmail(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetEmail(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetEmail(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetEmail(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetPhone(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetPhone(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetPhone(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetPhone(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetAddress1(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetAddress1(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetAddress1(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetAddress1(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetCity(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetCity(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetCity(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetCity(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetState(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetState(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetState(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetState(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetCountryCode(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetCountryCode(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetCountryCode(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetCountryCode(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetCountryDesc(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetCountryDesc(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetCountryDesc(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetCountryDesc(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetZip(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetZip(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetZip(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetZip(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetIsoLanguage(ICOMLicenseAgent* This,ULONG *pdwVal) { return This->lpVtbl->GetIsoLanguage(This,pdwVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetIsoLanguage(ICOMLicenseAgent* This,ULONG dwNewVal) { return This->lpVtbl->SetIsoLanguage(This,dwNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetMSUpdate(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetMSUpdate(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetMSUpdate(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetMSUpdate(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetMSOffer(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetMSOffer(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetMSOffer(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetMSOffer(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetOtherOffer(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetOtherOffer(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetOtherOffer(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetOtherOffer(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetAddress2(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetAddress2(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetAddress2(ICOMLicenseAgent* This,BSTR bstrNewVal) { return This->lpVtbl->SetAddress2(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_AsyncProcessHandshakeRequest(ICOMLicenseAgent* This,LONG bReviseCustInfo) { return This->lpVtbl->AsyncProcessHandshakeRequest(This,bReviseCustInfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_AsyncProcessNewLicenseRequest(ICOMLicenseAgent* This) { return This->lpVtbl->AsyncProcessNewLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_AsyncProcessReissueLicenseRequest(ICOMLicenseAgent* This) { return This->lpVtbl->AsyncProcessReissueLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_AsyncProcessReviseCustInfoRequest(ICOMLicenseAgent* This) { return This->lpVtbl->AsyncProcessReviseCustInfoRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetAsyncProcessReturnCode(ICOMLicenseAgent* This,ULONG *pdwRetCode) { return This->lpVtbl->GetAsyncProcessReturnCode(This,pdwRetCode); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_AsyncProcessDroppedLicenseRequest(ICOMLicenseAgent* This) { return This->lpVtbl->AsyncProcessDroppedLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GenerateInstallationId(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GenerateInstallationId(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_DepositConfirmationId(ICOMLicenseAgent* This,BSTR bstrVal,ULONG *pdwRetCode) { return This->lpVtbl->DepositConfirmationId(This,bstrVal,pdwRetCode); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetExpirationInfo(ICOMLicenseAgent* This,ULONG *pdwWPALeft,ULONG *pdwEvalLeft) { return This->lpVtbl->GetExpirationInfo(This,pdwWPALeft,pdwEvalLeft); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_AsyncProcessRegistrationRequest(ICOMLicenseAgent* This) { return This->lpVtbl->AsyncProcessRegistrationRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_ProcessHandshakeRequest(ICOMLicenseAgent* This,LONG bReviseCustInfo) { return This->lpVtbl->ProcessHandshakeRequest(This,bReviseCustInfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_ProcessNewLicenseRequest(ICOMLicenseAgent* This) { return This->lpVtbl->ProcessNewLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_ProcessDroppedLicenseRequest(ICOMLicenseAgent* This) { return This->lpVtbl->ProcessDroppedLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_ProcessReissueLicenseRequest(ICOMLicenseAgent* This) { return This->lpVtbl->ProcessReissueLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_ProcessReviseCustInfoRequest(ICOMLicenseAgent* This) { return This->lpVtbl->ProcessReviseCustInfoRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_EnsureInternetConnection(ICOMLicenseAgent* This) { return This->lpVtbl->EnsureInternetConnection(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_SetProductKey(ICOMLicenseAgent* This,LPWSTR pszNewProductKey) { return This->lpVtbl->SetProductKey(This,pszNewProductKey); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_GetProductID(ICOMLicenseAgent* This,BSTR *pbstrVal) { return This->lpVtbl->GetProductID(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent_VerifyCheckDigits(ICOMLicenseAgent* This,BSTR bstrCIDIID,LONG *pbValue) { return This->lpVtbl->VerifyCheckDigits(This,bstrCIDIID,pbValue); } #endif #endif #endif #endif /* __ICOMLicenseAgent_INTERFACE_DEFINED__ */ /***************************************************************************** * ICOMLicenseAgent2 interface */ #ifndef __ICOMLicenseAgent2_INTERFACE_DEFINED__ #define __ICOMLicenseAgent2_INTERFACE_DEFINED__ DEFINE_GUID(IID_ICOMLicenseAgent2, 0x6a07c5a3, 0x9c67, 0x4bb6, 0xb0,0x20, 0xec,0xbe,0x7f,0xdf,0xd3,0x26); #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("6a07c5a3-9c67-4bb6-b020-ecbe7fdfd326") ICOMLicenseAgent2 : public ICOMLicenseAgent { virtual HRESULT STDMETHODCALLTYPE SetReminders( LONG bValue) = 0; virtual HRESULT STDMETHODCALLTYPE GetReminders( LONG *pbValue) = 0; virtual HRESULT STDMETHODCALLTYPE GetKeyType( ULONG *pdwKeyType) = 0; }; #ifdef __CRT_UUID_DECL __CRT_UUID_DECL(ICOMLicenseAgent2, 0x6a07c5a3, 0x9c67, 0x4bb6, 0xb0,0x20, 0xec,0xbe,0x7f,0xdf,0xd3,0x26) #endif #else typedef struct ICOMLicenseAgent2Vtbl { BEGIN_INTERFACE /*** IUnknown methods ***/ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ICOMLicenseAgent2 *This, REFIID riid, void **ppvObject); ULONG (STDMETHODCALLTYPE *AddRef)( ICOMLicenseAgent2 *This); ULONG (STDMETHODCALLTYPE *Release)( ICOMLicenseAgent2 *This); /*** IDispatch methods ***/ HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( ICOMLicenseAgent2 *This, UINT *pctinfo); HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( ICOMLicenseAgent2 *This, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( ICOMLicenseAgent2 *This, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); HRESULT (STDMETHODCALLTYPE *Invoke)( ICOMLicenseAgent2 *This, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); /*** ICOMLicenseAgent methods ***/ HRESULT (STDMETHODCALLTYPE *Initialize)( ICOMLicenseAgent2 *This, ULONG dwBPC, ULONG dwMode, BSTR bstrLicSource, ULONG *pdwRetCode); HRESULT (STDMETHODCALLTYPE *GetFirstName)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetFirstName)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetLastName)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetLastName)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetOrgName)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetOrgName)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetEmail)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetEmail)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetPhone)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetPhone)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetAddress1)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetAddress1)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetCity)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetCity)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetState)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetState)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetCountryCode)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetCountryCode)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetCountryDesc)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetCountryDesc)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetZip)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetZip)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetIsoLanguage)( ICOMLicenseAgent2 *This, ULONG *pdwVal); HRESULT (STDMETHODCALLTYPE *SetIsoLanguage)( ICOMLicenseAgent2 *This, ULONG dwNewVal); HRESULT (STDMETHODCALLTYPE *GetMSUpdate)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetMSUpdate)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetMSOffer)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetMSOffer)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetOtherOffer)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetOtherOffer)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *GetAddress2)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *SetAddress2)( ICOMLicenseAgent2 *This, BSTR bstrNewVal); HRESULT (STDMETHODCALLTYPE *AsyncProcessHandshakeRequest)( ICOMLicenseAgent2 *This, LONG bReviseCustInfo); HRESULT (STDMETHODCALLTYPE *AsyncProcessNewLicenseRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *AsyncProcessReissueLicenseRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *AsyncProcessReviseCustInfoRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *GetAsyncProcessReturnCode)( ICOMLicenseAgent2 *This, ULONG *pdwRetCode); HRESULT (STDMETHODCALLTYPE *AsyncProcessDroppedLicenseRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *GenerateInstallationId)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *DepositConfirmationId)( ICOMLicenseAgent2 *This, BSTR bstrVal, ULONG *pdwRetCode); HRESULT (STDMETHODCALLTYPE *GetExpirationInfo)( ICOMLicenseAgent2 *This, ULONG *pdwWPALeft, ULONG *pdwEvalLeft); HRESULT (STDMETHODCALLTYPE *AsyncProcessRegistrationRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *ProcessHandshakeRequest)( ICOMLicenseAgent2 *This, LONG bReviseCustInfo); HRESULT (STDMETHODCALLTYPE *ProcessNewLicenseRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *ProcessDroppedLicenseRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *ProcessReissueLicenseRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *ProcessReviseCustInfoRequest)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *EnsureInternetConnection)( ICOMLicenseAgent2 *This); HRESULT (STDMETHODCALLTYPE *SetProductKey)( ICOMLicenseAgent2 *This, LPWSTR pszNewProductKey); HRESULT (STDMETHODCALLTYPE *GetProductID)( ICOMLicenseAgent2 *This, BSTR *pbstrVal); HRESULT (STDMETHODCALLTYPE *VerifyCheckDigits)( ICOMLicenseAgent2 *This, BSTR bstrCIDIID, LONG *pbValue); /*** ICOMLicenseAgent2 methods ***/ HRESULT (STDMETHODCALLTYPE *SetReminders)( ICOMLicenseAgent2 *This, LONG bValue); HRESULT (STDMETHODCALLTYPE *GetReminders)( ICOMLicenseAgent2 *This, LONG *pbValue); HRESULT (STDMETHODCALLTYPE *GetKeyType)( ICOMLicenseAgent2 *This, ULONG *pdwKeyType); END_INTERFACE } ICOMLicenseAgent2Vtbl; interface ICOMLicenseAgent2 { CONST_VTBL ICOMLicenseAgent2Vtbl* lpVtbl; }; #ifdef COBJMACROS #ifndef WIDL_C_INLINE_WRAPPERS /*** IUnknown methods ***/ #define ICOMLicenseAgent2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define ICOMLicenseAgent2_AddRef(This) (This)->lpVtbl->AddRef(This) #define ICOMLicenseAgent2_Release(This) (This)->lpVtbl->Release(This) /*** IDispatch methods ***/ #define ICOMLicenseAgent2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo) #define ICOMLicenseAgent2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo) #define ICOMLicenseAgent2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) #define ICOMLicenseAgent2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) /*** ICOMLicenseAgent methods ***/ #define ICOMLicenseAgent2_Initialize(This,dwBPC,dwMode,bstrLicSource,pdwRetCode) (This)->lpVtbl->Initialize(This,dwBPC,dwMode,bstrLicSource,pdwRetCode) #define ICOMLicenseAgent2_GetFirstName(This,pbstrVal) (This)->lpVtbl->GetFirstName(This,pbstrVal) #define ICOMLicenseAgent2_SetFirstName(This,bstrNewVal) (This)->lpVtbl->SetFirstName(This,bstrNewVal) #define ICOMLicenseAgent2_GetLastName(This,pbstrVal) (This)->lpVtbl->GetLastName(This,pbstrVal) #define ICOMLicenseAgent2_SetLastName(This,bstrNewVal) (This)->lpVtbl->SetLastName(This,bstrNewVal) #define ICOMLicenseAgent2_GetOrgName(This,pbstrVal) (This)->lpVtbl->GetOrgName(This,pbstrVal) #define ICOMLicenseAgent2_SetOrgName(This,bstrNewVal) (This)->lpVtbl->SetOrgName(This,bstrNewVal) #define ICOMLicenseAgent2_GetEmail(This,pbstrVal) (This)->lpVtbl->GetEmail(This,pbstrVal) #define ICOMLicenseAgent2_SetEmail(This,bstrNewVal) (This)->lpVtbl->SetEmail(This,bstrNewVal) #define ICOMLicenseAgent2_GetPhone(This,pbstrVal) (This)->lpVtbl->GetPhone(This,pbstrVal) #define ICOMLicenseAgent2_SetPhone(This,bstrNewVal) (This)->lpVtbl->SetPhone(This,bstrNewVal) #define ICOMLicenseAgent2_GetAddress1(This,pbstrVal) (This)->lpVtbl->GetAddress1(This,pbstrVal) #define ICOMLicenseAgent2_SetAddress1(This,bstrNewVal) (This)->lpVtbl->SetAddress1(This,bstrNewVal) #define ICOMLicenseAgent2_GetCity(This,pbstrVal) (This)->lpVtbl->GetCity(This,pbstrVal) #define ICOMLicenseAgent2_SetCity(This,bstrNewVal) (This)->lpVtbl->SetCity(This,bstrNewVal) #define ICOMLicenseAgent2_GetState(This,pbstrVal) (This)->lpVtbl->GetState(This,pbstrVal) #define ICOMLicenseAgent2_SetState(This,bstrNewVal) (This)->lpVtbl->SetState(This,bstrNewVal) #define ICOMLicenseAgent2_GetCountryCode(This,pbstrVal) (This)->lpVtbl->GetCountryCode(This,pbstrVal) #define ICOMLicenseAgent2_SetCountryCode(This,bstrNewVal) (This)->lpVtbl->SetCountryCode(This,bstrNewVal) #define ICOMLicenseAgent2_GetCountryDesc(This,pbstrVal) (This)->lpVtbl->GetCountryDesc(This,pbstrVal) #define ICOMLicenseAgent2_SetCountryDesc(This,bstrNewVal) (This)->lpVtbl->SetCountryDesc(This,bstrNewVal) #define ICOMLicenseAgent2_GetZip(This,pbstrVal) (This)->lpVtbl->GetZip(This,pbstrVal) #define ICOMLicenseAgent2_SetZip(This,bstrNewVal) (This)->lpVtbl->SetZip(This,bstrNewVal) #define ICOMLicenseAgent2_GetIsoLanguage(This,pdwVal) (This)->lpVtbl->GetIsoLanguage(This,pdwVal) #define ICOMLicenseAgent2_SetIsoLanguage(This,dwNewVal) (This)->lpVtbl->SetIsoLanguage(This,dwNewVal) #define ICOMLicenseAgent2_GetMSUpdate(This,pbstrVal) (This)->lpVtbl->GetMSUpdate(This,pbstrVal) #define ICOMLicenseAgent2_SetMSUpdate(This,bstrNewVal) (This)->lpVtbl->SetMSUpdate(This,bstrNewVal) #define ICOMLicenseAgent2_GetMSOffer(This,pbstrVal) (This)->lpVtbl->GetMSOffer(This,pbstrVal) #define ICOMLicenseAgent2_SetMSOffer(This,bstrNewVal) (This)->lpVtbl->SetMSOffer(This,bstrNewVal) #define ICOMLicenseAgent2_GetOtherOffer(This,pbstrVal) (This)->lpVtbl->GetOtherOffer(This,pbstrVal) #define ICOMLicenseAgent2_SetOtherOffer(This,bstrNewVal) (This)->lpVtbl->SetOtherOffer(This,bstrNewVal) #define ICOMLicenseAgent2_GetAddress2(This,pbstrVal) (This)->lpVtbl->GetAddress2(This,pbstrVal) #define ICOMLicenseAgent2_SetAddress2(This,bstrNewVal) (This)->lpVtbl->SetAddress2(This,bstrNewVal) #define ICOMLicenseAgent2_AsyncProcessHandshakeRequest(This,bReviseCustInfo) (This)->lpVtbl->AsyncProcessHandshakeRequest(This,bReviseCustInfo) #define ICOMLicenseAgent2_AsyncProcessNewLicenseRequest(This) (This)->lpVtbl->AsyncProcessNewLicenseRequest(This) #define ICOMLicenseAgent2_AsyncProcessReissueLicenseRequest(This) (This)->lpVtbl->AsyncProcessReissueLicenseRequest(This) #define ICOMLicenseAgent2_AsyncProcessReviseCustInfoRequest(This) (This)->lpVtbl->AsyncProcessReviseCustInfoRequest(This) #define ICOMLicenseAgent2_GetAsyncProcessReturnCode(This,pdwRetCode) (This)->lpVtbl->GetAsyncProcessReturnCode(This,pdwRetCode) #define ICOMLicenseAgent2_AsyncProcessDroppedLicenseRequest(This) (This)->lpVtbl->AsyncProcessDroppedLicenseRequest(This) #define ICOMLicenseAgent2_GenerateInstallationId(This,pbstrVal) (This)->lpVtbl->GenerateInstallationId(This,pbstrVal) #define ICOMLicenseAgent2_DepositConfirmationId(This,bstrVal,pdwRetCode) (This)->lpVtbl->DepositConfirmationId(This,bstrVal,pdwRetCode) #define ICOMLicenseAgent2_GetExpirationInfo(This,pdwWPALeft,pdwEvalLeft) (This)->lpVtbl->GetExpirationInfo(This,pdwWPALeft,pdwEvalLeft) #define ICOMLicenseAgent2_AsyncProcessRegistrationRequest(This) (This)->lpVtbl->AsyncProcessRegistrationRequest(This) #define ICOMLicenseAgent2_ProcessHandshakeRequest(This,bReviseCustInfo) (This)->lpVtbl->ProcessHandshakeRequest(This,bReviseCustInfo) #define ICOMLicenseAgent2_ProcessNewLicenseRequest(This) (This)->lpVtbl->ProcessNewLicenseRequest(This) #define ICOMLicenseAgent2_ProcessDroppedLicenseRequest(This) (This)->lpVtbl->ProcessDroppedLicenseRequest(This) #define ICOMLicenseAgent2_ProcessReissueLicenseRequest(This) (This)->lpVtbl->ProcessReissueLicenseRequest(This) #define ICOMLicenseAgent2_ProcessReviseCustInfoRequest(This) (This)->lpVtbl->ProcessReviseCustInfoRequest(This) #define ICOMLicenseAgent2_EnsureInternetConnection(This) (This)->lpVtbl->EnsureInternetConnection(This) #define ICOMLicenseAgent2_SetProductKey(This,pszNewProductKey) (This)->lpVtbl->SetProductKey(This,pszNewProductKey) #define ICOMLicenseAgent2_GetProductID(This,pbstrVal) (This)->lpVtbl->GetProductID(This,pbstrVal) #define ICOMLicenseAgent2_VerifyCheckDigits(This,bstrCIDIID,pbValue) (This)->lpVtbl->VerifyCheckDigits(This,bstrCIDIID,pbValue) /*** ICOMLicenseAgent2 methods ***/ #define ICOMLicenseAgent2_SetReminders(This,bValue) (This)->lpVtbl->SetReminders(This,bValue) #define ICOMLicenseAgent2_GetReminders(This,pbValue) (This)->lpVtbl->GetReminders(This,pbValue) #define ICOMLicenseAgent2_GetKeyType(This,pdwKeyType) (This)->lpVtbl->GetKeyType(This,pdwKeyType) #else /*** IUnknown methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent2_QueryInterface(ICOMLicenseAgent2* This,REFIID riid,void **ppvObject) { return This->lpVtbl->QueryInterface(This,riid,ppvObject); } static __WIDL_INLINE ULONG ICOMLicenseAgent2_AddRef(ICOMLicenseAgent2* This) { return This->lpVtbl->AddRef(This); } static __WIDL_INLINE ULONG ICOMLicenseAgent2_Release(ICOMLicenseAgent2* This) { return This->lpVtbl->Release(This); } /*** IDispatch methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetTypeInfoCount(ICOMLicenseAgent2* This,UINT *pctinfo) { return This->lpVtbl->GetTypeInfoCount(This,pctinfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetTypeInfo(ICOMLicenseAgent2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) { return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetIDsOfNames(ICOMLicenseAgent2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) { return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_Invoke(ICOMLicenseAgent2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) { return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr); } /*** ICOMLicenseAgent methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent2_Initialize(ICOMLicenseAgent2* This,ULONG dwBPC,ULONG dwMode,BSTR bstrLicSource,ULONG *pdwRetCode) { return This->lpVtbl->Initialize(This,dwBPC,dwMode,bstrLicSource,pdwRetCode); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetFirstName(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetFirstName(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetFirstName(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetFirstName(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetLastName(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetLastName(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetLastName(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetLastName(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetOrgName(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetOrgName(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetOrgName(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetOrgName(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetEmail(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetEmail(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetEmail(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetEmail(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetPhone(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetPhone(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetPhone(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetPhone(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetAddress1(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetAddress1(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetAddress1(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetAddress1(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetCity(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetCity(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetCity(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetCity(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetState(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetState(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetState(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetState(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetCountryCode(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetCountryCode(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetCountryCode(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetCountryCode(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetCountryDesc(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetCountryDesc(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetCountryDesc(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetCountryDesc(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetZip(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetZip(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetZip(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetZip(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetIsoLanguage(ICOMLicenseAgent2* This,ULONG *pdwVal) { return This->lpVtbl->GetIsoLanguage(This,pdwVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetIsoLanguage(ICOMLicenseAgent2* This,ULONG dwNewVal) { return This->lpVtbl->SetIsoLanguage(This,dwNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetMSUpdate(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetMSUpdate(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetMSUpdate(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetMSUpdate(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetMSOffer(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetMSOffer(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetMSOffer(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetMSOffer(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetOtherOffer(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetOtherOffer(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetOtherOffer(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetOtherOffer(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetAddress2(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetAddress2(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetAddress2(ICOMLicenseAgent2* This,BSTR bstrNewVal) { return This->lpVtbl->SetAddress2(This,bstrNewVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_AsyncProcessHandshakeRequest(ICOMLicenseAgent2* This,LONG bReviseCustInfo) { return This->lpVtbl->AsyncProcessHandshakeRequest(This,bReviseCustInfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_AsyncProcessNewLicenseRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->AsyncProcessNewLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_AsyncProcessReissueLicenseRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->AsyncProcessReissueLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_AsyncProcessReviseCustInfoRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->AsyncProcessReviseCustInfoRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetAsyncProcessReturnCode(ICOMLicenseAgent2* This,ULONG *pdwRetCode) { return This->lpVtbl->GetAsyncProcessReturnCode(This,pdwRetCode); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_AsyncProcessDroppedLicenseRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->AsyncProcessDroppedLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GenerateInstallationId(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GenerateInstallationId(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_DepositConfirmationId(ICOMLicenseAgent2* This,BSTR bstrVal,ULONG *pdwRetCode) { return This->lpVtbl->DepositConfirmationId(This,bstrVal,pdwRetCode); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetExpirationInfo(ICOMLicenseAgent2* This,ULONG *pdwWPALeft,ULONG *pdwEvalLeft) { return This->lpVtbl->GetExpirationInfo(This,pdwWPALeft,pdwEvalLeft); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_AsyncProcessRegistrationRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->AsyncProcessRegistrationRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_ProcessHandshakeRequest(ICOMLicenseAgent2* This,LONG bReviseCustInfo) { return This->lpVtbl->ProcessHandshakeRequest(This,bReviseCustInfo); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_ProcessNewLicenseRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->ProcessNewLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_ProcessDroppedLicenseRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->ProcessDroppedLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_ProcessReissueLicenseRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->ProcessReissueLicenseRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_ProcessReviseCustInfoRequest(ICOMLicenseAgent2* This) { return This->lpVtbl->ProcessReviseCustInfoRequest(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_EnsureInternetConnection(ICOMLicenseAgent2* This) { return This->lpVtbl->EnsureInternetConnection(This); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetProductKey(ICOMLicenseAgent2* This,LPWSTR pszNewProductKey) { return This->lpVtbl->SetProductKey(This,pszNewProductKey); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetProductID(ICOMLicenseAgent2* This,BSTR *pbstrVal) { return This->lpVtbl->GetProductID(This,pbstrVal); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_VerifyCheckDigits(ICOMLicenseAgent2* This,BSTR bstrCIDIID,LONG *pbValue) { return This->lpVtbl->VerifyCheckDigits(This,bstrCIDIID,pbValue); } /*** ICOMLicenseAgent2 methods ***/ static __WIDL_INLINE HRESULT ICOMLicenseAgent2_SetReminders(ICOMLicenseAgent2* This,LONG bValue) { return This->lpVtbl->SetReminders(This,bValue); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetReminders(ICOMLicenseAgent2* This,LONG *pbValue) { return This->lpVtbl->GetReminders(This,pbValue); } static __WIDL_INLINE HRESULT ICOMLicenseAgent2_GetKeyType(ICOMLicenseAgent2* This,ULONG *pdwKeyType) { return This->lpVtbl->GetKeyType(This,pdwKeyType); } #endif #endif #endif #endif /* __ICOMLicenseAgent2_INTERFACE_DEFINED__ */ #endif /* __LICDLLLib_LIBRARY_DEFINED__ */ /* Begin additional prototypes for all interfaces */ ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *); unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *); unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *); void __RPC_USER BSTR_UserFree (ULONG *, BSTR *); /* End additional prototypes */ #ifdef __cplusplus } #endif #endif /* __licdll_h__ */ ================================================ FILE: include/licdll.idl ================================================ import "oaidl.idl"; // Generated .IDL file (by the OLE/COM Object Viewer) // // typelib filename: licdll.dll [ uuid(C7879482-F798-4A74-AF43-E887FBDCED40), version(1.0), helpstring("licdll 1.0 Type Library") ] library LICDLLLib { // TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046} importlib("stdole2.tlb"); // Forward declare all types defined in this typelib interface ICOMLicenseAgent; interface ICOMLicenseAgent2; [ uuid(ACADF079-CBCD-4032-83F2-FA47C4DB096F), helpstring("COMLicenseAgent Class") ] coclass COMLicenseAgent { [default] interface ICOMLicenseAgent; interface ICOMLicenseAgent2; }; [ odl, uuid(B8CBAD79-3F1F-481A-BB0C-E7BBD77BDDD1), helpstring("ICOMLicenseAgent Interface"), dual, oleautomation ] interface ICOMLicenseAgent : IDispatch { [id(0x00000001), helpstring("method Initialize")] HRESULT Initialize( [in] unsigned long dwBPC, [in] unsigned long dwMode, [in] BSTR bstrLicSource, [out, retval] unsigned long* pdwRetCode); [id(0x00000003), helpstring("method GetFirstName")] HRESULT GetFirstName([out, retval] BSTR* pbstrVal); [id(0x00000004), helpstring("method SetFirstName")] HRESULT SetFirstName([in] BSTR bstrNewVal); [id(0x00000005), helpstring("method GetLastName")] HRESULT GetLastName([out, retval] BSTR* pbstrVal); [id(0x00000006), helpstring("method SetLastName")] HRESULT SetLastName([in] BSTR bstrNewVal); [id(0x00000007), helpstring("method GetOrgName")] HRESULT GetOrgName([out, retval] BSTR* pbstrVal); [id(0x00000008), helpstring("method SetOrgName")] HRESULT SetOrgName([in] BSTR bstrNewVal); [id(0x00000009), helpstring("method GetEmail")] HRESULT GetEmail([out, retval] BSTR* pbstrVal); [id(0x0000000a), helpstring("method SetEmail")] HRESULT SetEmail([in] BSTR bstrNewVal); [id(0x0000000b), helpstring("method GetPhone")] HRESULT GetPhone([out, retval] BSTR* pbstrVal); [id(0x0000000c), helpstring("method SetPhone")] HRESULT SetPhone([in] BSTR bstrNewVal); [id(0x0000000d), helpstring("method GetAddress1")] HRESULT GetAddress1([out, retval] BSTR* pbstrVal); [id(0x0000000e), helpstring("method SetAddress1")] HRESULT SetAddress1([in] BSTR bstrNewVal); [id(0x0000000f), helpstring("method GetCity")] HRESULT GetCity([out, retval] BSTR* pbstrVal); [id(0x00000010), helpstring("method SetCity")] HRESULT SetCity([in] BSTR bstrNewVal); [id(0x00000011), helpstring("method GetState")] HRESULT GetState([out, retval] BSTR* pbstrVal); [id(0x00000012), helpstring("method SetState")] HRESULT SetState([in] BSTR bstrNewVal); [id(0x00000013), helpstring("method GetCountryCode")] HRESULT GetCountryCode([out, retval] BSTR* pbstrVal); [id(0x00000014), helpstring("method SetCountryCode")] HRESULT SetCountryCode([in] BSTR bstrNewVal); [id(0x00000015), helpstring("method GetCountryDesc")] HRESULT GetCountryDesc([out, retval] BSTR* pbstrVal); [id(0x00000016), helpstring("method SetCountryDesc")] HRESULT SetCountryDesc([in] BSTR bstrNewVal); [id(0x00000017), helpstring("method GetZip")] HRESULT GetZip([out, retval] BSTR* pbstrVal); [id(0x00000018), helpstring("method SetZip")] HRESULT SetZip([in] BSTR bstrNewVal); [id(0x00000019), helpstring("method GetIsoLanguage")] HRESULT GetIsoLanguage([out, retval] unsigned long* pdwVal); [id(0x0000001a), helpstring("method SetIsoLanguage")] HRESULT SetIsoLanguage([in] unsigned long dwNewVal); [id(0x00000020), helpstring("method GetMSUpdate")] HRESULT GetMSUpdate([out, retval] BSTR* pbstrVal); [id(0x00000021), helpstring("method SetMSUpdate")] HRESULT SetMSUpdate([in] BSTR bstrNewVal); [id(0x00000022), helpstring("method GetMSOffer")] HRESULT GetMSOffer([out, retval] BSTR* pbstrVal); [id(0x00000023), helpstring("method SetMSOffer")] HRESULT SetMSOffer([in] BSTR bstrNewVal); [id(0x00000024), helpstring("method GetOtherOffer")] HRESULT GetOtherOffer([out, retval] BSTR* pbstrVal); [id(0x00000025), helpstring("method SetOtherOffer")] HRESULT SetOtherOffer([in] BSTR bstrNewVal); [id(0x00000026), helpstring("method GetAddress2")] HRESULT GetAddress2([out, retval] BSTR* pbstrVal); [id(0x00000027), helpstring("method SetAddress2")] HRESULT SetAddress2([in] BSTR bstrNewVal); [id(0x00000052), helpstring("method AsyncProcessHandshakeRequest")] HRESULT AsyncProcessHandshakeRequest([in] long bReviseCustInfo); [id(0x00000053), helpstring("method AsyncProcessNewLicenseRequest")] HRESULT AsyncProcessNewLicenseRequest(); [id(0x00000054), helpstring("method AsyncProcessReissueLicenseRequest")] HRESULT AsyncProcessReissueLicenseRequest(); [id(0x00000056), helpstring("method AsyncProcessReviseCustInfoRequest")] HRESULT AsyncProcessReviseCustInfoRequest(); [id(0x0000005a), helpstring("method GetAsyncProcessReturnCode")] HRESULT GetAsyncProcessReturnCode([out, retval] unsigned long* pdwRetCode); [id(0x0000005d), helpstring("method AsyncProcessDroppedLicenseRequest")] HRESULT AsyncProcessDroppedLicenseRequest(); [id(0x00000064), helpstring("method GenerateInstallationId")] HRESULT GenerateInstallationId([out, retval] BSTR* pbstrVal); [id(0x00000065), helpstring("method DepositConfirmationId")] HRESULT DepositConfirmationId( [in] BSTR bstrVal, [out, retval] unsigned long* pdwRetCode); [id(0x00000066), helpstring("method GetExpirationInfo")] HRESULT GetExpirationInfo( [out] unsigned long* pdwWPALeft, [out, retval] unsigned long* pdwEvalLeft); [id(0x00000067), helpstring("method AsyncProcessRegistrationRequest")] HRESULT AsyncProcessRegistrationRequest(); [id(0x00000068), helpstring("method ProcessHandshakeRequest")] HRESULT ProcessHandshakeRequest([in] long bReviseCustInfo); [id(0x00000069), helpstring("method ProcessNewLicenseRequest")] HRESULT ProcessNewLicenseRequest(); [id(0x0000006a), helpstring("method ProcessDroppedLicenseRequest")] HRESULT ProcessDroppedLicenseRequest(); [id(0x0000006b), helpstring("method ProcessReissueLicenseRequest")] HRESULT ProcessReissueLicenseRequest(); [id(0x0000006d), helpstring("method ProcessReviseCustInfoRequest")] HRESULT ProcessReviseCustInfoRequest(); [id(0x0000006e), helpstring("method EnsureInternetConnection")] HRESULT EnsureInternetConnection(); [id(0x0000006f), helpstring("method SetProductKey")] HRESULT SetProductKey([in] LPWSTR pszNewProductKey); [id(0x00000070), helpstring("method GetProductID")] HRESULT GetProductID([out, retval] BSTR* pbstrVal); [id(0x00000071), helpstring("method VerifyCheckDigits")] HRESULT VerifyCheckDigits( BSTR bstrCIDIID, [out, retval] long* pbValue); }; [ odl, uuid(6A07C5A3-9C67-4BB6-B020-ECBE7FDFD326), helpstring("ICOMLicenseAgent Interface 2"), dual, oleautomation ] interface ICOMLicenseAgent2 : ICOMLicenseAgent { [id(0x00000072), helpstring("method SetReminders")] HRESULT SetReminders(long bValue); [id(0x00000073), helpstring("method GetReminders")] HRESULT GetReminders(long* pbValue); [id(0x00000074), helpstring("method GetKeyType")] HRESULT GetKeyType([out, retval] unsigned long* pdwKeyType); }; }; ================================================ FILE: include/nsis/api.h ================================================ /* * 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_ */ ================================================ FILE: include/nsis/nsis_tchar.h ================================================ /* * 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__) ================================================ FILE: include/nsis/pluginapi.c ================================================ #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:(int)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 : (int)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(void) { TCHAR buf[128]; if (popstringn(buf,COUNTOF(buf))) return 0; return nsishelper_str_to_ptr(buf); } int NSISCALL popint_or(void) { 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); } ================================================ FILE: include/nsis/pluginapi.h ================================================ #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(void); #define popint() ( (int) popintptr() ) int NSISCALL popint_or(void); // 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___ ================================================ FILE: include/slpublic.h ================================================ #pragma once #include #ifdef __cplusplus extern "C" { #endif typedef GUID SLID; typedef PVOID HSLC; DEFINE_GUID(WINDOWS_SLID, 0x55c92734, 0xd682, 0x4d71, 0x98, 0x3e, 0xd6, 0xec, 0x3f, 0x16, 0x05, 0x9f); typedef enum _tagSLLICENSINGSTATUS { SL_LICENSING_STATUS_UNLICENSED, SL_LICENSING_STATUS_LICENSED, SL_LICENSING_STATUS_IN_GRACE_PERIOD, SL_LICENSING_STATUS_NOTIFICATION, SL_LICENSING_STATUS_LAST } SLLICENSINGSTATUS; typedef struct _tagSL_LICENSING_STATUS { SLID SkuId; SLLICENSINGSTATUS eStatus; DWORD dwGraceTime; DWORD dwTotalGraceDays; HRESULT hrReason; UINT64 qwValidityExpiration; } SL_LICENSING_STATUS; #ifdef __cplusplus } #endif ================================================ FILE: include/wuapi.h ================================================ /* 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 ================================================ FILE: include/wuerror.h ================================================ /*************************************************************************** * * * 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_ ================================================ FILE: launcher/CplTasks.xml ================================================ @"%ProgramFiles%\Legacy Update\LegacyUpdate.exe",-3 legacy update;legacyupdate;update;windows;microsoft;driver;security;software; "%ProgramFiles%\Legacy Update\LegacyUpdate.exe" ================================================ FILE: launcher/InitRunOnce.c ================================================ #include #include #include "HResult.h" #include "LoadImage.h" #include "MsgBox.h" #include "Registry.h" #include "VersionInfo.h" #include "resource.h" #define HK_RUNCMD 1 typedef DWORD (__fastcall *_ThemeWaitForServiceReady)(DWORD timeout); typedef DWORD (__fastcall *_ThemeWatchForStart)(void); static const COLORREF WallpaperColorWinXP = RGB( 0, 78, 152); // #004e98 static const COLORREF WallpaperColorWin8 = RGB(32, 103, 178); // #2067b2 static const COLORREF WallpaperColorWin10 = RGB(24, 0, 82); // #180052 static const WCHAR RunOnceClassName[] = L"LegacyUpdateRunOnce"; static HANDLE g_cmdHandle; static void StartThemes(void) { // Ask UxInit.dll to ask the Themes service to start a session for this desktop. Themes doesn't automatically start a // session for the SYSTEM desktop, so we need to ask it to. This matches what msoobe.exe does on first boot. // Windows 7 moves this to UxInit.dll HMODULE shsvcs = LoadLibrary(L"UxInit.dll"); if (!shsvcs) { shsvcs = LoadLibrary(L"shsvcs.dll"); if (!shsvcs) { return; } } // Get functions by ordinals _ThemeWaitForServiceReady $ThemeWaitForServiceReady = (_ThemeWaitForServiceReady)GetProcAddress(shsvcs, MAKEINTRESOURCEA(2)); _ThemeWatchForStart $ThemeWatchForStart = (_ThemeWatchForStart)GetProcAddress(shsvcs, MAKEINTRESOURCEA(1)); // 1. Wait up to 1000ms for Themes to start if ($ThemeWaitForServiceReady) { $ThemeWaitForServiceReady(1000); } // 2. Prompt Themes to start a session for the SYSTEM desktop if ($ThemeWatchForStart) { $ThemeWatchForStart(); } FreeLibrary(shsvcs); } static BOOL RunCmd(LPPROCESS_INFORMATION processInfo) { if (g_cmdHandle) { return TRUE; } WCHAR cmd[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\cmd.exe", cmd, ARRAYSIZE(cmd)); STARTUPINFO startupInfo = {0}; startupInfo.cb = sizeof(startupInfo); if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, processInfo)) { MsgBox(NULL, L"Launching cmd.exe failed", NULL, MB_OK | MB_ICONERROR); return FALSE; } CloseHandle(processInfo->hThread); g_cmdHandle = processInfo->hProcess; return TRUE; } static LRESULT CALLBACK RunOnceWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_NCHITTEST: // Don't accept any mouse input return HTNOWHERE; case WM_HOTKEY: // Shift-F10 to run cmd if (wParam == HK_RUNCMD) { DWORD exitCode = 0; if (!g_cmdHandle || (GetExitCodeProcess(g_cmdHandle, &exitCode) && exitCode != STILL_ACTIVE)) { PROCESS_INFORMATION processInfo; RunCmd(&processInfo); } } break; case WM_DESTROY: PostQuitMessage(0); break; } return DefWindowProc(hwnd, message, wParam, lParam);; } static void ResetSetupKey(void) { HKEY key; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGPATH_SETUP, 0, KEY_ALL_ACCESS, &key) != ERROR_SUCCESS) { return; } // Reset CmdLine to empty string LPWSTR cmdLine = L""; DWORD cmdLineLength = 0; if (SUCCEEDED(GetRegistryString(key, NULL, L"CmdLine_LegacyUpdateBackup", 0, &cmdLine, &cmdLineLength))) { RegDeleteValue(key, L"CmdLine_LegacyUpdateBackup"); } RegSetValueEx(key, L"CmdLine", 0, REG_SZ, (const BYTE *)cmdLine, cmdLineLength * sizeof(WCHAR)); // Reset SetupType to 0 DWORD setupType = 0; if (SUCCEEDED(GetRegistryDword(key, NULL, L"SetupType_LegacyUpdateBackup", 0, &setupType))) { RegDeleteValue(key, L"SetupType_LegacyUpdateBackup"); } RegSetValueEx(key, L"SetupType", 0, REG_DWORD, (const BYTE *)&setupType, sizeof(setupType)); // Reset SetupShutdownRequired (likely doesn't exist) RegDeleteValue(key, L"SetupShutdownRequired"); RegCloseKey(key); } static BOOL IsSystemUser(void) { static BOOL _isSystemUserInitialized = FALSE; static BOOL _isSystemUser = FALSE; if (!_isSystemUserInitialized) { _isSystemUserInitialized = TRUE; // NT AUTHORITY\SYSTEM (S-1-5-18) SID systemSid = {0}; systemSid.Revision = SID_REVISION; systemSid.SubAuthorityCount = 1; systemSid.IdentifierAuthority.Value[5] = 5; systemSid.SubAuthority[0] = 18; PTOKEN_USER tokenInfo = NULL; HANDLE token = NULL; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token)) { goto end; } DWORD tokenInfoLen = 0; GetTokenInformation(token, TokenUser, NULL, 0, &tokenInfoLen); tokenInfo = (PTOKEN_USER)LocalAlloc(LPTR, tokenInfoLen); if (!GetTokenInformation(token, TokenUser, tokenInfo, tokenInfoLen, &tokenInfoLen)) { goto end; } _isSystemUser = EqualSid(tokenInfo->User.Sid, &systemSid); end: if (tokenInfo) { LocalFree(tokenInfo); } if (token) { CloseHandle(token); } } return _isSystemUser; } static void CreateRunOnceWindow(void) { // Create window WNDCLASS wndClass = {0}; wndClass.style = CS_VREDRAW | CS_HREDRAW | CS_OWNDC | CS_NOCLOSE; wndClass.lpfnWndProc = RunOnceWndProc; wndClass.hInstance = GetModuleHandle(NULL); wndClass.lpszClassName = RunOnceClassName; wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); if (!RegisterClass(&wndClass)) { TRACE(L"RegisterClass failed: %d", GetLastError()); return; } HWND hwnd = CreateWindowEx( WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE, wndClass.lpszClassName, L"Legacy Update", WS_POPUP, 0, 0, 0, 0, NULL, NULL, wndClass.hInstance, NULL ); if (!hwnd) { TRACE(L"CreateWindow failed: %d", GetLastError()); return; } // Register hotkey RegisterHotKey(hwnd, HK_RUNCMD, MOD_SHIFT, VK_F10); // Set wallpaper on SYSTEM setup mode desktop if (IsSystemUser()) { // Check if the display is 8-bit color or lower HDC dc = GetDC(NULL); int bpp = GetDeviceCaps(dc, BITSPIXEL); ReleaseDC(NULL, dc); if (bpp >= 8) { // Set the wallpaper color COLORREF color = GetSysColor(COLOR_DESKTOP); if (AtLeastWin10()) { color = WallpaperColorWin10; } else if (AtLeastWin8()) { color = WallpaperColorWin8; } else if ((IsWinXP2002() || IsWinXP2003()) && color == RGB(0, 0, 0)) { // XP uses a black wallpaper in fast user switching mode. Override to the default blue. color = WallpaperColorWinXP; } SetSysColors(1, (const INT[1]){COLOR_DESKTOP}, (const COLORREF[1]){color}); DWORD width = GetSystemMetrics(SM_CXSCREEN); DWORD height = GetSystemMetrics(SM_CYSCREEN); HBITMAP wallpaper = NULL; if (IsWin7()) { // 7: Bitmap in oobe dir WCHAR bmpPath[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\oobe\\background.bmp", bmpPath, ARRAYSIZE(bmpPath)); wallpaper = LoadImage(NULL, bmpPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); } else if (IsWinVista()) { if (GetVersionInfo()->wProductType == VER_NT_WORKSTATION) { // Vista: Resources in ooberesources.dll WCHAR ooberesPath[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\oobe\\ooberesources.dll", ooberesPath, ARRAYSIZE(ooberesPath)); HMODULE ooberes = LoadLibrary(ooberesPath); if (ooberes) { // Width logic is the same used by Vista msoobe.dll LPWSTR resource = GetSystemMetrics(SM_CXSCREEN) < 1200 ? L"OOBE_BACKGROUND_0" : L"OOBE_BACKGROUND_LARGE_0"; wallpaper = LoadPNGResource(ooberes, resource, RT_RCDATA); } FreeLibrary(ooberes); } else { // Server 2008: Bitmap in oobe dir WCHAR jpegPath[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\oobe\\msoobe_server.jpg", jpegPath, ARRAYSIZE(jpegPath)); wallpaper = LoadJPEGFile(jpegPath); } } if (wallpaper) { // Write to disk WCHAR tempPath[MAX_PATH]; ExpandEnvironmentStrings(L"%ProgramData%\\Legacy Update\\background.bmp", tempPath, ARRAYSIZE(tempPath)); if (GetFileAttributes(tempPath) != INVALID_FILE_ATTRIBUTES || ScaleAndWriteToBMP(wallpaper, width, height, tempPath)) { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)tempPath, SPIF_SENDWININICHANGE); } DeleteObject(wallpaper); } } } ShowWindow(hwnd, SW_SHOW); UpdateWindow(hwnd); } static void FixUserWallpaper(void) { // Work around bug in at least Windows 7 SP1 where the pre-logon wallpaper persists into the user session. // We nudge it into doing the right thing by re-applying the wallpaper from the registry. // This also occurs if there is no wallpaper set and the background is a solid color (i.e. on Server Core). LPWSTR wallpaper = NULL; DWORD length = 0; if (SUCCEEDED(GetRegistryString(HKEY_CURRENT_USER, REGPATH_CPL_DESKTOP, L"Wallpaper", 0, &wallpaper, &length))) { if (length > 0) { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)wallpaper, SPIF_SENDWININICHANGE); } } else { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)L"", SPIF_SENDWININICHANGE); } if (wallpaper) { LocalFree(wallpaper); } } void RunOnce(BOOL postInstall) { // Allow breaking out by entering safe mode if (GetSystemMetrics(SM_CLEANBOOT)) { WCHAR message[4096]; LoadString(GetModuleHandle(NULL), IDS_RUNONCESAFEMODE, message, ARRAYSIZE(message)); MsgBox(NULL, message, NULL, MB_OK | MB_ICONWARNING); ResetSetupKey(); PostQuitMessage(0); return; } HWND firstUxWnd = 0; if (postInstall) { // Fix pre-logon wallpaper persisting into the user's desktop FixUserWallpaper(); } else { if (IsSystemUser()) { // Start Themes on this desktop StartThemes(); // Find and hide the FirstUxWnd window, if it exists (Windows 7+) firstUxWnd = FindWindow(L"FirstUxWndClass", NULL); if (firstUxWnd) { ShowWindow(firstUxWnd, SW_HIDE); } } // Set up our window CreateRunOnceWindow(); } // 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 LPWSTR eventName = AtLeastWinVista() ? L"ShellDesktopSwitchEvent" : L"msgina: ShellReadyEvent"; HANDLE eventHandle = OpenEvent(EVENT_MODIFY_STATE, 0, eventName); if (eventHandle) { SetEvent(eventHandle); CloseHandle(eventHandle); } // Construct path to LegacyUpdateSetup.exe LPWSTR setupPath; GetOwnFileName(&setupPath); wcsrchr(setupPath, L'\\')[1] = L'\0'; wcsncat(setupPath, L"LegacyUpdateSetup.exe", MAX_PATH - wcslen(setupPath) - 1); // Execute and wait for completion STARTUPINFO startupInfo = {0}; startupInfo.cb = sizeof(startupInfo); LPWSTR cmdLine = (LPWSTR)LocalAlloc(LPTR, (lstrlen(setupPath) + 16) * sizeof(WCHAR)); wsprintf(cmdLine, L"\"%ls\" %ls", setupPath, postInstall ? L"/postinstall" : L"/runonce"); PROCESS_INFORMATION processInfo = {0}; if (!CreateProcess(setupPath, cmdLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, &processInfo)) { LocalFree(setupPath); LocalFree(cmdLine); WCHAR title[4096]; LoadString(GetModuleHandle(NULL), IDS_RUNONCEFAILED, title, ARRAYSIZE(title)); LPWSTR message = GetMessageForHresult(HRESULT_FROM_WIN32(GetLastError())); MsgBox(NULL, title, message, MB_OK | MB_ICONERROR); if (message) { LocalFree(message); } ResetSetupKey(); #ifdef _DEBUG // Run cmd to inspect what happened if (!RunCmd(&processInfo)) { PostQuitMessage(0); return; } #else PostQuitMessage(0); return; #endif } LocalFree(setupPath); LocalFree(cmdLine); CloseHandle(processInfo.hThread); // Wait for it to finish, while running a message loop MSG msg = {0}; while (WaitForSingleObject(processInfo.hProcess, 100) == WAIT_TIMEOUT) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } } DWORD exitCode = 0; if (GetExitCodeProcess(processInfo.hProcess, &exitCode) && exitCode != ERROR_SUCCESS && exitCode != ERROR_SUCCESS_REBOOT_REQUIRED) { ResetSetupKey(); #ifdef _DEBUG TRACE(L"Setup exited with code: %d", exitCode); // Run cmd to inspect what happened if (RunCmd(&processInfo)) { MSG msg = {0}; while (WaitForSingleObject(processInfo.hProcess, 100) == WAIT_TIMEOUT) { while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } } } #endif } CloseHandle(processInfo.hProcess); // Don't let SYSTEM cmd keep running beyond runonce if (g_cmdHandle) { TerminateProcess(g_cmdHandle, 0); CloseHandle(g_cmdHandle); } // Show FirstUxWnd again if (firstUxWnd) { ShowWindow(firstUxWnd, SW_SHOW); } PostQuitMessage(0); } ================================================ FILE: launcher/LaunchLog.c ================================================ #include "MsgBox.h" #include "ViewLog.h" // Matches LogAction enum in ViewLog.h static const LPCWSTR logActions[][4] = { {L"system", L"sys", NULL}, {L"local", L"user", NULL}, {L"locallow", L"userlow", L"low", NULL}, {L"windowsupdate", L"wu", NULL}, }; void LaunchLog(int argc, LPWSTR *argv, int nCmdShow) { LogAction action = LogActionSystem; if (argc > 0) { BOOL found = FALSE; for (DWORD i = 0; i < ARRAYSIZE(logActions); i++) { for (DWORD j = 0; logActions[i][j] != NULL; j++) { if (wcscmp(argv[0], logActions[i][j]) == 0) { action = (LogAction)i; found = TRUE; break; } } if (found) { break; } } } HRESULT hr = ViewLog(action, nCmdShow, FALSE); if (!SUCCEEDED(hr)) { LPWSTR message = GetMessageForHresult(hr); MsgBox(NULL, message, NULL, MB_OK); LocalFree(message); } PostQuitMessage(hr); } ================================================ FILE: launcher/LaunchUpdateSite.c ================================================ #include "stdafx.h" #include "main.h" #include "resource.h" #include #include "Exec.h" #include "HResult.h" #include "MsgBox.h" #include "RegisterServer.h" #include "Registry.h" #include "SelfElevate.h" #include "User.h" #include "VersionInfo.h" #include "Wow64.h" const LPWSTR UpdateSiteURLHttp = L"http://legacyupdate.net/windowsupdate/v6/"; const LPWSTR UpdateSiteURLHttps = L"https://legacyupdate.net/windowsupdate/v6/"; const LPWSTR UpdateSiteFirstRunFlag = L"?firstrun=true"; DEFINE_GUID(IID_ILegacyUpdateCtrl, 0xC33085BB, 0xC3E1, 0x4D27, 0xA2, 0x14, 0xAF, 0x01, 0x95, 0x3D, 0xF5, 0xE5); DEFINE_GUID(CLSID_LegacyUpdateCtrl, 0xAD28E0DF, 0x5F5A, 0x40B5, 0x94, 0x32, 0x85, 0xEF, 0xD9, 0x7D, 0x1F, 0x9F); static LPWSTR GetUpdateSiteURL(void) { // Fallback: Use SSL only on Vista and up BOOL useHTTPS = AtLeastWinVista(); // Get the Windows Update website URL set by Legacy Update setup LPWSTR data = NULL; DWORD size = 0; HRESULT hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_WU, L"URL", KEY_WOW64_64KEY, &data, &size); if (SUCCEEDED(hr)) { // Return based on the URL value if (wcscmp(data, UpdateSiteURLHttps) == 0) { useHTTPS = TRUE; } else if (wcscmp(data, UpdateSiteURLHttp) == 0) { useHTTPS = FALSE; } LocalFree(data); } return useHTTPS ? UpdateSiteURLHttps : UpdateSiteURLHttp; } HRESULT HandleIENotInstalled(void) { // Handle case where the user has uninstalled Internet Explorer using Programs and Features. if (AtLeastWin8() && !AtLeastWin10_1703()) { // Windows 8 - 10 1607: Directly prompt to reinstall IE using Fondue.exe. SYSTEM_INFO systemInfo = {0}; OurGetNativeSystemInfo(&systemInfo); LPCTSTR archSuffix = systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ? L"amd64" : L"x86"; WCHAR fondue[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\fondue.exe", fondue, ARRAYSIZE(fondue)); WCHAR fondueArgs[256]; wsprintf(fondueArgs, L"/enable-feature:Internet-Explorer-Optional-%ls", archSuffix); HRESULT hr = Exec(NULL, fondue, fondueArgs, NULL, SW_SHOWDEFAULT, FALSE, NULL); if (SUCCEEDED(hr)) { return S_OK; } } // Tell the user what they need to do, then open the Optional Features dialog. WCHAR message[4096]; LoadString(GetModuleHandle(NULL), IDS_IENOTINSTALLED, message, ARRAYSIZE(message)); MsgBox(NULL, message, NULL, MB_OK | MB_ICONEXCLAMATION); if (AtLeastWin10_1703()) { // Windows 10 1703+: IE is moved to a WindowsCapability, handled by the Settings app. Exec(NULL, L"ms-settings:optionalfeatures", NULL, NULL, SW_SHOWDEFAULT, FALSE, NULL); } else if (AtLeastWin7()) { // Windows 7: Optional Features dialog WCHAR optionalFeatures[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\OptionalFeatures.exe", optionalFeatures, ARRAYSIZE(optionalFeatures)); Exec(NULL, optionalFeatures, NULL, NULL, SW_SHOWDEFAULT, FALSE, NULL); } return S_OK; } void LaunchUpdateSite(int argc, LPWSTR *argv, int nCmdShow) { HRESULT hr = S_OK; IWebBrowser2 *browser = NULL; VARIANT url = {0}; VARIANT flags = {0}; VARIANT nullVariant = {0}; LPTSTR siteURL = NULL; HMONITOR monitor = NULL; // If this OS was upgraded, tell the user they need to re-run setup DWORD lastOSVersion = 0; if (!AtLeastWin10() && SUCCEEDED(GetRegistryDword(HKEY_LOCAL_MACHINE, REGPATH_LEGACYUPDATE_SETUP, L"LastOSVersion", KEY_WOW64_64KEY, &lastOSVersion))) { // Allow Vista build 6002 -> 6003 (ESU) if (lastOSVersion < GetVersion() && !(HIWORD(lastOSVersion) == 6002 && GetWinBuild() == 6003)) { WCHAR message[4096]; LoadString(GetModuleHandle(NULL), IDS_OSUPGRADED, message, ARRAYSIZE(message)); MsgBox(NULL, message, NULL, MB_OK | MB_ICONEXCLAMATION); goto end; } } // If running on 2k/XP, make sure we're elevated. If not, show Run As prompt. if (!AtLeastWinVista() && !IsUserAdmin()) { LPWSTR args = (LPWSTR)LocalAlloc(LPTR, 512 * sizeof(WCHAR)); wsprintf(args, L"/launch %ls", argc > 0 ? argv[0] : L""); hr = SelfElevate(args, NULL); LocalFree(args); // Access denied happens when the user clicks No/Cancel. if (hr == HRESULT_FROM_WIN32(ERROR_CANCELLED)) { hr = S_OK; } goto end; } // Can we instantiate our own ActiveX control? If not, try to register it. hr = CoCreateInstance(&CLSID_LegacyUpdateCtrl, NULL, CLSCTX_INPROC_SERVER, &IID_ILegacyUpdateCtrl, (void **)&browser); if (hr == REGDB_E_CLASSNOTREG || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) || hr == HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)) { TRACE(L"LegacyUpdateCtrl not registered"); hr = RegisterServer(0, TRUE, TRUE); CHECK_HR_OR_GOTO_END(L"RegisterServer"); hr = CoCreateInstance(&CLSID_LegacyUpdateCtrl, NULL, CLSCTX_INPROC_SERVER, &IID_ILegacyUpdateCtrl, (void **)&browser); CHECK_HR_OR_GOTO_END(L"Still failed to load LegacyUpdateCtrl"); IUnknown_Release(browser); } else if (!SUCCEEDED(hr)) { CHECK_HR_OR_GOTO_END(L"Create ILegacyUpdateCtrl"); } // 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 = CoCreateInstance(&CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, &IID_IWebBrowser2, (void **)&browser); // An install of IE can be "broken" in two ways: // - Class not registered: mshtml.dll unregistered, deleted, or uninstalled in Optional Features. // - Path not found: iexplore.exe is not present. if (hr == REGDB_E_CLASSNOTREG || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) || hr == HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)) { TRACE(L"IE not installed: %08x", hr); hr = HandleIENotInstalled(); goto end; } else if (!SUCCEEDED(hr)) { CHECK_HR_OR_GOTO_END(L"Create IWebBrowser2"); } // Get the URL we want to launch siteURL = GetUpdateSiteURL(); // Is this a first run launch? Append first run flag if so. if (argc > 0 && lstrcmpi(argv[0], L"/firstrun") == 0) { WCHAR newSiteURL[256]; wsprintf(newSiteURL, L"%ls%ls", siteURL, UpdateSiteFirstRunFlag); siteURL = newSiteURL; } VariantInit(&url); url.vt = VT_BSTR; url.bstrVal = SysAllocString(siteURL); VariantInit(&flags); flags.vt = VT_I4; flags.lVal = 0; VariantInit(&nullVariant); hr = IWebBrowser2_Navigate2(browser, &url, &flags, &nullVariant, &nullVariant, &nullVariant); CHECK_HR_OR_GOTO_END(L"Navigate2"); HWND ieHwnd = NULL; hr = IWebBrowser2_get_HWND(browser, (SHANDLE_PTR *)&ieHwnd); CHECK_HR_OR_GOTO_END(L"get_HWND"); // Pass through our nCmdShow flag ShowWindow(ieHwnd, nCmdShow); // Are we on a small display? If so, resize and maximise the window. monitor = MonitorFromWindow(ieHwnd, MONITOR_DEFAULTTONEAREST); MONITORINFO monitorInfo = {0}; 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 = 0, height = 0; IWebBrowser2_get_Width(browser, &width); IWebBrowser2_get_Height(browser, &height); if (width < 800) { width = workWidth < 800 ? workWidth : 800; IWebBrowser2_put_Width(browser, width); } if (height < 600) { height = workHeight < 600 ? workHeight : 600; IWebBrowser2_put_Height(browser, height); } LONG left = 0, top = 0; IWebBrowser2_get_Left(browser, &left); IWebBrowser2_get_Top(browser, &top); if (left + width > workWidth) { IWebBrowser2_put_Left(browser, 0); } if (top + height > workHeight) { IWebBrowser2_put_Top(browser, 0); } // Maximize if below 1152x864, if not already overridden by user if (workWidth <= 1152 && nCmdShow == SW_SHOWDEFAULT) { ShowWindow(ieHwnd, SW_MAXIMIZE); } } // IE window won't be fully initialized until we make it visible. IWebBrowser2_put_Visible(browser, TRUE); // Focus the window, since it seems to not always get focus as it should. SetForegroundWindow(ieHwnd); end: if (!SUCCEEDED(hr)) { LPWSTR message = GetMessageForHresult(hr); MsgBox(NULL, message, NULL, MB_ICONEXCLAMATION); LocalFree(message); } VariantClear(&url); VariantClear(&flags); VariantClear(&nullVariant); if (browser) { IWebBrowser2_Release(browser); } CoUninitialize(); PostQuitMessage(0); } ================================================ FILE: launcher/Makefile ================================================ FILES = \ $(wildcard *.c) \ ../shared/Exec.c \ ../shared/HResult.c \ ../shared/LegacyUpdate.c \ ../shared/LoadImage.c \ ../shared/Log.c \ ../shared/Registry.c \ ../shared/ViewLog.c \ ../shared/Wow64.c RCFILES = resource.rc DEFFILES = ../LegacyUpdate/LegacyUpdate.def BIN = obj/LegacyUpdate$(ARCH).exe all:: all-archs all-archs: all-32 all-64 include ../build/shared.mk CFLAGS += \ -DLOG_NAME="\"Launcher\"" LDFLAGS += \ -Wl,--subsystem,windows \ -Lobj \ -lmsvcrt \ -lpsapi \ -lkernel32 \ -luser32 \ -lole32 \ -loleaut32 \ -ladvapi32 \ -lcomctl32 \ -lshell32 \ -lshlwapi \ -lversion \ -lgdi32 \ -lmsimg32 ifeq ($(ARCH),64) LDFLAGS += -Wl,-ewWinMain else LDFLAGS += -Wl,-e_wWinMain endif test: +$(MAKE) DEBUG=$(DEBUG) ./obj/LegacyUpdate.exe .PHONY: all all-archs all-32 all-64 test ================================================ FILE: launcher/MsgBox.c ================================================ #include "stdafx.h" #include "main.h" #include "resource.h" #undef _WIN32_WINNT #define _WIN32_WINNT _WIN32_WINNT_VISTA #include typedef HRESULT (WINAPI *_TaskDialogIndirect)(const TASKDIALOGCONFIG *pTaskConfig, int *pnButton, int *pnRadioButton, BOOL *pfVerificationFlagChecked); static BOOL _loadedTaskDialog = FALSE; static _TaskDialogIndirect $TaskDialogIndirect; int MsgBox(HWND hwnd, LPCTSTR instruction, LPCTSTR body, UINT type) { if (!_loadedTaskDialog) { _loadedTaskDialog = TRUE; $TaskDialogIndirect = (_TaskDialogIndirect)GetProcAddress(LoadLibrary(L"comctl32.dll"), "TaskDialogIndirect"); } // Play the sound matching the icon, because MB_USERICON doesn't play a sound MessageBeep(type & 0x000000F0); type = (type & ~0x000000F0) | MB_USERICON; if (!$TaskDialogIndirect) { LPWSTR finalBody = (LPWSTR)instruction; if (body && lstrlen(body) > 0) { size_t length = lstrlen(instruction) + lstrlen(body) + 3; finalBody = (LPWSTR)LocalAlloc(LPTR, length * sizeof(TCHAR)); wsprintf(finalBody, L"%ls\n\n%ls", instruction, body); } MSGBOXPARAMS params = {0}; params.cbSize = sizeof(MSGBOXPARAMS); params.hwndOwner = hwnd; params.hInstance = GetModuleHandle(NULL); params.lpszText = finalBody; params.lpszCaption = L"Legacy Update"; params.dwStyle = type; params.lpszIcon = MAKEINTRESOURCE(IDI_APPICON); int result = MessageBoxIndirect(¶ms); if (finalBody != body) { LocalFree(finalBody); } return result; } TASKDIALOG_COMMON_BUTTON_FLAGS buttons = 0; DWORD flags = TDF_POSITION_RELATIVE_TO_WINDOW; switch (type & 0x0000000F) { case MB_OK: buttons = TDCBF_OK_BUTTON; flags |= TDF_ALLOW_DIALOG_CANCELLATION; break; case MB_OKCANCEL: buttons = TDCBF_OK_BUTTON | TDCBF_CANCEL_BUTTON; flags |= TDF_ALLOW_DIALOG_CANCELLATION; break; case MB_YESNO: buttons = TDCBF_YES_BUTTON | TDCBF_NO_BUTTON; break; default: break; } TASKDIALOGCONFIG config = {0}; config.cbSize = sizeof(TASKDIALOGCONFIG); config.hwndParent = hwnd; config.hInstance = GetModuleHandle(NULL); config.dwFlags = flags; config.dwCommonButtons = buttons; config.pszWindowTitle = L"Legacy Update"; config.pszMainInstruction = instruction; config.pszContent = body; config.pszMainIcon = MAKEINTRESOURCE(IDI_APPICON); int button = 0; $TaskDialogIndirect(&config, &button, NULL, NULL); return button; } ================================================ FILE: launcher/MsgBox.h ================================================ #pragma once #include int MsgBox(HWND hwnd, LPCTSTR instruction, LPCTSTR body, UINT type); ================================================ FILE: launcher/Options.c ================================================ #include #include "Exec.h" #include "VersionInfo.h" #include "Wow64.h" void LaunchOptions(int nCmdShow) { #if !_WIN64 // 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 = NULL; BOOL isRedirected = DisableWow64FsRedirection(&oldValue); #endif HRESULT hr = E_FAIL; if (AtLeastWin10()) { // Windows 10+: Open Settings app hr = Exec(NULL, L"ms-settings:windowsupdate-options", NULL, NULL, SW_SHOWDEFAULT, FALSE, NULL); } else if (AtLeastWinVista()) { // Windows Vista, 7, 8: Open Windows Update control panel WCHAR wuauclt[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\wuauclt.exe", wuauclt, ARRAYSIZE(wuauclt)); hr = Exec(NULL, wuauclt, L"/ShowOptions", NULL, SW_SHOWDEFAULT, FALSE, NULL); } else { // Windows 2000, XP: Open Automatic Updates control panel WCHAR wuaucpl[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\wuaucpl.cpl", wuaucpl, ARRAYSIZE(wuaucpl)); hr = Exec(NULL, wuaucpl, NULL, NULL, SW_SHOWDEFAULT, FALSE, NULL); } #if !_WIN64 // Revert WOW64 redirection if we changed it if (isRedirected) { RevertWow64FsRedirection(oldValue); } #endif PostQuitMessage(hr); } ================================================ FILE: launcher/RegisterServer.c ================================================ #include #include "Exec.h" #include "HResult.h" #include "LegacyUpdate.h" #include "MsgBox.h" #include "Registry.h" #include "SelfElevate.h" #include "User.h" #include "VersionInfo.h" #include "Wow64.h" #include "resource.h" static HRESULT RegisterDllInternal(LPWSTR path, BOOL state) { HMODULE module = LoadLibrary(path); if (!module) { return HRESULT_FROM_WIN32(GetLastError()); } HRESULT hr = S_OK; FARPROC proc = GetProcAddress(module, state ? "DllRegisterServer" : "DllUnregisterServer"); if (!proc) { hr = HRESULT_FROM_WIN32(GetLastError()); goto end; } hr = ((HRESULT (WINAPI *)(void))proc)(); end: if (module) { FreeLibrary(module); } return hr; } static HRESULT RegisterDllExternal(LPWSTR path, BOOL state) { WCHAR regsvr32[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\regsvr32.exe", regsvr32, ARRAYSIZE(regsvr32)); LPWSTR args = (LPWSTR)LocalAlloc(LPTR, (lstrlen(path) + 6) * sizeof(WCHAR)); wsprintf(args, L"/s %ls\"%ls\"", state ? L"" : L"/u ", path); DWORD status = 0; HRESULT hr = Exec(NULL, regsvr32, args, NULL, SW_HIDE, TRUE, &status); if (!SUCCEEDED(hr)) { hr = HRESULT_FROM_WIN32(GetLastError()); return hr; } if (status != 0) { // Run again without /s, so the user can see the error wsprintf(args, L"%ls\"%ls\"", state ? L"" : L"/u ", path); hr = Exec(NULL, regsvr32, args, NULL, SW_SHOWDEFAULT, TRUE, &status); } return status == 0 ? S_OK : E_FAIL; } HRESULT RegisterServer(HWND hwnd, BOOL state, BOOL forLaunch) { // Ensure elevation HRESULT hr = S_OK; LPWSTR installPath = NULL; LPWSTR dllPath = NULL; if (!IsUserAdmin()) { LPWSTR args = (LPWSTR)LocalAlloc(LPTR, 512 * sizeof(WCHAR)); wsprintf(args, L"%ls %i", state ? L"/regserver" : L"/unregserver", hwnd); DWORD code = 0; hr = SelfElevate(args, &code); if (!SUCCEEDED(hr)) { // Ignore error on cancelling UAC dialog if (hr == HRESULT_FROM_WIN32(ERROR_CANCELLED)) { hr = S_OK; } goto end; } hr = HRESULT_FROM_WIN32(code); goto end; } hr = GetInstallPath(&installPath); CHECK_HR_OR_GOTO_END(L"GetInstallPath"); dllPath = (LPWSTR)LocalAlloc(LPTR, MAX_PATH * sizeof(WCHAR)); wsprintf(dllPath, L"%ls\\LegacyUpdate.dll", installPath); #ifdef _DEBUG // Warn if registration path differs, to help with debugging LPWSTR currentPath = NULL; hr = GetRegistryString(HKEY_CLASSES_ROOT, L"CLSID\\{AD28E0DF-5F5A-40B5-9432-85EFD97D1F9F}\\InprocServer32", NULL, KEY_WOW64_64KEY, ¤tPath, NULL); if (SUCCEEDED(hr) && wcscmp(currentPath, dllPath) != 0) { if (MsgBox(hwnd, L"DEBUG: Native dll currently registered at a different path. Override?", currentPath, MB_YESNO) != IDYES) { hr = S_OK; goto end; } } #endif hr = RegisterDllInternal(dllPath, state); if (!SUCCEEDED(hr)) { // Try external registration if (SUCCEEDED(RegisterDllExternal(dllPath, state))) { hr = S_OK; } else { goto end; } } #if _WIN64 if (!SUCCEEDED(hr)) { goto end; } wsprintf(dllPath, L"%ls\\LegacyUpdate32.dll", installPath); #ifdef _DEBUG // Warn if registration path differs, to help with debugging hr = GetRegistryString(HKEY_CLASSES_ROOT, L"CLSID\\{AD28E0DF-5F5A-40B5-9432-85EFD97D1F9F}\\InprocServer32", NULL, KEY_WOW64_32KEY, ¤tPath, NULL); if (SUCCEEDED(hr) && wcscmp(currentPath, dllPath) != 0) { if (MsgBox(hwnd, L"DEBUG: 32-bit dll currently registered at a different path. Override?", currentPath, MB_YESNO) != IDYES) { hr = S_OK; goto end; } } #endif hr = RegisterDllExternal(dllPath, state); #endif end: if (installPath) { LocalFree(installPath); } if (dllPath) { LocalFree(dllPath); } if (!forLaunch) { if (!SUCCEEDED(hr)) { WCHAR title[4096]; LoadString(GetModuleHandle(NULL), state ? IDS_REGISTERFAILED : IDS_UNREGISTERFAILED, title, ARRAYSIZE(title)); LPWSTR message = GetMessageForHresult(hr); MsgBox(hwnd, title, message, MB_ICONERROR); LocalFree(message); } PostQuitMessage(hr); } return hr; } ================================================ FILE: launcher/RegisterServer.h ================================================ #pragma once #include HRESULT RegisterServer(HWND hwnd, BOOL state, BOOL forLaunch); ================================================ FILE: launcher/SelfElevate.c ================================================ #include "SelfElevate.h" #include #include "Exec.h" #include "VersionInfo.h" HRESULT SelfElevate(LPWSTR args, LPDWORD code) { LPWSTR fileName = NULL; GetOwnFileName(&fileName); HRESULT hr = Exec(L"runas", fileName, args, NULL, SW_SHOWDEFAULT, TRUE, code); CHECK_HR_OR_RETURN(L"Exec"); LocalFree(fileName); return hr; } ================================================ FILE: launcher/SelfElevate.h ================================================ #pragma once #include HRESULT SelfElevate(LPWSTR args, LPDWORD code); ================================================ FILE: launcher/main.c ================================================ #include "stdafx.h" #include "main.h" #include "resource.h" #include #include #include #include #include "Log.h" #include "MsgBox.h" #include "RegisterServer.h" #include "Startup.h" HINSTANCE g_hInstance; extern void LaunchUpdateSite(int argc, LPWSTR *argv, int nCmdShow); extern void LaunchOptions(int nCmdShow); extern void LaunchLog(int argc, LPWSTR *argv, int nCmdShow); extern void RunOnce(BOOL postInstall); typedef enum Action { ActionLaunch, ActionOptions, ActionLog, ActionRunOnce, ActionRegServer, ActionUnregServer } Action; static const LPWSTR actions[] = { L"/launch", L"/options", L"/log", L"/runonce", L"/regserver", L"/unregserver" }; #ifndef __clang__ EXTERN_C __declspec(dllexport) #endif int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { g_hInstance = hInstance; Startup(); OpenLog(); // nCmdShow seems to give us garbage values. Get it from the startup info struct. STARTUPINFO startupInfo; GetStartupInfo(&startupInfo); nCmdShow = (startupInfo.dwFlags & STARTF_USESHOWWINDOW) ? startupInfo.wShowWindow : SW_SHOWDEFAULT; // Init COM HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); CHECK_HR_OR_GOTO_END(L"CoInitializeEx"); // Init common controls INITCOMMONCONTROLSEX initComctl = {0}; initComctl.dwSize = sizeof(initComctl); initComctl.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&initComctl); int argc; LPWSTR *argv = CommandLineToArgvW(GetCommandLineW(), &argc); LPWSTR actionFlag = L"/launch"; if (argc > 1) { actionFlag = argv[1]; } // All remaining args past the action LPWSTR *flags = NULL; int flagsCount = 0; if (argc > 2) { flags = &argv[2]; flagsCount = argc - 2; } Action action = -1; for (DWORD i = 0; i < ARRAYSIZE(actions); i++) { if (wcscmp(actionFlag, actions[i]) == 0) { action = i; break; } } switch (action) { case ActionLaunch: LaunchUpdateSite(flagsCount, flags, nCmdShow); break; case ActionOptions: LaunchOptions(nCmdShow); break; case ActionLog: LaunchLog(flagsCount, flags, nCmdShow); break; case ActionRunOnce: { BOOL postInstall = flagsCount > 0 ? wcscmp(flags[0], L"postinstall") == 0 : FALSE; RunOnce(postInstall); break; } case ActionRegServer: case ActionUnregServer: { BOOL state = action == ActionRegServer; HWND hwnd = flagsCount > 0 ? (HWND)(intptr_t)wcstol(flags[0], NULL, 10) : 0; RegisterServer(hwnd, state, FALSE); break; } default: { WCHAR title[4096], body[4096]; LoadString(GetModuleHandle(NULL), IDS_USAGE_TITLE, title, ARRAYSIZE(title)); LoadString(GetModuleHandle(NULL), IDS_USAGE_BODY, body, ARRAYSIZE(body)); MsgBox(NULL, title, body, MB_OK); PostQuitMessage(1); break; } } MSG msg = {0}; while (GetMessage(&msg, NULL, 0, 0) == 1) { TranslateMessage(&msg); DispatchMessage(&msg); switch (msg.message) { case WM_QUIT: case WM_DESTROY: hr = msg.wParam; break; } } end: CloseLog(); CoUninitialize(); ExitProcess(hr); return hr; } ================================================ FILE: launcher/main.h ================================================ EXTERN_C HINSTANCE g_hInstance; ================================================ FILE: launcher/manifest.xml ================================================ true/pm PerMonitorV2,PerMonitor ================================================ FILE: launcher/resource.h ================================================ #define IDI_APPICON 100 #define IDR_CPLTASKS 202 #define IDS_LEGACYUPDATEOCX 1 #define IDS_LEGACYUPDATE 2 #define IDS_CHECKFORUPDATES 3 #define IDS_CHECKFORUPDATES_ALT 4 #define IDS_USAGE_TITLE 5 #define IDS_USAGE_BODY 6 #define IDS_IENOTINSTALLED 7 #define IDS_REGISTERFAILED 8 #define IDS_UNREGISTERFAILED 9 #define IDS_RUNONCEFAILED 10 #define IDS_RUNONCESAFEMODE 11 #define IDS_OSUPGRADED 12 #define ID_MANIFEST 1 ================================================ FILE: launcher/resource.rc ================================================ #include "resource.h" #include #include "Version.h" ///////////////////////////////////////////////////////////////////////////// // 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 VERSION PRODUCTVERSION VERSION FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG | VS_FF_PRERELEASE #else FILEFLAGS 0 #endif FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "Hashbang Productions" VALUE "FileDescription", "Legacy Update" VALUE "FileVersion", VERSION_STRING VALUE "InternalName", "LegacyUpdate.exe" VALUE "LegalCopyright", "© Hashbang Productions. All rights reserved." VALUE "OriginalFilename", "LegacyUpdate.exe" VALUE "ProductName", "Legacy Update" VALUE "ProductVersion", VERSION_STRING END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0409, 0x04b0 END END ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_APPICON ICON "../LegacyUpdate/icon.ico" ///////////////////////////////////////////////////////////////////////////// // // XML // IDR_CPLTASKS XML "CplTasks.xml" ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE BEGIN // Shortcuts IDS_LEGACYUPDATEOCX "Legacy Update" IDS_LEGACYUPDATE "Legacy Update" IDS_CHECKFORUPDATES "Check for updates" IDS_CHECKFORUPDATES_ALT "Check for software and driver updates via Legacy Update." // Usage IDS_USAGE_TITLE "LegacyUpdate.exe usage" IDS_USAGE_BODY "" "LegacyUpdate.exe [/launch|/options|/log|/regserver|/unregserver]\n" "\n" "/launch\n" " Launch Legacy Update website in Internet Explorer\n" "\n" "/options\n" " Open the Windows Update Options control panel\n" "\n" "/log [system|local|locallow|windowsupdate]\n" " Open the specified log file\n" "\n" "/regserver\n" " Register ActiveX control\n" "\n" "/unregserver\n" " Unregister ActiveX control\n" "\n" "If no parameters are provided, /launch is assumed." // Launch IDS_IENOTINSTALLED "Internet Explorer is not installed. Use Optional Features in Control Panel to install it before using Legacy Update." IDS_OSUPGRADED "Windows has been upgraded since Legacy Update was installed. Run Legacy Update setup again to ensure all prerequisites are installed." // RegisterServer IDS_REGISTERFAILED "Failed to register Legacy Update ActiveX control" IDS_UNREGISTERFAILED "Failed to unregister Legacy Update ActiveX control" // RunOnce IDS_RUNONCEFAILED "Continuing Legacy Update setup failed" IDS_RUNONCESAFEMODE "Legacy Update setup was cancelled because the system is running in Safe Mode." END ///////////////////////////////////////////////////////////////////////////// // // Manifest // ID_MANIFEST RT_MANIFEST "manifest.xml" #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// ================================================ FILE: launcher/stdafx.h ================================================ #pragma once #ifndef STRICT #define STRICT #endif #define WINVER _WIN32_WINNT_WIN2K #define _WIN32_WINNT _WIN32_WINNT_WIN2K // Use msvcrt stdio functions #define __USE_MINGW_ANSI_STDIO 0 // Enable COM C interfaces #define CINTERFACE #define COBJMACROS #define INITGUID #include "resource.h" #include #include "Trace.h" ================================================ FILE: nsisplugin/CloseIEWindows.c ================================================ #include #include #include #include const LPWSTR LegacyUpdateSiteURLHttp = L"http://legacyupdate.net/"; const LPWSTR LegacyUpdateSiteURLHttps = L"https://legacyupdate.net/"; PLUGIN_METHOD(CloseIEWindows) { PLUGIN_INIT(); // Find and close IE windows that might have the ActiveX control loaded IShellWindows *windows; HRESULT hr = CoCreateInstance(&CLSID_ShellWindows, NULL, CLSCTX_ALL, &IID_IShellWindows, (void **)&windows); if (hr == REGDB_E_CLASSNOTREG) { // Expected when on the SYSTEM desktop goto end; } CHECK_HR_OR_GOTO_END(L"CoCreateInstance"); long count = 0; hr = IShellWindows_get_Count(windows, &count); CHECK_HR_OR_GOTO_END(L"get_Count"); VARIANT index = {0}; index.vt = VT_I4; for (long i = 0; i <= count; i++) { IDispatch *item = NULL; index.lVal = i; hr = IShellWindows_Item(windows, index, &item); if (!SUCCEEDED(hr) || !item) { continue; } IWebBrowser2 *browser = NULL; hr = IDispatch_QueryInterface(item, &IID_IWebBrowser2, (void **)&browser); IDispatch_Release(item); if (!SUCCEEDED(hr)) { continue; } BSTR location = NULL; hr = IWebBrowser2_get_LocationURL(browser, &location); if (!SUCCEEDED(hr)) { IWebBrowser2_Release(browser); continue; } if (wcsstr(location, LegacyUpdateSiteURLHttp) != NULL || wcsstr(location, LegacyUpdateSiteURLHttps) != NULL) { hr = IWebBrowser2_Quit(browser); if (!SUCCEEDED(hr)) { TRACE(L"Quit failed: %08x", hr); } // Wait up to 10 seconds for the window to close HWND hwnd = 0; hr = IWebBrowser2_get_HWND(browser, (SHANDLE_PTR *)&hwnd); if (SUCCEEDED(hr) && hwnd != 0) { DWORD start = GetTickCount(); while (IsWindow(hwnd) && GetTickCount() - start < 10000) { Sleep(100); } } } SysFreeString(location); IWebBrowser2_Release(browser); } // Find and exit all dllhosts HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (snapshot == INVALID_HANDLE_VALUE) { goto end; } PROCESSENTRY32W entry = {0}; entry.dwSize = sizeof(PROCESSENTRY32W); if (Process32FirstW(snapshot, &entry)) { do { if (_wcsicmp(entry.szExeFile, L"dllhost.exe") != 0) { continue; } // Loop over loaded modules to determine if ours is loaded HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, entry.th32ProcessID); if (process) { HANDLE module = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, entry.th32ProcessID); if (module == INVALID_HANDLE_VALUE) { CloseHandle(process); continue; } MODULEENTRY32W moduleEntry = {0}; moduleEntry.dwSize = sizeof(MODULEENTRY32W); if (Module32FirstW(module, &moduleEntry)) { do { LPWSTR dllName = wcsrchr(moduleEntry.szExePath, L'\\'); if (!dllName) { continue; } dllName += 1; if (_wcsicmp(dllName, L"LegacyUpdate.dll") == 0 || _wcsicmp(dllName, L"LegacyUpdate32.dll") == 0) { TerminateProcess(process, 0); // Wait up to 10 seconds for the dllhost to close DWORD start = GetTickCount(); while (GetTickCount() - start < 10000) { Sleep(100); DWORD exitCode = 0; if (GetExitCodeProcess(process, &exitCode) && exitCode != STILL_ACTIVE) { break; } } break; } } while (Module32NextW(module, &moduleEntry)); } CloseHandle(module); CloseHandle(process); } } while (Process32NextW(snapshot, &entry)); } CloseHandle(snapshot); end: if (windows) { IShellWindows_Release(windows); } pushint(hr); } ================================================ FILE: nsisplugin/DialogInit.c ================================================ #include "stdafx.h" #undef _WIN32_WINNT #define _WIN32_WINNT _WIN32_WINNT_VISTA #include #include #include #include #include #include #include "main.h" #include "LoadImage.h" #include "Registry.h" #include "VersionInfo.h" #ifndef WM_DWMCOMPOSITIONCHANGED #define WM_DWMCOMPOSITIONCHANGED 0x031e #endif #define DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 19 #define DWMWA_USE_IMMERSIVE_DARK_MODE 20 #define DWMWA_CAPTION_COLOR 35 #define DWMWA_SYSTEMBACKDROP_TYPE 38 #define DWMWA_COLOR_NONE 0xFFFFFFFE #define DWMSBT_MAINWINDOW 2 #define IDI_BANNER_WORDMARK_LIGHT 1337 #define IDI_BANNER_WORDMARK_DARK 1338 #define IDI_BANNER_WORDMARK_GLOW 1339 typedef HRESULT (WINAPI *_DwmExtendFrameIntoClientArea)(HWND hWnd, const MARGINS *pMarInset); typedef HRESULT (WINAPI *_DwmIsCompositionEnabled)(BOOL *pfEnabled); typedef HRESULT (WINAPI *_DwmDefWindowProc)(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *plResult); typedef HRESULT (WINAPI *_DwmSetWindowAttribute)(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute); typedef HRESULT (WINAPI *_SetWindowThemeAttribute)(HWND hwnd, enum WINDOWTHEMEATTRIBUTETYPE eAttribute, PVOID pvAttribute, DWORD cbAttribute); typedef BOOL (WINAPI *_IsThemeActive)(void); typedef HTHEME (WINAPI *_OpenThemeData)(HWND hwnd, LPCWSTR pszClassList); typedef HRESULT (WINAPI *_CloseThemeData)(HTHEME hTheme); typedef HRESULT (WINAPI *_DrawThemeBackground)(HTHEME hTheme, HDC hdc, int iPartId, int iStateId, const RECT *pRect, const RECT *pClipRect); static _DwmExtendFrameIntoClientArea $DwmExtendFrameIntoClientArea; static _DwmIsCompositionEnabled $DwmIsCompositionEnabled; static _DwmDefWindowProc $DwmDefWindowProc; static _DwmSetWindowAttribute $DwmSetWindowAttribute; static _SetWindowThemeAttribute $SetWindowThemeAttribute; static _IsThemeActive $IsThemeActive; static _OpenThemeData $OpenThemeData; static _CloseThemeData $CloseThemeData; static _DrawThemeBackground $DrawThemeBackground; static const WCHAR BackgroundClassName[] = L"LegacyUpdateBackground"; typedef enum Theme { ThemeUnknown = -1, ThemeClassic, ThemeBasic, ThemeAeroLight, ThemeAeroDark } Theme; static HBITMAP g_bannerWordmark; static HBITMAP g_bannerWordmarkGlow; static HTHEME g_aeroTheme; static Theme g_theme = ThemeUnknown; static WNDPROC g_dialogOrigWndProc; static WNDPROC g_bannerOrigWndProc; static WNDPROC g_bottomOrigWndProc; static HWND g_backgroundWindow; static Theme GetTheme(void) { BOOL enabled = FALSE; if (!$DwmIsCompositionEnabled || !$IsThemeActive || !SUCCEEDED($DwmIsCompositionEnabled(&enabled))) { return ThemeClassic; } if (enabled) { DWORD light = 1; if (AtLeastWin10_1809()) { GetRegistryDword(HKEY_CURRENT_USER, REGPATH_WIN_PERSONALIZE, L"AppsUseLightTheme", 0, &light); } return light ? ThemeAeroLight : ThemeAeroDark; } return $IsThemeActive() ? ThemeBasic : ThemeClassic; } static void ConfigureWindow(void) { HWND bannerWindow = GetDlgItem(g_hwndParent, 1046); HWND bannerDivider = GetDlgItem(g_hwndParent, 1047); HWND bottomDivider = GetDlgItem(g_hwndParent, 6900); if (!bannerWindow || !bannerDivider || !bottomDivider) { return; } Theme theme = GetTheme(); if (g_theme != theme) { g_theme = theme; MARGINS margins = {0}; if (theme >= ThemeAeroLight) { // Set glass area RECT rect = {0}; GetWindowRect(bannerWindow, &rect); margins.cyTopHeight = rect.bottom - rect.top; } if ($DwmExtendFrameIntoClientArea) { $DwmExtendFrameIntoClientArea(g_hwndParent, &margins); } ShowWindow(bannerDivider, theme >= ThemeBasic ? SW_HIDE : SW_SHOW); ShowWindow(bottomDivider, theme >= ThemeBasic ? SW_HIDE : SW_SHOW); if (g_theme >= ThemeBasic) { DWORD wordmark = g_theme == ThemeAeroDark ? IDI_BANNER_WORDMARK_DARK : IDI_BANNER_WORDMARK_LIGHT; g_bannerWordmark = LoadPNGResource(NULL, MAKEINTRESOURCE(wordmark), L"PNG"); if (g_theme >= ThemeAeroLight && AtMostWin7()) { g_bannerWordmarkGlow = LoadPNGResource(NULL, MAKEINTRESOURCE(IDI_BANNER_WORDMARK_GLOW), L"PNG"); } } else { DeleteObject(g_bannerWordmark); DeleteObject(g_bannerWordmarkGlow); g_bannerWordmark = NULL; g_bannerWordmarkGlow = NULL; } // Set dark mode state if (AtLeastWin10_1809() && $DwmSetWindowAttribute) { DWORD attr = AtLeastWin10_2004() ? DWMWA_USE_IMMERSIVE_DARK_MODE : DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1; DWORD value = g_theme == ThemeAeroDark; $DwmSetWindowAttribute(g_hwndParent, attr, &value, sizeof(value)); } } } static LRESULT CALLBACK BannerWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (g_theme < ThemeBasic) { return CallWindowProc(g_bannerOrigWndProc, hwnd, uMsg, wParam, lParam); } switch (uMsg) { case WM_PAINT: { PAINTSTRUCT ps = {0}; HDC hdc = BeginPaint(hwnd, &ps); RECT rect = {0}; GetClientRect(hwnd, &rect); // Draw base color for glass area FillRect(hdc, &rect, GetStockObject(BLACK_BRUSH)); // Draw Aero Basic titlebar if (g_theme == ThemeBasic && g_aeroTheme && $DrawThemeBackground) { int state = GetActiveWindow() == g_hwndParent ? AW_S_TITLEBAR_ACTIVE : AW_S_TITLEBAR_INACTIVE; $DrawThemeBackground(g_aeroTheme, hdc, AW_TITLEBAR, state, &rect, NULL); } float scale = (float)GetDeviceCaps(hdc, LOGPIXELSX) / 96.0f; BLENDFUNCTION blendFunc = {0}; blendFunc.BlendOp = AC_SRC_OVER; blendFunc.BlendFlags = 0; blendFunc.SourceConstantAlpha = 0xFF; blendFunc.AlphaFormat = AC_SRC_ALPHA; // Draw wordmark with alpha blending if (g_bannerWordmarkGlow) { HDC hdcMem = CreateCompatibleDC(hdc); HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, g_bannerWordmarkGlow); BITMAP bitmap = {0}; GetObject(g_bannerWordmarkGlow, sizeof(bitmap), &bitmap); LONG width = bitmap.bmWidth * scale; LONG height = bitmap.bmHeight * scale; LONG x = (rect.right - rect.left - width) / 2; LONG y = (rect.bottom - rect.top - height) / 2; SetStretchBltMode(hdc, HALFTONE); AlphaBlend(hdc, x, y, width, height, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, blendFunc); SelectObject(hdcMem, hbmOld); DeleteDC(hdcMem); } if (g_bannerWordmark) { HDC hdcMem = CreateCompatibleDC(hdc); HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, g_bannerWordmark); BITMAP bitmap = {0}; GetObject(g_bannerWordmark, sizeof(bitmap), &bitmap); LONG width = bitmap.bmWidth * scale; LONG height = bitmap.bmHeight * scale; LONG x = (rect.right - rect.left - width) / 2; LONG y = ((rect.bottom - rect.top - height) / 2) - (1 * scale); SetStretchBltMode(hdc, HALFTONE); AlphaBlend(hdc, x, y, width, height, hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, blendFunc); SelectObject(hdcMem, hbmOld); DeleteDC(hdcMem); } EndPaint(hwnd, &ps); return 0; } case WM_ERASEBKGND: return DefWindowProc(hwnd, uMsg, wParam, lParam); case WM_NCHITTEST: // Pass through to parent return HTTRANSPARENT; } if (!g_bannerOrigWndProc) { return 0; } return CallWindowProc(g_bannerOrigWndProc, hwnd, uMsg, wParam, lParam); } static LRESULT CALLBACK BottomWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT: { // Draw command area background (grey with divider line) if (g_theme < ThemeBasic || !g_aeroTheme || !$DrawThemeBackground) { break; } PAINTSTRUCT ps = {0}; HDC hdc = BeginPaint(hwnd, &ps); RECT rect = {0}; GetClientRect(hwnd, &rect); $DrawThemeBackground(g_aeroTheme, hdc, AW_COMMANDAREA, 0, &rect, NULL); EndPaint(hwnd, &ps); return 0; } } if (!g_bottomOrigWndProc) { return 0; } return CallWindowProc(g_bottomOrigWndProc, hwnd, uMsg, wParam, lParam); } static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (g_theme >= ThemeAeroLight && $DwmDefWindowProc) { LRESULT lRet = 0; if ($DwmDefWindowProc(hwnd, uMsg, wParam, lParam, &lRet)) { return lRet; } } switch (uMsg) { case WM_THEMECHANGED: case WM_DWMCOMPOSITIONCHANGED: ConfigureWindow(); break; case WM_ACTIVATE: case WM_NCACTIVATE: // Redraw banner on activation if (g_theme == ThemeBasic) { InvalidateRect(GetDlgItem(hwnd, 1046), NULL, FALSE); } break; case WM_DESTROY: if (g_backgroundWindow) { DestroyWindow(g_backgroundWindow); g_backgroundWindow = NULL; } break; case WM_NCHITTEST: { if (g_theme < ThemeBasic) { break; } // Allow drag in the header area HWND bannerWindow = GetDlgItem(hwnd, 1046); if (!bannerWindow) { break; } POINT hit = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)}; ScreenToClient(hwnd, &hit); RECT rect = {0}; GetWindowRect(bannerWindow, &rect); rect.right -= rect.left; rect.bottom -= rect.top; rect.left = 0; rect.top = 0; if (PtInRect(&rect, hit)) { return HTCAPTION; } break; } } if (!g_dialogOrigWndProc) { return 0; } return CallWindowProc(g_dialogOrigWndProc, hwnd, uMsg, wParam, lParam); } static LRESULT CALLBACK BackgroundWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT: { PAINTSTRUCT ps = {0}; HDC hdc = BeginPaint(hwnd, &ps); RECT rect = {0}; GetClientRect(hwnd, &rect); // Gradient int height = rect.bottom - rect.top; int width = rect.right - rect.left; for (int i = 0; i < height; i++) { float ratio = (float)(i - rect.top) / (float)(rect.bottom - rect.top); COLORREF color = RGB( (int)(0x00 * (1 - ratio) + 0x00 * ratio), (int)(0x00 * (1 - ratio) + 0x00 * ratio), (int)(0x80 * (1 - ratio) + 0x00 * ratio) ); RECT lineRect = {rect.left, rect.top + i, rect.right, rect.top + i + 1}; HBRUSH brush = CreateSolidBrush(color); FillRect(hdc, &lineRect, brush); DeleteObject(brush); } HFONT font = CreateFont(-40, 0, 0, 0, FW_BOLD, TRUE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE | FIXED_PITCH, L"Times New Roman"); HFONT oldFont = (HFONT)SelectObject(hdc, font); static LPWSTR text = L"Legacy Update"; // Shadow SetTextColor(hdc, RGB(0x00, 0x00, 0x00)); SetBkMode(hdc, TRANSPARENT); TextOut(hdc, 10 + 4, 4 + 4, text, lstrlen(text)); // Text SetTextColor(hdc, RGB(0xff, 0xff, 0xff)); TextOut(hdc, 10, 4, text, lstrlen(text)); SelectObject(hdc, oldFont); DeleteObject(font); EndPaint(hwnd, &ps); return 0; } case WM_ERASEBKGND: return 1; case WM_ACTIVATE: // If we become foreground, bring the main dialog to front if (LOWORD(wParam) != WA_INACTIVE) { SetForegroundWindow(g_hwndParent); } return 0; case WM_CLOSE: // Don't allow closing return 0; } return DefWindowProc(hwnd, uMsg, wParam, lParam); } static UINT_PTR NSISPluginCallback(enum NSPIM event) { // Does nothing, but keeping a callback registered prevents NSIS from unloading the plugin return 0; } PLUGIN_METHOD(DialogInit) { PLUGIN_INIT(); if (g_dialogOrigWndProc) { return; } extra->RegisterPluginCallback(g_hInstance, NSISPluginCallback); // Get symbols HMODULE dwmapi = LoadLibrary(L"dwmapi.dll"); if (dwmapi) { $DwmExtendFrameIntoClientArea = (_DwmExtendFrameIntoClientArea)GetProcAddress(dwmapi, "DwmExtendFrameIntoClientArea"); $DwmIsCompositionEnabled = (_DwmIsCompositionEnabled)GetProcAddress(dwmapi, "DwmIsCompositionEnabled"); $DwmDefWindowProc = (_DwmDefWindowProc)GetProcAddress(dwmapi, "DwmDefWindowProc"); $DwmSetWindowAttribute = (_DwmSetWindowAttribute)GetProcAddress(dwmapi, "DwmSetWindowAttribute"); } HMODULE uxtheme = LoadLibrary(L"uxtheme.dll"); if (uxtheme) { $SetWindowThemeAttribute = (_SetWindowThemeAttribute)GetProcAddress(uxtheme, "SetWindowThemeAttribute"); $IsThemeActive = (_IsThemeActive)GetProcAddress(uxtheme, "IsThemeActive"); $OpenThemeData = (_OpenThemeData)GetProcAddress(uxtheme, "OpenThemeData"); $CloseThemeData = (_CloseThemeData)GetProcAddress(uxtheme, "CloseThemeData"); $DrawThemeBackground = (_DrawThemeBackground)GetProcAddress(uxtheme, "DrawThemeBackground"); } // Get AeroWizard theme if ($OpenThemeData) { g_aeroTheme = $OpenThemeData(g_hwndParent, L"AeroWizard"); } // Hide title caption/icon if ($SetWindowThemeAttribute) { WTA_OPTIONS options; options.dwFlags = WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON; options.dwMask = WTNCA_NODRAWCAPTION | WTNCA_NODRAWICON; $SetWindowThemeAttribute(g_hwndParent, WTA_NONCLIENT, &options, sizeof(options)); } // Enable Acrylic blur if (AtLeastWin11_21H1() && $DwmSetWindowAttribute) { // I stole this undocumented 1029 attr from Microsoft Store's StoreInstaller.exe BOOL modern = AtLeastWin11_22H2(); DWORD attr = modern ? DWMWA_SYSTEMBACKDROP_TYPE : 1029; DWORD value = modern ? DWMSBT_MAINWINDOW : 1; $DwmSetWindowAttribute(g_hwndParent, attr, &value, sizeof(value)); // Hide caption background value = DWMWA_COLOR_NONE; $DwmSetWindowAttribute(g_hwndParent, DWMWA_CAPTION_COLOR, &value, sizeof(value)); } // Set up extended client frame ConfigureWindow(); // Set up window procedures HWND bannerWindow = GetDlgItem(g_hwndParent, 1046); HWND bottomWindow = GetDlgItem(g_hwndParent, 6901); g_dialogOrigWndProc = (WNDPROC)SetWindowLongPtr(g_hwndParent, GWLP_WNDPROC, (LONG_PTR)MainWndProc); g_bannerOrigWndProc = (WNDPROC)SetWindowLongPtr(bannerWindow, GWLP_WNDPROC, (LONG_PTR)BannerWndProc); g_bottomOrigWndProc = (WNDPROC)SetWindowLongPtr(bottomWindow, GWLP_WNDPROC, (LONG_PTR)BottomWndProc); // Nothing in particular 👀 SYSTEMTIME date = {0}; GetLocalTime(&date); if (date.wMonth == 4 && date.wDay == 1) { WNDCLASS wndClass = {0}; wndClass.style = CS_VREDRAW | CS_HREDRAW | CS_OWNDC | CS_NOCLOSE; wndClass.lpfnWndProc = BackgroundWndProc; wndClass.hInstance = g_hInstance; wndClass.lpszClassName = BackgroundClassName; wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); if (RegisterClass(&wndClass)) { int width = GetSystemMetrics(SM_CXSCREEN); int height = GetSystemMetrics(SM_CYSCREEN); g_backgroundWindow = CreateWindowEx( WS_EX_TOOLWINDOW, wndClass.lpszClassName, L"", WS_POPUP, 0, 0, width, height, NULL, NULL, wndClass.hInstance, NULL ); if (g_backgroundWindow) { ShowWindow(g_backgroundWindow, SW_SHOW); } } } } ================================================ FILE: nsisplugin/EnableMicrosoftUpdate.c ================================================ #include #include #include #include "main.h" static const LPWSTR MicrosoftUpdateServiceID = L"7971f918-a847-4430-9279-4a52d1efe18d"; PLUGIN_METHOD(EnableMicrosoftUpdate) { PLUGIN_INIT(); IUpdateServiceManager2 *serviceManager = NULL; IUpdateServiceRegistration *registration = NULL; HRESULT hr = CoCreateInstance(&CLSID_UpdateServiceManager, NULL, CLSCTX_INPROC_SERVER, &IID_IUpdateServiceManager2, (void **)&serviceManager); CHECK_HR_OR_GOTO_END(L"CoCreateInstance"); BSTR clientID = SysAllocString(L"Legacy Update"); hr = IUpdateServiceManager2_put_ClientApplicationID(serviceManager, clientID); SysFreeString(clientID); CHECK_HR_OR_GOTO_END(L"put_ClientApplicationID"); BSTR serviceID = SysAllocString(MicrosoftUpdateServiceID); BSTR serviceCab = SysAllocString(L""); hr = IUpdateServiceManager2_AddService2(serviceManager, serviceID, asfAllowPendingRegistration | asfAllowOnlineRegistration | asfRegisterServiceWithAU, serviceCab, ®istration); SysFreeString(serviceID); SysFreeString(serviceCab); CHECK_HR_OR_GOTO_END(L"AddService2"); end: if (registration) { IUpdateServiceManager2_Release(registration); } if (serviceManager) { IUpdateServiceManager2_Release(serviceManager); } pushint(hr); } ================================================ FILE: nsisplugin/Exec.c ================================================ /* Copyright (C) 2002 Robert Rainwater Copyright (C) 2002-2023 Nullsoft and Contributors This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include // nsis plugin #include "main.h" #if defined(_MSC_VER) && !defined(GetVersion) #if _MSC_VER >= 1500 FORCEINLINE DWORD NoDepr_GetVersion(void) { __pragma(warning(push))__pragma(warning(disable:4996)) DWORD r = GetVersion(); __pragma(warning(pop)) return r; } #define GetVersion NoDepr_GetVersion #endif //~ _MSC_VER >= 1500 #endif //~ _MSC_VER #define TAB_REPLACE _T(" ") #define TAB_REPLACE_SIZE (sizeof(TAB_REPLACE) - sizeof(_T(""))) #define TAB_REPLACE_CCH (TAB_REPLACE_SIZE / sizeof(_T(""))) enum { MODE_IGNOREOUTPUT = 0, MODE_LINES = 1, MODE_STACK = 2 }; #define LOOPTIMEOUT 100 static HWND g_hwndList; static void ExecScript(BOOL log); static TCHAR *my_strstr(TCHAR *a, TCHAR *b); static unsigned int my_atoi(TCHAR *s); static int WINAPI AsExeWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow); PLUGIN_METHOD(Exec) { PLUGIN_INIT(); ExecScript(MODE_IGNOREOUTPUT); } PLUGIN_METHOD(ExecToLog) { PLUGIN_INIT(); ExecScript(extra->exec_flags->status_update & 1 ? MODE_LINES : MODE_IGNOREOUTPUT); } PLUGIN_METHOD(ExecToStack) { PLUGIN_INIT(); ExecScript(MODE_STACK); } static BOOL IsLeadSurrogateUTF16(unsigned short c) { return c >= 0xd800 && c <= 0xdbff; } static BOOL IsTrailSurrogateUTF16(unsigned short c) { return c >= 0xdc00 && c <= 0xdfff; } static PWSTR MyCharNext(PCWSTR p) { // Note: This is wrong for surrogate pair combining characters but CharNextW does // not support surrogate pairs correctly so we have to manually handle the pairs. if (!p[0]) return (PWSTR) p; if (IsLeadSurrogateUTF16(p[0]) && IsTrailSurrogateUTF16(p[1])) return (PWSTR) p + 2; // Current is a surrogate pair, we incorrectly assume that it is not followed by combining characters. if (IsLeadSurrogateUTF16(p[1]) && IsTrailSurrogateUTF16(p[2])) return (PWSTR) p + 1; // Next is a surrogate pair, we incorrectly assume that it is not a combining character for the current character. return (CharNextW)(p); } #define CharNextW MyCharNext static void TruncateStringUTF16LE(LPWSTR Buffer, SIZE_T Length, LPCWSTR Overflow, SIZE_T lenOver) { if (Length) { LPWSTR p = &Buffer[Length - 1]; UINT stripBaseCharIfCuttingCombining = TRUE; // CharNextW is buggy on XP&2003 but we don't care enough to call GetStringTypeW (http://archives.miloush.net/michkap/archive/2005/01/30/363420.html) if (stripBaseCharIfCuttingCombining && lenOver) { WCHAR buf[] = { *p, Overflow[0], lenOver > 1 ? Overflow[1] : L' ', L'\0' }; for (;;) { BOOL comb = CharNextW(buf) > buf + 1; if (!comb || p < Buffer) break; *((WORD*)((BYTE*)&buf[1])) = *((WORD*)((BYTE*)&buf[0])); buf[0] = *p; *p-- = L'\0'; } } if (IsLeadSurrogateUTF16(*p)) { *p = L'\0'; // Avoid incomplete pair } } } static void TruncateStringMB(UINT Codepage, LPSTR Buffer, SIZE_T Length, unsigned short OverflowCh) { if (Length) { CHAR *p = &Buffer[Length - 1], buf[] = { *p, ' ', ' ', '\0' }; if (CharNextExA(Codepage, buf, 0) > buf + 1) { // Remove incomplete DBCS character? *p = '\0'; } } } static BOOL IsWOW64(void) { #ifdef _WIN64 return FALSE; #else typedef BOOL (WINAPI*ISWOW64PROCESS)(HANDLE, BOOL*); ISWOW64PROCESS pfIsWow64Process; typedef BOOL (WINAPI*ISWOW64PROCESS2)(HANDLE, USHORT*, USHORT*); ISWOW64PROCESS2 pfIsWow64Process2; HANDLE hProcess = GetCurrentProcess(); HMODULE hK32 = GetModuleHandleA("KERNEL32"); UINT_PTR retval; USHORT appmach, image_file_machine_unknown = 0; CHAR funcnam[16] #if defined(_MSC_VER) && (_MSC_VER-0 <= 1400) = "IsWow64Process2"; // MOVSD * 4 #else ; lstrcpyA(funcnam, "IsWow64Process2"); #endif pfIsWow64Process2 = (ISWOW64PROCESS2) GetProcAddress(hK32, funcnam); if (pfIsWow64Process2 && pfIsWow64Process2(hProcess, &appmach, NULL)) { retval = image_file_machine_unknown != appmach; } else { BOOL wow64; pfIsWow64Process = (ISWOW64PROCESS) GetProcAddress(hK32, (funcnam[14] = '\0', funcnam)); retval = (UINT_PTR) pfIsWow64Process; if (pfIsWow64Process && (retval = pfIsWow64Process(hProcess, &wow64))) { retval = wow64; } } return (BOOL) (UINT) retval; #endif } // Tim Kosse's LogMessage #ifdef UNICODE static void LogMessage(const TCHAR *pStr, BOOL bOEM) { #else static void LogMessage(TCHAR *pStr, BOOL bOEM) { #endif LVITEM item; int nItemCount; if (!g_hwndList) return; //if (!*pStr) return; #ifndef UNICODE if (bOEM == TRUE) OemToCharBuff(pStr, pStr, lstrlen(pStr)); #endif nItemCount=(int) SendMessage(g_hwndList, LVM_GETITEMCOUNT, 0, 0); item.mask=LVIF_TEXT; item.pszText=(TCHAR *)pStr; item.cchTextMax=0; item.iItem=nItemCount, item.iSubItem=0; ListView_InsertItem(g_hwndList, &item); ListView_EnsureVisible(g_hwndList, item.iItem, 0); } void ExecScript(int mode) { TCHAR szRet[128]; TCHAR meDLLPath[MAX_PATH]; TCHAR *g_exec, *executor; TCHAR *pExec; int ignoreData = mode == MODE_IGNOREOUTPUT; int logMode = mode == MODE_LINES, stackMode = mode == MODE_STACK; unsigned int to, tabExpandLength = logMode ? TAB_REPLACE_CCH : 0, codepage; BOOL bOEM, forceNarrowInput = FALSE; *szRet = _T('\0'); if (!IsWOW64()) { TCHAR* p; int nComSpecSize; nComSpecSize = GetModuleFileName(g_hInstance, meDLLPath, MAX_PATH) + 2; // 2 chars for quotes g_exec = (TCHAR *)GlobalAlloc(GPTR, sizeof(TCHAR) * (g_stringsize+nComSpecSize+2)); // 1 for space, 1 for null p = meDLLPath + nComSpecSize - 2; // point p at null char of meDLLPath *g_exec = _T('"'); executor = g_exec + 1; // Look for the last '\' in path. do { if (*p == _T('\\')) break; p = CharPrev(meDLLPath, p); } while (p > meDLLPath); if (p == meDLLPath) { // bad path pushstring(_T("error")); GlobalFree(g_exec); return; } *p = 0; GetTempFileName(meDLLPath, _T("ns"), 0, executor); // executor = new temp file name in module path. *p = _T('\\'); if (CopyFile(meDLLPath, executor, FALSE)) // copy current DLL to temp file in module path. { HANDLE hFile, hMapping; LPBYTE pMapView; PIMAGE_NT_HEADERS pNTHeaders; hFile = CreateFile(executor, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING,0, 0); hMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL); pMapView = MapViewOfFile(hMapping, FILE_MAP_WRITE, 0, 0, 0); if (pMapView) { pNTHeaders = (PIMAGE_NT_HEADERS)(pMapView + ((PIMAGE_DOS_HEADER)pMapView)->e_lfanew); // Turning the copied DLL into a stripped down executable. pNTHeaders->FileHeader.Characteristics = IMAGE_FILE_32BIT_MACHINE | IMAGE_FILE_LOCAL_SYMS_STRIPPED | IMAGE_FILE_LINE_NUMS_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE; // Windows character-mode user interface (CUI) subsystem. pNTHeaders->OptionalHeader.Subsystem = IMAGE_SUBSYSTEM_WINDOWS_CUI; // g_hInst is assumed to be the very base of the DLL in memory. // WinMain will have the address of the WinMain function in memory. // Getting the difference gets you the relative location of the // WinMain function. pNTHeaders->OptionalHeader.AddressOfEntryPoint = (DWORD) ((DWORD_PTR)AsExeWinMain - (DWORD_PTR)g_hInstance); UnmapViewOfFile(pMapView); } CloseHandle(hMapping); CloseHandle(hFile); } lstrcat(g_exec, _T("\"")); // add space pExec = g_exec + lstrlen(g_exec); *pExec = _T(' '); pExec++; } else { executor = NULL; g_exec = (TCHAR *)GlobalAlloc(GPTR, sizeof(TCHAR) * (g_stringsize+1)); // 1 for NULL pExec = g_exec; } to = 0; // default is no timeout bOEM = FALSE; // default is no OEM->ANSI conversion g_hwndList = NULL; // g_hwndParent = the caller, usually NSIS installer. if (g_hwndParent) // The window class name for dialog boxes is "#32770" g_hwndList = FindWindowEx(FindWindowEx(g_hwndParent, NULL, _T("#32770"), NULL), NULL, _T("SysListView32"), NULL); // g_exec is the complete command to run: It has the copy of this DLL turned // into an executable right now. params: // Get the command I need to run from the NSIS stack. popstring(pExec); if (my_strstr(pExec, _T("/TIMEOUT=")) == pExec) { TCHAR *szTimeout = pExec + 9; to = my_atoi(szTimeout); *pExec = 0; goto params; } if (!lstrcmpi(pExec, _T("/OEM"))) { bOEM = forceNarrowInput = TRUE; *pExec = 0; goto params; } if (!lstrcmpi(pExec, _T("/MBCS"))) { forceNarrowInput = TRUE; *pExec = 0; goto params; } if (!pExec[0]) { pushstring(_T("error")); if (pExec-2 >= g_exec) *(pExec-2) = _T('\0'); // skip space and quote if (executor) DeleteFile(executor); GlobalFree(g_exec); return; } // Got all the params off the stack. { STARTUPINFO si = {0}; si.cb = sizeof(si); SECURITY_ATTRIBUTES sa = {0}; sa.nLength = sizeof(sa); SECURITY_DESCRIPTOR sd = {0}; PROCESS_INFORMATION pi; const BOOL isNT = sizeof(void*) > 4 || (GetVersion() < 0x80000000); HANDLE newstdout = 0, read_stdout = 0; HANDLE newstdin = 0, read_stdin = 0; int utfSource = sizeof(TCHAR) > 1 && !forceNarrowInput ? -1 : FALSE, utfOutput = sizeof(TCHAR) > 1; DWORD cbRead, dwLastOutput; DWORD dwExit = 0, waitResult = WAIT_TIMEOUT; static BYTE bufSrc[NSIS_MAX_STRLEN]; BYTE *pSrc; SIZE_T cbSrcTot = sizeof(bufSrc), cbSrc = 0, cbSrcFree; TCHAR *bufOutput = 0, *pNewAlloc, *pD; SIZE_T cchAlloc, cbAlloc, cchFree; #ifndef _MSC_VER // Avoid GCC "may be used uninitialized in this function" warnings pD = NULL; cchAlloc = 0; #endif pi.hProcess = pi.hThread = NULL; codepage = bOEM ? CP_OEMCP : CP_ACP; if (!ignoreData) { cbAlloc = stackMode ? (g_stringsize * sizeof(TCHAR)) : sizeof(bufSrc) * 4, cchAlloc = cbAlloc / sizeof(TCHAR); pD = bufOutput = GlobalAlloc(GPTR, cbAlloc + sizeof(TCHAR)); // Include "hidden" space for a \0 if (!bufOutput) { lstrcpy(szRet, _T("error")); goto done; } *bufOutput = _T('\0'); } sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if (isNT) { InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE); sa.lpSecurityDescriptor = &sd; } if (!CreatePipe(&read_stdout, &newstdout, &sa, 0)) { lstrcpy(szRet, _T("error")); goto done; } if (!CreatePipe(&read_stdin, &newstdin, &sa, 0)) { lstrcpy(szRet, _T("error")); goto done; } GetStartupInfo(&si); // Why? si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; si.hStdInput = newstdin; si.hStdOutput = newstdout; si.hStdError = newstdout; if (!CreateProcess(NULL, g_exec, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) { lstrcpy(szRet, _T("error")); goto done; } // Now I'm talking with an executable copy of myself. dwLastOutput = GetTickCount(); for (;;) { TCHAR bufCh[2]; waitForProcess: waitResult = WaitForSingleObject(pi.hProcess, 0); GetExitCodeProcess(pi.hProcess, &dwExit); readMore: PeekNamedPipe(read_stdout, 0, 0, 0, &cbRead, NULL); if (!cbRead) { if (waitResult == WAIT_OBJECT_0) { break; // No data in the pipe and process ended, we are done } if (to && GetTickCount() > dwLastOutput+to) { TerminateProcess(pi.hProcess, -1); lstrcpy(szRet, _T("timeout")); } else { Sleep(LOOPTIMEOUT); } continue; } dwLastOutput = GetTickCount(); ReadFile(read_stdout, bufSrc + cbSrc, (DWORD) (cbSrcFree = cbSrcTot - cbSrc), &cbRead, NULL); cbSrcFree -= cbRead, cbSrc = cbSrcTot - cbSrcFree; pSrc = bufSrc; if (utfSource < 0 && cbSrc) { // Simple UTF-16LE detection #ifdef UNICODE utfSource = IsTextUnicode(pSrc, (UINT) (cbSrc & ~1), NULL) != FALSE; #else utfSource = (cbSrc >= 3 && pSrc[0] && !pSrc[1]) || (cbSrc > 4 && pSrc[2] && !pSrc[3]); // Lame latin-only test utfSource |= (cbSrc > 3 && pSrc[0] == 0xFF && pSrc[1] == 0xFE && (pSrc[2] | pSrc[3])); // Lame BOM test #endif } if (ignoreData) { cbSrc = 0; // Overwrite the whole buffer every read continue; } if (!cbRead) { continue; // No new data, read more before trying to parse } parseLines: cchFree = cchAlloc - (pD - bufOutput); for (;;) { DWORD cbSrcChar = 1, cchDstChar, i; *pD = _T('\0'); // Terminate output buffer because we can unexpectedly run out of data if (!cbSrc) { goto readMore; } if (utfSource) { // UTF-16LE --> ?: if (cbSrc < 2) { goto readMore; } if (utfOutput) { // UTF-16LE --> UTF-16LE: bufCh[0] = ((TCHAR*)pSrc)[0], cbSrcChar = sizeof(WCHAR), cchDstChar = 1; // We only care about certain ASCII characters so we don't bother dealing with surrogate pairs. } else { // UTF-16LE --> DBCS // TODO: This is tricky because we need the complete base character (or surrogate pair) and all the trailing combining characters for a grapheme in the buffer before we can call WideCharToMultiByte. utfOutput = FALSE; // For now we just treat it as DBCS continue; } } else { // DBCS --> ?: if (utfOutput) { // DBCS --> UTF-16LE: BOOL isMb = IsDBCSLeadByteEx(codepage, ((CHAR*)pSrc)[0]); if (isMb && cbSrc < ++cbSrcChar) { goto readMore; } cchDstChar = MultiByteToWideChar(codepage, 0, (CHAR*)pSrc, cbSrcChar, (WCHAR*) bufCh, 2); } else { // DBCS --> DBCS: bufCh[0] = ((CHAR*)pSrc)[0], cchDstChar = 1; // Note: OEM codepage will be converted by LogMessage } } if (bufCh[0] == _T('\t') && tabExpandLength) { // Expand tab to spaces? if (cchFree < tabExpandLength) { goto resizeOutputBuffer; } lstrcpy(pD, TAB_REPLACE); pD += tabExpandLength, cchFree -= tabExpandLength; } else if (bufCh[0] == _T('\r') && logMode) { // Eating it } else if (bufCh[0] == _T('\n') && logMode) { LogMessage(bufOutput, bOEM); // Output has already been \0 terminated *(pD = bufOutput) = _T('\0'), cchFree = cchAlloc; } else { if (cchFree < cchDstChar) { SIZE_T cchOrgOffset; resizeOutputBuffer: if (stackMode) { ignoreData = TRUE; // Buffer was already maximum for the NSIS stack, we cannot handle more data if (utfOutput) TruncateStringUTF16LE((LPWSTR) bufOutput, pD - bufOutput, (LPCWSTR) bufCh, cchDstChar); else TruncateStringMB(codepage, (LPSTR) bufOutput, pD - bufOutput, bufCh[0]); goto waitForProcess; } cchAlloc += 1024, cbAlloc = cchAlloc / sizeof(TCHAR); pNewAlloc = GlobalReAlloc(bufOutput, cbAlloc + sizeof(TCHAR),GPTR|GMEM_MOVEABLE); // Include "hidden" space for a \0 if (!pNewAlloc) { lstrcpy(szRet, _T("error")); ignoreData = TRUE; goto waitForProcess; } cchOrgOffset = pD - bufOutput; *(pD = (bufOutput = pNewAlloc) + cchOrgOffset) = _T('\0'); goto parseLines; } for (i = 0; i < cchDstChar; ++i) { *pD++ = bufCh[i], --cchFree; } } pSrc += cbSrcChar, cbSrc -= cbSrcChar; } } done: if (stackMode) pushstring(bufOutput); if (logMode && *bufOutput) LogMessage(bufOutput,bOEM); // Write remaining output if (dwExit == STATUS_ILLEGAL_INSTRUCTION) lstrcpy(szRet, _T("error")); if (!szRet[0]) wsprintf(szRet,_T("%d"),dwExit); pushstring(szRet); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); CloseHandle(newstdout); CloseHandle(read_stdout); CloseHandle(newstdin); CloseHandle(read_stdin); if (pExec-2 >= g_exec) *(pExec-2) = _T('\0'); // skip space and quote if (executor) DeleteFile(executor); GlobalFree(g_exec); if (bufOutput) GlobalFree(bufOutput); } } static TCHAR *my_strstr(TCHAR *a, TCHAR *b) { int l = lstrlen(b); while (lstrlen(a) >= l) { TCHAR c = a[l]; a[l] = 0; if (!lstrcmpi(a, b)) { a[l] = c; return a; } a[l] = c; a = CharNext(a); } return NULL; } static unsigned int my_atoi(TCHAR *s) { unsigned int v=0; if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X'))) { s+=2; 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')) { s++; for (;;) { int c=*s++; if (c >= _T('0') && c <= _T('7')) c-=_T('0'); else break; v<<=3; v+=c; } } else { for (;;) { int c=*s++ - _T('0'); if (c < 0 || c > 9) break; v*=10; v+=c; } } return (int)v; } int WINAPI AsExeWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { DWORD Ret; STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; TCHAR command_line[NSIS_MAX_STRLEN]; //BUGBUG TCHAR seekchar=_T(' '); TCHAR *cmdline; si.cb = sizeof(si); // Make child process use this app's standard files. Not needed because the handles // we created when executing this process were inheritable. //si.dwFlags = STARTF_USESTDHANDLES; //si.hStdInput = GetStdHandle (STD_INPUT_HANDLE); //si.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE); //si.hStdError = GetStdHandle (STD_ERROR_HANDLE); lstrcpyn(command_line, GetCommandLine(), 1024); cmdline = command_line; if (*cmdline == _T('\"')) seekchar = *cmdline++; while (*cmdline && *cmdline != seekchar) cmdline=CharNext(cmdline); cmdline=CharNext(cmdline); // skip any spaces before the arguments while (*cmdline && *cmdline == _T(' ')) cmdline++; Ret = CreateProcess (NULL, cmdline, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi ); if (Ret) { WaitForSingleObject(pi.hProcess, INFINITE); GetExitCodeProcess(pi.hProcess, &Ret); CloseHandle (pi.hProcess); CloseHandle (pi.hThread); ExitProcess(Ret); } else { ExitProcess(STATUS_ILLEGAL_INSTRUCTION); } return 0; // dummy } ================================================ FILE: nsisplugin/IsActivated.c ================================================ #include #include #include "main.h" #include "VersionInfo.h" #include "Wow64.h" #include "licdll.h" #include typedef HRESULT (WINAPI *_SLOpen)(HSLC *); typedef HRESULT (WINAPI *_SLGetLicensingStatusInformation)(HSLC, const SLID *, DWORD, DWORD, UINT *, SL_LICENSING_STATUS **); typedef HRESULT (WINAPI *_SLClose)(HSLC); static _SLOpen $SLOpen; static _SLClose $SLClose; static _SLGetLicensingStatusInformation $SLGetLicensingStatusInformation; static BOOL g_loadedLicenseStatus = FALSE; static BOOL g_isActivated = TRUE; PLUGIN_METHOD(IsActivated) { PLUGIN_INIT(); // Activation is irrelevant prior to XP if (g_loadedLicenseStatus || !AtLeastWinXP2002()) { pushint(g_isActivated); return; } g_loadedLicenseStatus = TRUE; // Get the CPU architecture. We'll need this so that we activate the correct COM object on 64-bit versions // of Windows XP and Windows Server 2003. SYSTEM_INFO systemInfo = {0}; OurGetNativeSystemInfo(&systemInfo); if (AtLeastWinVista()) { // Vista+: Ask the Software Licensing Service if (!$SLOpen) { HMODULE slc = LoadLibrary(L"slc.dll"); if (slc) { $SLOpen = (_SLOpen)GetProcAddress(slc, "SLOpen"); $SLClose = (_SLClose)GetProcAddress(slc, "SLClose"); $SLGetLicensingStatusInformation = (_SLGetLicensingStatusInformation)GetProcAddress(slc, "SLGetLicensingStatusInformation"); } } if (!$SLOpen || !$SLClose || !$SLGetLicensingStatusInformation) { TRACE(L"Failed to load slc.dll"); pushint(1); return; } HSLC slc = NULL; SL_LICENSING_STATUS *status = NULL; UINT count = 0; HRESULT hr = $SLOpen(&slc); if (!SUCCEEDED(hr)) { goto end_slc; } hr = $SLGetLicensingStatusInformation(slc, &WINDOWS_SLID, 0, 0, &count, &status); if (!SUCCEEDED(hr) || count == 0) { goto end_slc; } // Iterate through all statuses until we find one in Licensed status. g_isActivated = FALSE; for (UINT i = 0; i < count; i++) { if (status[i].eStatus == SL_LICENSING_STATUS_LICENSED) { g_isActivated = TRUE; break; } } end_slc: if (status) { LocalFree(status); } if (slc) { $SLClose(slc); } } else { // XP: Use private API ICOMLicenseAgent *agent; HRESULT hr = E_FAIL; // On XP and Server 2003 x64, we need to pass a different argument to CoCreateInstance. if (systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { hr = CoCreateInstance(&CLSID_COMLicenseAgent, NULL, CLSCTX_INPROC_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER, &IID_ICOMLicenseAgent, (void **)&agent); } else { hr = CoCreateInstance(&CLSID_COMLicenseAgent, NULL, CLSCTX_INPROC_SERVER, &IID_ICOMLicenseAgent, (void **)&agent); } if (!SUCCEEDED(hr)) { TRACE(L"COMLicenseAgent load failed: %x", hr); goto end_xp; } ULONG result = 0; hr = ICOMLicenseAgent_Initialize(agent, 0xC475, 3, NULL, &result); if (!SUCCEEDED(hr) || result != 0) { TRACE(L"COMLicenseAgent init failed: %x", hr); goto end_xp; } ULONG wpaLeft = 0, evalLeft = 0; hr = ICOMLicenseAgent_GetExpirationInfo(agent, &wpaLeft, &evalLeft); if (!SUCCEEDED(hr)) { TRACE(L"COMLicenseAgent GetExpirationInfo failed: %x", hr); goto end_xp; } g_isActivated = wpaLeft == MAXLONG; end_xp: if (agent) { ICOMLicenseAgent_Release(agent); } } pushint(g_isActivated); } ================================================ FILE: nsisplugin/IsAdmin.c ================================================ #include #include #include "User.h" PLUGIN_METHOD(IsAdmin) { PLUGIN_INIT(); pushint(IsUserAdmin()); } ================================================ FILE: nsisplugin/IsMultiCPU.c ================================================ #include #include #include "User.h" PLUGIN_METHOD(IsMultiCPU) { PLUGIN_INIT(); SYSTEM_INFO systemInfo = {0}; GetSystemInfo(&systemInfo); pushint(systemInfo.dwNumberOfProcessors > 1 ? 1 : 0); } ================================================ FILE: nsisplugin/IsServerCore.c ================================================ #include #include #include "ProductInfo.h" #include "Registry.h" #include "VersionInfo.h" PLUGIN_METHOD(IsServerCore) { PLUGIN_INIT(); // Server Core introduced with Server 2008, skip on earlier versions. if (!AtLeastWinVista()) { pushint(0); return; } // Server 2008 and 2008 R2 use GetProductInfo, 2012 and newer use the registry. if (IsWinVista() || IsWin7()) { DWORD productType = 0; if (!GetVistaProductInfo(6, 0, 0, 0, &productType)) { pushint(0); return; } switch (productType) { case PRODUCT_DATACENTER_SERVER_CORE: case PRODUCT_STANDARD_SERVER_CORE: case PRODUCT_ENTERPRISE_SERVER_CORE: case PRODUCT_WEB_SERVER_CORE: case PRODUCT_DATACENTER_SERVER_CORE_V: case PRODUCT_STANDARD_SERVER_CORE_V: case PRODUCT_ENTERPRISE_SERVER_CORE_V: case PRODUCT_HYPERV: case PRODUCT_STORAGE_EXPRESS_SERVER_CORE: case PRODUCT_STORAGE_STANDARD_SERVER_CORE: case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE: case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE: case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE: case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE: case PRODUCT_CLUSTER_SERVER_V: pushint(1); return; } } else { // Only need to test for full GUI, MinShell on 2012/2012 R2 does not have IE and is considered regular Core. DWORD serverCore = 0; DWORD serverGuiShell = 0; GetRegistryDword(HKEY_LOCAL_MACHINE, REGPATH_WINNT_SERVERLEVELS, L"ServerCore", KEY_WOW64_64KEY, &serverCore); GetRegistryDword(HKEY_LOCAL_MACHINE, REGPATH_WINNT_SERVERLEVELS, L"Server-Gui-Shell", KEY_WOW64_64KEY, &serverGuiShell); pushint((serverCore && !serverGuiShell) ? 1 : 0); return; } pushint(0); } ================================================ FILE: nsisplugin/Makefile ================================================ FILES = \ $(wildcard *.c) \ ../shared/HResult.c \ ../shared/LegacyUpdate.c \ ../shared/LoadImage.c \ ../shared/Log.c \ ../shared/ProductInfo.c \ ../shared/Registry.c \ ../shared/Wow64.c RCFILES = resource.rc BIN = obj/LegacyUpdateNSIS.dll all:: internal-all include ../build/shared.mk CFLAGS += \ -DLOG_NAME="\"Setup\"" \ -mdll LDFLAGS += \ -Wl,-e_DllMain \ -lpsapi \ -lkernel32 \ -luser32 \ -lole32 \ -loleaut32 \ -ladvapi32 \ -lgdi32 \ -lmsimg32 \ -lcrypt32 internal-all:: cp $(BIN) ../setup/x86-unicode/ test: +$(MAKE) DEBUG=$(DEBUG) cd ../setup && makensis test.nsi cd ../setup && explorer.exe test.exe .PHONY: all test ================================================ FILE: nsisplugin/MessageForHresult.c ================================================ #include #include #include "../shared/HResult.h" PLUGIN_METHOD(MessageForHresult) { PLUGIN_INIT(); HRESULT hr = popint(); if (hr == 0) { pushstring(L"Unknown error"); return; } LPWSTR message = GetMessageForHresult(hr); pushstring(message); LocalFree(message); } ================================================ FILE: nsisplugin/NeedsRootsUpdate.c ================================================ #include #include #include "Registry.h" #include "VersionInfo.h" #define ROOTS_UPDATE_THRESHOLD (30LL * 24LL * 60LL * 60LL * 10000000LL) PLUGIN_METHOD(NeedsRootsUpdate) { PLUGIN_INIT(); FILETIME currentTime = {0}; GetSystemTimeAsFileTime(¤tTime); HKEY key = NULL; HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGPATH_LEGACYUPDATE_SETUP, 0, GetRegistryWow64Flag(KEY_READ | KEY_WOW64_64KEY), &key)); if (!SUCCEEDED(hr)) { pushint(1); return; } FILETIME lastUpdateTime = {0}; DWORD type = REG_QWORD; DWORD size = sizeof(FILETIME); hr = HRESULT_FROM_WIN32(RegQueryValueEx(key, L"LastRootsUpdateTime", NULL, &type, (LPBYTE)&lastUpdateTime, &size)); RegCloseKey(key); if (!SUCCEEDED(hr) || type != REG_QWORD) { pushint(1); return; } ULONGLONG currentTime64 = 0, lastUpdateTime64 = 0; memcpy(¤tTime64, ¤tTime, sizeof(currentTime64)); memcpy(&lastUpdateTime64, &lastUpdateTime, sizeof(lastUpdateTime64)); ULONGLONG difference = currentTime64 - lastUpdateTime64; pushint(difference > ROOTS_UPDATE_THRESHOLD ? 1 : 0); } PLUGIN_METHOD(SetRootsUpdateTime) { PLUGIN_INIT(); FILETIME currentTime = {0}; GetSystemTimeAsFileTime(¤tTime); HKEY key = NULL; HRESULT hr = HRESULT_FROM_WIN32(RegCreateKeyEx(HKEY_LOCAL_MACHINE, REGPATH_LEGACYUPDATE_SETUP, 0, NULL, 0, GetRegistryWow64Flag(KEY_WRITE | KEY_WOW64_64KEY), NULL, &key, NULL)); if (SUCCEEDED(hr)) { RegSetValueEx(key, L"LastRootsUpdateTime", 0, REG_QWORD, (LPBYTE)¤tTime, sizeof(FILETIME)); RegCloseKey(key); } } ================================================ FILE: nsisplugin/RebootPage.c ================================================ #include #include #include #include "main.h" #include "resource.h" #include "VersionInfo.h" #define COUNTDOWN_ID 1234 #define COUNTDOWN_LENGTH 180 static HWND g_rebootHwnd; static WPARAM g_rebootParam = 0; static WNDPROC g_dialogOrigWndProc; static DWORD g_timerStart = 0; static DWORD g_timerInterval = 0; static DWORD g_timerMultiplier = 0; static UINT_PTR g_timer = 0; static WCHAR g_timerPrefix[NSIS_MAX_STRLEN] = L""; static INT_PTR CALLBACK RebootDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_TIMER: if (wParam == COUNTDOWN_ID) { DWORD elapsed = GetTickCount() - g_timerStart; DWORD elapsedSecs = elapsed / 1000; DWORD progress = min((elapsed * g_timerMultiplier) / 1000, COUNTDOWN_LENGTH * g_timerMultiplier); SendDlgItemMessage(hwnd, IDC_PROGRESS, PBM_SETPOS, progress, 0); DWORD remaining = max(COUNTDOWN_LENGTH - elapsedSecs, 0); WCHAR timerDisplay[NSIS_MAX_STRLEN]; wsprintf(timerDisplay, L"%s%02d:%02d", g_timerPrefix, remaining / 60, remaining % 60); SetDlgItemText(hwnd, IDC_TEXT1, timerDisplay); if (elapsedSecs >= COUNTDOWN_LENGTH) { KillTimer(hwnd, COUNTDOWN_ID); g_timer = 0; PostMessage(hwnd, WM_NOTIFY_OUTER_NEXT, 0, 0); } } return TRUE; case WM_CTLCOLORSTATIC: case WM_CTLCOLOREDIT: case WM_CTLCOLORDLG: case WM_CTLCOLORBTN: case WM_CTLCOLORLISTBOX: return SendMessage(g_hwndParent, uMsg, wParam, lParam); } return FALSE; } static LRESULT CALLBACK RebootMainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT result = CallWindowProc(g_dialogOrigWndProc, hwnd, uMsg, wParam, lParam); switch (uMsg) { case WM_NOTIFY_OUTER_NEXT: g_rebootParam = wParam; if (g_timer) { KillTimer(g_rebootHwnd, COUNTDOWN_ID); g_timer = 0; } DestroyWindow(g_rebootHwnd); g_rebootHwnd = NULL; break; } return result; } PLUGIN_METHOD(RebootPageCreate) { PLUGIN_INIT(); WCHAR introText[NSIS_MAX_STRLEN], nextText[NSIS_MAX_STRLEN], cancelText[NSIS_MAX_STRLEN]; popstringn(introText, sizeof(introText) / sizeof(WCHAR)); popstringn(g_timerPrefix, sizeof(g_timerPrefix) / sizeof(WCHAR)); popstringn(nextText, sizeof(nextText) / sizeof(WCHAR)); popstringn(cancelText, sizeof(cancelText) / sizeof(WCHAR)); // Set up child dialog RECT childRect; HWND childHwnd = GetDlgItem(g_hwndParent, IDC_CHILDRECT); GetWindowRect(childHwnd, &childRect); MapWindowPoints(NULL, g_hwndParent, (LPPOINT)&childRect, 2); g_rebootHwnd = CreateDialog(g_hInstance, MAKEINTRESOURCE(IDD_REBOOT), g_hwndParent, RebootDialogProc); if (g_rebootHwnd == NULL) { return; } SetWindowPos(g_rebootHwnd, 0, childRect.left, childRect.top, childRect.right - childRect.left, childRect.bottom - childRect.top, SWP_NOZORDER | SWP_NOACTIVATE); // Icon HICON hIcon = LoadImage(NULL, MAKEINTRESOURCE(IDI_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_SHARED | LR_DEFAULTSIZE); if (hIcon) { SendDlgItemMessage(g_rebootHwnd, IDI_ICON2, STM_SETICON, (WPARAM)hIcon, 0); } // Intro text SetDlgItemText(g_rebootHwnd, IDC_INTROTEXT, introText); // Smoother animation for Aero progress bar g_timerMultiplier = AtLeastWinVista() ? 10 : 1; // Progress bar/timer SendDlgItemMessage(g_rebootHwnd, IDC_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM(0, COUNTDOWN_LENGTH * g_timerMultiplier)); SendDlgItemMessage(g_rebootHwnd, IDC_PROGRESS, PBM_SETPOS, 0, 0); g_timerStart = GetTickCount(); g_timer = SetTimer(g_rebootHwnd, COUNTDOWN_ID, 1000 / g_timerMultiplier, NULL); // Force initial timer callback to fire now SendMessage(g_rebootHwnd, WM_TIMER, COUNTDOWN_ID, 0); // Show window g_dialogOrigWndProc = (WNDPROC)SetWindowLongPtr(g_hwndParent, GWLP_WNDPROC, (LONG_PTR)RebootMainWndProc); SendMessage(g_hwndParent, WM_NOTIFY_CUSTOM_READY, (WPARAM)g_rebootHwnd, 0); ShowWindow(g_rebootHwnd, SW_SHOWNA); // Set Next button to Reboot HWND nextButton = GetDlgItem(g_hwndParent, IDOK); if (nextButton) { SetWindowText(nextButton, nextText); } // Set Cancel button to Later HWND cancelButton = GetDlgItem(g_hwndParent, IDCANCEL); if (cancelButton) { SetWindowText(cancelButton, cancelText); EnableWindow(cancelButton, TRUE); } // Bring attention back if the user switched away SetForegroundWindow(g_hwndParent); BringWindowToTop(g_hwndParent); SetFocus(nextButton); MessageBeep(AtLeastWinVista() ? MB_ICONWARNING : MB_ICONINFORMATION); // Flash taskbar button FLASHWINFO fInfo = {0}; fInfo.cbSize = sizeof(fInfo); fInfo.hwnd = g_rebootHwnd; fInfo.dwFlags = FLASHW_ALL | FLASHW_TIMER; fInfo.uCount = COUNTDOWN_LENGTH; fInfo.dwTimeout = 0; FlashWindowEx(&fInfo); } PLUGIN_METHOD(RebootPageShow) { while (g_rebootHwnd) { MSG msg; GetMessage(&msg, NULL, 0, 0); if (!IsDialogMessage(g_rebootHwnd, &msg) && !IsDialogMessage(g_hwndParent, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } // Break out if timeout reached if (msg.message == WM_NOTIFY_OUTER_NEXT) { g_rebootParam = 1; break; } } pushint(g_rebootParam); // Cleanup if (g_timer) { KillTimer(g_rebootHwnd, COUNTDOWN_ID); g_timer = 0; } SetWindowLongPtr(g_hwndParent, GWLP_WNDPROC, (LONG_PTR)g_dialogOrigWndProc); g_dialogOrigWndProc = NULL; } ================================================ FILE: nsisplugin/TaskbarProgress.c ================================================ // Based on https://nsis.sourceforge.io/TaskbarProgress_plug-in - zlib licensed // Cleaned up and refactored into C by Legacy Update #undef _WIN32_WINNT #define _WIN32_WINNT _WIN32_WINNT_WIN7 #include #include #include #include #include #include "main.h" #include "VersionInfo.h" static extra_parameters *g_extra; static ITaskbarList3 *g_taskbarList; static UINT g_totalRange; static WNDPROC g_progressOrigWndProc; static WNDPROC g_dialogOrigWndProc; LRESULT CALLBACK ProgressBarWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (!g_progressOrigWndProc) { 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) { ITaskbarList3_SetProgressValue(g_taskbarList, g_hwndParent, wParam, g_totalRange); } break; case WM_DESTROY: SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)g_progressOrigWndProc); if (g_taskbarList) { ITaskbarList3_SetProgressState(g_taskbarList, g_hwndParent, TBPF_NOPROGRESS); ITaskbarList3_Release(g_taskbarList); g_taskbarList = NULL; } g_progressOrigWndProc = NULL; break; } return CallWindowProc(g_progressOrigWndProc, hwnd, uMsg, wParam, lParam); } static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (!g_dialogOrigWndProc) { return 0; } switch (uMsg) { case WM_NOTIFY_OUTER_NEXT: if (g_extra->exec_flags->abort) { // Set the progress bar to error state (red) HWND innerWindow = FindWindowEx(hwnd, NULL, L"#32770", NULL); HWND progressBar = FindWindowEx(innerWindow, NULL, L"msctls_progress32", NULL); if (progressBar) { SendMessage(progressBar, PBM_SETSTATE, PBST_ERROR, 0); } if (g_taskbarList) { ITaskbarList3_SetProgressState(g_taskbarList, g_hwndParent, TBPF_ERROR); } } break; case WM_DESTROY: SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)g_dialogOrigWndProc); g_dialogOrigWndProc = NULL; break; } return CallWindowProc(g_dialogOrigWndProc, hwnd, uMsg, wParam, lParam); } static UINT_PTR NSISPluginCallback(enum NSPIM event) { // Does nothing, but keeping a callback registered prevents NSIS from unloading the plugin return 0; } PLUGIN_METHOD(InitTaskbarProgress) { PLUGIN_INIT(); if (!AtLeastWin7()) { return; } g_extra = extra; extra->RegisterPluginCallback(g_hInstance, NSISPluginCallback); if (g_dialogOrigWndProc) { // Already initialised return; } HWND innerWindow = FindWindowEx(g_hwndParent, NULL, L"#32770", NULL); HWND progressBar = FindWindowEx(innerWindow, NULL, L"msctls_progress32", NULL); PBRANGE range = {0}; HRESULT hr = E_FAIL; if (!progressBar) { goto end; } hr = CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList3, (void **)&g_taskbarList); CHECK_HR_OR_GOTO_END(L"CoCreateInstance"); hr = ITaskbarList3_HrInit(g_taskbarList); if (hr == E_NOTIMPL) { // Expected when on the SYSTEM desktop goto end; } CHECK_HR_OR_GOTO_END(L"HrInit"); // 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_progressOrigWndProc = (WNDPROC)SetWindowLongPtr(progressBar, GWLP_WNDPROC, (LONG_PTR)ProgressBarWndProc); g_dialogOrigWndProc = (WNDPROC)SetWindowLongPtr(g_hwndParent, GWLP_WNDPROC, (LONG_PTR)MainWndProc); if (!g_progressOrigWndProc || !g_dialogOrigWndProc) { goto end; } return; end: if (g_taskbarList) { ITaskbarList3_Release(g_taskbarList); g_taskbarList = NULL; } g_progressOrigWndProc = NULL; g_dialogOrigWndProc = NULL; } ================================================ FILE: nsisplugin/UpdateRoots.c ================================================ #include #include #include #include "HResult.h" PLUGIN_METHOD(UpdateRoots) { PLUGIN_INIT(); HRESULT hr = E_FAIL; WCHAR stateStr[NSIS_MAX_STRLEN], store[NSIS_MAX_STRLEN], path[NSIS_MAX_STRLEN]; popstringn(stateStr, sizeof(stateStr) / sizeof(WCHAR)); popstringn(store, sizeof(store) / sizeof(WCHAR)); popstringn(path, sizeof(path) / sizeof(WCHAR)); if (lstrlen(stateStr) == 0 || lstrlen(store) == 0 || lstrlen(path) == 0) { pushint(E_INVALIDARG); return; } BOOL add = FALSE; if (lstrcmpi(stateStr, L"/update") == 0) { add = TRUE; } else if (lstrcmpi(stateStr, L"/delete") == 0) { add = FALSE; } else { pushint(E_INVALIDARG); return; } HCERTSTORE srcStore = CertOpenStore(CERT_STORE_PROV_FILENAME_W, 0, 0, CERT_STORE_READONLY_FLAG, path); HCERTSTORE dstStore = NULL; if (!srcStore) { TRACE(L"CertOpenStore for %ls failed: %08x", path, hr); hr = HRESULT_FROM_WIN32(GetLastError()); goto end; } dstStore = CertOpenStore(CERT_STORE_PROV_SYSTEM_REGISTRY_W, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, store); if (!dstStore) { hr = HRESULT_FROM_WIN32(GetLastError()); TRACE(L"CertOpenStore for %ls failed: %08x", store, hr); goto end; } PCCERT_CONTEXT cert = NULL; while ((cert = CertEnumCertificatesInStore(srcStore, cert)) != NULL) { BOOL result = add ? CertAddCertificateContextToStore(dstStore, cert, CERT_STORE_ADD_REPLACE_EXISTING, NULL) : CertDeleteCertificateFromStore(CertDuplicateCertificateContext(cert)); if (!result) { TRACE(L"cert %ls in %ls failed: %d\n", add ? L"add" : L"delete", store, GetLastError()); hr = HRESULT_FROM_WIN32(GetLastError()); goto end; } } hr = S_OK; end: if (srcStore) { CertCloseStore(srcStore, 0); } if (dstStore) { CertCloseStore(dstStore, 0); } pushint(hr); } ================================================ FILE: nsisplugin/VerifyFileHash.c ================================================ #include #include #include "sha256.h" static BOOL hexToBinary(const char *hex, uint8_t *binary, int binaryLength) { if (lstrlenA(hex) != binaryLength * 2) { return FALSE; } for (int i = 0; i < binaryLength; i++) { char high = hex[i * 2]; char low = hex[i * 2 + 1]; if (high >= '0' && high <= '9') { high -= '0'; } else if (high >= 'a' && high <= 'f') { high -= 'a' - 10; } else { // Invalid character return FALSE; } if (low >= '0' && low <= '9') { low -= '0'; } else if (low >= 'a' && low <= 'f') { low -= 'a' - 10; } else { // Invalid character return FALSE; } binary[i] = (uint8_t)((high << 4) | low); } return TRUE; } static BOOL calculateFileSha256(const LPWSTR path, uint8_t hash[SIZE_OF_SHA_256_HASH]) { HANDLE file = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (file == INVALID_HANDLE_VALUE) { return FALSE; } struct Sha_256 sha256; sha_256_init(&sha256, hash); uint8_t buffer[8192]; DWORD bytesRead = 0; while (ReadFile(file, buffer, sizeof(buffer), &bytesRead, NULL) && bytesRead > 0) { sha_256_write(&sha256, buffer, bytesRead); } sha_256_close(&sha256); CloseHandle(file); return TRUE; } PLUGIN_METHOD(VerifyFileHash) { PLUGIN_INIT(); WCHAR filename[MAX_PATH], expectedHashHex[256]; popstringn(filename, sizeof(filename) / sizeof(WCHAR)); popstringn(expectedHashHex, sizeof(expectedHashHex) / sizeof(WCHAR)); char expectedHashHexA[256]; WideCharToMultiByte(CP_ACP, 0, expectedHashHex, -1, expectedHashHexA, sizeof(expectedHashHexA), NULL, NULL); uint8_t expectedHash[SIZE_OF_SHA_256_HASH], calculatedHash[SIZE_OF_SHA_256_HASH]; if (!hexToBinary(expectedHashHexA, expectedHash, SIZE_OF_SHA_256_HASH)) { pushint(-1); return; } if (!calculateFileSha256(filename, calculatedHash)) { pushint(-1); return; } WCHAR calculatedHashHex[SIZE_OF_SHA_256_HASH * 2 + 1]; for (int i = 0; i < SIZE_OF_SHA_256_HASH; i++) { wsprintf(&calculatedHashHex[i * 2], L"%02x", calculatedHash[i]); } pushstring(calculatedHashHex); for (int i = 0; i < SIZE_OF_SHA_256_HASH; i++) { if (expectedHash[i] != calculatedHash[i]) { pushint(0); return; } } pushint(1); } ================================================ FILE: nsisplugin/WriteLog.c ================================================ #include "stdafx.h" #include #include #include "Log.h" static HWND g_hwndLogList = 0; static WNDPROC g_pfnListViewProc = NULL; static LRESULT CALLBACK LogListViewProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (msg == LVM_INSERTITEM) { LVITEM *item = (LVITEM *)lParam; if (item && (item->mask & LVIF_TEXT) && item->pszText) { LogInternal(item->pszText); } } return CallWindowProc(g_pfnListViewProc, hwnd, msg, wParam, lParam); } PLUGIN_METHOD(InitLog) { PLUGIN_INIT(); OpenLog(); // Hook progress log to send items to the log file if (!g_hwndLogList && g_hwndParent) { HWND innerWindow = FindWindowEx(g_hwndParent, NULL, L"#32770", NULL); HWND listView = FindWindowEx(innerWindow, NULL, L"SysListView32", NULL); if (listView) { g_hwndLogList = listView; g_pfnListViewProc = (WNDPROC)SetWindowLong(g_hwndLogList, GWL_WNDPROC, (LONG_PTR)LogListViewProc); } } } PLUGIN_METHOD(WriteLog) { PLUGIN_INIT(); WCHAR text[NSIS_MAX_STRLEN]; popstring(text); LogInternal(text); } ================================================ FILE: nsisplugin/main.c ================================================ #include #include #include "Startup.h" #include "Log.h" HINSTANCE g_hInstance; HWND g_hwndParent; EXTERN_C __declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { switch (dwReason) { case DLL_PROCESS_ATTACH: g_hInstance = hInstance; Startup(); OpenLog(); break; case DLL_PROCESS_DETACH: g_hInstance = NULL; CloseLog(); break; } return TRUE; } #include ================================================ FILE: nsisplugin/main.h ================================================ #include EXTERN_C HINSTANCE g_hInstance; EXTERN_C HWND g_hwndParent; ================================================ FILE: nsisplugin/resource.h ================================================ #define IDC_CHILDRECT 1018 // Reboot #define IDD_REBOOT 120 #define IDI_ICON2 103 #define IDC_INTROTEXT 1006 #define IDC_TEXT1 1021 #define IDC_PROGRESS 1004 ================================================ FILE: nsisplugin/resource.rc ================================================ #include "resource.h" #include #include "Version.h" #define INNER_WIDTH 317 #define INNER_HEIGHT 119 #define INNER_WIDTH_ALIGNED (INNER_WIDTH - 12) ///////////////////////////////////////////////////////////////////////////// // English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(65001) ///////////////////////////////////////////////////////////////////////////// // // Dialogs // IDD_REBOOT DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Icon CONTROL "", IDI_ICON2, "STATIC", SS_ICON, 0, 0, 21, 20 // Intro text LTEXT "Text\nText\nText", IDC_INTROTEXT, 27, 0, INNER_WIDTH - 28, 65 // Countdown text LTEXT "", IDC_TEXT1, 0, 68, INNER_WIDTH, 16, SS_LEFTNOWORDWRAP | SS_NOPREFIX // Progress CONTROL "", IDC_PROGRESS, "msctls_progress32", WS_BORDER, 0, 84, INNER_WIDTH_ALIGNED, 10 END ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION VERSION PRODUCTVERSION VERSION FILEFLAGSMASK VS_FFI_FILEFLAGSMASK #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG | VS_FF_PRERELEASE #else FILEFLAGS 0 #endif FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_DLL FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "Hashbang Productions" VALUE "FileDescription", "Legacy Update Setup Helper" VALUE "FileVersion", VERSION_STRING VALUE "InternalName", "LegacyUpdateNSIS.dll" VALUE "LegalCopyright", "© Hashbang Productions. All rights reserved." VALUE "OriginalFilename", "LegacyUpdateNSIS.dll" VALUE "ProductName", "Legacy Update" VALUE "ProductVersion", VERSION_STRING END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0409, 0x04b0 END END #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// ================================================ FILE: nsisplugin/sha256.c ================================================ // From https://github.com/amosnier/sha-2 // Licensed under 0BSD https://github.com/amosnier/sha-2/blob/565f650/LICENSE.md #include "sha256.h" #define TOTAL_LEN_LEN 8 /* * Comments from pseudo-code at https://en.wikipedia.org/wiki/SHA-2 are reproduced here. * When useful for clarification, portions of the pseudo-code are reproduced here too. */ /* * @brief Rotate a 32-bit value by a number of bits to the right. * @param value The value to be rotated. * @param count The number of bits to rotate by. * @return The rotated value. */ static inline uint32_t right_rot(uint32_t value, unsigned int count) { /* * Defined behaviour in standard C for all count where 0 < count < 32, which is what we need here. */ return value >> count | value << (32 - count); } /* * @brief Update a hash value under calculation with a new chunk of data. * @param h Pointer to the first hash item, of a total of eight. * @param p Pointer to the chunk data, which has a standard length. * * @note This is the SHA-256 work horse. */ static inline void consume_chunk(uint32_t *h, const uint8_t *p) { unsigned i, j; uint32_t ah[8]; /* Initialize working variables to current hash value: */ for (i = 0; i < 8; i++) ah[i] = h[i]; /* * The w-array is really w[64], but since we only need 16 of them at a time, we save stack by * calculating 16 at a time. * * This optimization was not there initially and the rest of the comments about w[64] are kept in their * initial state. */ /* * create a 64-entry message schedule array w[0..63] of 32-bit words (The initial values in w[0..63] * don't matter, so many implementations zero them here) copy chunk into first 16 words w[0..15] of the * message schedule array */ uint32_t w[16]; /* Compression function main loop: */ for (i = 0; i < 4; i++) { for (j = 0; j < 16; j++) { if (i == 0) { w[j] = (uint32_t)p[0] << 24 | (uint32_t)p[1] << 16 | (uint32_t)p[2] << 8 | (uint32_t)p[3]; p += 4; } else { /* Extend the first 16 words into the remaining 48 words w[16..63] of the * message schedule array: */ const uint32_t s0 = right_rot(w[(j + 1) & 0xf], 7) ^ right_rot(w[(j + 1) & 0xf], 18) ^ (w[(j + 1) & 0xf] >> 3); const uint32_t s1 = right_rot(w[(j + 14) & 0xf], 17) ^ right_rot(w[(j + 14) & 0xf], 19) ^ (w[(j + 14) & 0xf] >> 10); w[j] = w[j] + s0 + w[(j + 9) & 0xf] + s1; } const uint32_t s1 = right_rot(ah[4], 6) ^ right_rot(ah[4], 11) ^ right_rot(ah[4], 25); const uint32_t ch = (ah[4] & ah[5]) ^ (~ah[4] & ah[6]); /* * Initialize array of round constants: * (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311): */ static const uint32_t k[] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; const uint32_t temp1 = ah[7] + s1 + ch + k[i << 4 | j] + w[j]; const uint32_t s0 = right_rot(ah[0], 2) ^ right_rot(ah[0], 13) ^ right_rot(ah[0], 22); const uint32_t maj = (ah[0] & ah[1]) ^ (ah[0] & ah[2]) ^ (ah[1] & ah[2]); const uint32_t temp2 = s0 + maj; ah[7] = ah[6]; ah[6] = ah[5]; ah[5] = ah[4]; ah[4] = ah[3] + temp1; ah[3] = ah[2]; ah[2] = ah[1]; ah[1] = ah[0]; ah[0] = temp1 + temp2; } } /* Add the compressed chunk to the current hash value: */ for (i = 0; i < 8; i++) h[i] += ah[i]; } /* * Public functions. See header file for documentation. */ void sha_256_init(struct Sha_256 *sha_256, uint8_t hash[SIZE_OF_SHA_256_HASH]) { sha_256->hash = hash; sha_256->chunk_pos = sha_256->chunk; sha_256->space_left = SIZE_OF_SHA_256_CHUNK; sha_256->total_len = 0; /* * Initialize hash values (first 32 bits of the fractional parts of the square roots of the first 8 primes * 2..19): */ sha_256->h[0] = 0x6a09e667; sha_256->h[1] = 0xbb67ae85; sha_256->h[2] = 0x3c6ef372; sha_256->h[3] = 0xa54ff53a; sha_256->h[4] = 0x510e527f; sha_256->h[5] = 0x9b05688c; sha_256->h[6] = 0x1f83d9ab; sha_256->h[7] = 0x5be0cd19; } void sha_256_write(struct Sha_256 *sha_256, const void *data, size_t len) { sha_256->total_len += len; /* * The following cast is not necessary, and could even be considered as poor practice. However, it makes this * file valid C++, which could be a good thing for some use cases. */ const uint8_t *p = (const uint8_t *)data; while (len > 0) { /* * If the input chunks have sizes that are multiples of the calculation chunk size, no copies are * necessary. We operate directly on the input data instead. */ if (sha_256->space_left == SIZE_OF_SHA_256_CHUNK && len >= SIZE_OF_SHA_256_CHUNK) { consume_chunk(sha_256->h, p); len -= SIZE_OF_SHA_256_CHUNK; p += SIZE_OF_SHA_256_CHUNK; continue; } /* General case, no particular optimization. */ const size_t consumed_len = len < sha_256->space_left ? len : sha_256->space_left; memcpy(sha_256->chunk_pos, p, consumed_len); sha_256->space_left -= consumed_len; len -= consumed_len; p += consumed_len; if (sha_256->space_left == 0) { consume_chunk(sha_256->h, sha_256->chunk); sha_256->chunk_pos = sha_256->chunk; sha_256->space_left = SIZE_OF_SHA_256_CHUNK; } else { sha_256->chunk_pos += consumed_len; } } } uint8_t *sha_256_close(struct Sha_256 *sha_256) { uint8_t *pos = sha_256->chunk_pos; size_t space_left = sha_256->space_left; uint32_t *const h = sha_256->h; /* * The current chunk cannot be full. Otherwise, it would already have been consumed. I.e. there is space left * for at least one byte. The next step in the calculation is to add a single one-bit to the data. */ *pos++ = 0x80; --space_left; /* * Now, the last step is to add the total data length at the end of the last chunk, and zero padding before * that. But we do not necessarily have enough space left. If not, we pad the current chunk with zeroes, and add * an extra chunk at the end. */ if (space_left < TOTAL_LEN_LEN) { memset(pos, 0x00, space_left); consume_chunk(h, sha_256->chunk); pos = sha_256->chunk; space_left = SIZE_OF_SHA_256_CHUNK; } const size_t left = space_left - TOTAL_LEN_LEN; memset(pos, 0x00, left); pos += left; uint64_t len = sha_256->total_len; pos[7] = (uint8_t)(len << 3); len >>= 5; int i; for (i = 6; i >= 0; --i) { pos[i] = (uint8_t)len; len >>= 8; } consume_chunk(h, sha_256->chunk); /* Produce the final hash value (big-endian): */ int j; uint8_t *const hash = sha_256->hash; for (i = 0, j = 0; i < 8; i++) { hash[j++] = (uint8_t)(h[i] >> 24); hash[j++] = (uint8_t)(h[i] >> 16); hash[j++] = (uint8_t)(h[i] >> 8); hash[j++] = (uint8_t)h[i]; } return sha_256->hash; } void calc_sha_256(uint8_t hash[SIZE_OF_SHA_256_HASH], const void *input, size_t len) { struct Sha_256 sha_256; sha_256_init(&sha_256, hash); sha_256_write(&sha_256, input, len); (void)sha_256_close(&sha_256); } ================================================ FILE: nsisplugin/sha256.h ================================================ // From https://github.com/amosnier/sha-2 // Licensed under 0BSD https://github.com/amosnier/sha-2/blob/565f650/LICENSE.md #ifndef SHA_256_H #define SHA_256_H #include #include #ifdef __cplusplus extern "C" { #endif /* * @brief Size of the SHA-256 sum. This times eight is 256 bits. */ #define SIZE_OF_SHA_256_HASH 32 /* * @brief Size of the chunks used for the calculations. * * @note This should mostly be ignored by the user, although when using the streaming API, it has an impact for * performance. Add chunks whose size is a multiple of this, and you will avoid a lot of superfluous copying in RAM! */ #define SIZE_OF_SHA_256_CHUNK 64 /* * @brief The opaque SHA-256 type, that should be instantiated when using the streaming API. * * @note Although the details are exposed here, in order to make instantiation easy, you should refrain from directly * accessing the fields, as they may change in the future. */ struct Sha_256 { uint8_t *hash; uint8_t chunk[SIZE_OF_SHA_256_CHUNK]; uint8_t *chunk_pos; size_t space_left; uint64_t total_len; uint32_t h[8]; }; /* * @brief The simple SHA-256 calculation function. * @param hash Hash array, where the result is delivered. * @param input Pointer to the data the hash shall be calculated on. * @param len Length of the input data, in byte. * * @note If all of the data you are calculating the hash value on is available in a contiguous buffer in memory, this is * the function you should use. * * @note If either of the passed pointers is NULL, the results are unpredictable. * * @note See note about maximum data length for sha_256_write, as it applies for this function's len argument too. */ void calc_sha_256(uint8_t hash[SIZE_OF_SHA_256_HASH], const void *input, size_t len); /* * @brief Initialize a SHA-256 streaming calculation. * @param sha_256 A pointer to a SHA-256 structure. * @param hash Hash array, where the result will be delivered. * * @note If all of the data you are calculating the hash value on is not available in a contiguous buffer in memory, * this is where you should start. Instantiate a SHA-256 structure, for instance by simply declaring it locally, make * your hash buffer available, and invoke this function. Once a SHA-256 hash has been calculated (see further below) a * SHA-256 structure can be initialized again for the next calculation. * * @note If either of the passed pointers is NULL, the results are unpredictable. */ void sha_256_init(struct Sha_256 *sha_256, uint8_t hash[SIZE_OF_SHA_256_HASH]); /* * @brief Stream more input data for an on-going SHA-256 calculation. * @param sha_256 A pointer to a previously initialized SHA-256 structure. * @param data Pointer to the data to be added to the calculation. * @param len Length of the data to add, in byte. * * @note This function may be invoked an arbitrary number of times between initialization and closing, but the maximum * data length is limited by the SHA-256 algorithm: the total number of bits (i.e. the total number of bytes times * eight) must be representable by a 64-bit unsigned integer. While that is not a practical limitation, the results are * unpredictable if that limit is exceeded. * * @note This function may be invoked on empty data (zero length), although that obviously will not add any data. * * @note If either of the passed pointers is NULL, the results are unpredictable. */ void sha_256_write(struct Sha_256 *sha_256, const void *data, size_t len); /* * @brief Conclude a SHA-256 streaming calculation, making the hash value available. * @param sha_256 A pointer to a previously initialized SHA-256 structure. * @return Pointer to the hash array, where the result is delivered. * * @note After this function has been invoked, the result is available in the hash buffer that initially was provided. A * pointer to the hash value is returned for convenience, but you should feel free to ignore it: it is simply a pointer * to the first byte of your initially provided hash array. * * @note If the passed pointer is NULL, the results are unpredictable. * * @note Invoking this function for a calculation with no data (the writing function has never been invoked, or it only * has been invoked with empty data) is legal. It will calculate the SHA-256 value of the empty string. */ uint8_t *sha_256_close(struct Sha_256 *sha_256); #ifdef __cplusplus } #endif #endif ================================================ FILE: nsisplugin/stdafx.h ================================================ #pragma once #ifndef STRICT #define STRICT #endif #define WINVER _WIN32_WINNT_NT4 #define _WIN32_WINNT _WIN32_WINNT_NT4 // Use msvcrt stdio functions #define __USE_MINGW_ANSI_STDIO 0 // Enable COM C interfaces #define CINTERFACE #define COBJMACROS #define INITGUID #include "resource.h" #include #include "Trace.h" EXTERN_C HWND g_hwndParent; #define NSIS_MAX_STRLEN 8192 #define PLUGIN_METHOD(name) \ EXTERN_C __declspec(dllexport) \ void __cdecl name(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop, extra_parameters *extra) #define PLUGIN_INIT() \ if (extra && extra->exec_flags && (extra->exec_flags->plugin_api_version != NSISPIAPIVER_CURR)) { \ return; \ } \ EXDLL_INIT(); \ g_hwndParent = hwndParent; ================================================ FILE: setup/ActiveX.inf ================================================ [Version] Signature="$CHICAGO$" AdvancedINF=2.0 [Setup Hooks] setup=setup [setup] run="%EXTRACT_DIR%\setup.exe" ================================================ FILE: setup/ActiveXPage.nsh ================================================ Var Dialog Var Dialog.Y Function ActiveXPage ; Skip in runonce ${If} ${IsRunOnce} ${OrIf} ${IsPostInstall} Abort ${EndIf} ; Skip if ActiveX install (user already opted for it) ${If} ${IsActiveX} Abort ${EndIf} ; Skip if not required ${If} ${AtLeastWin7} ; TODO: Fix ordering of setup.nsi so we can do this ; ${OrIfNot} ${SectionIsSelected} ${LEGACYUPDATE} Abort ${EndIf} !insertmacro MUI_HEADER_TEXT "$(ActiveXPageTitle)" "" nsDialogs::Create 1018 Pop $Dialog ${AeroWizardDialogControl} $Dialog StrCpy $Dialog.Y 0 ${NSD_CreateLabel} 0 $Dialog.Y -1u 24u "$(ActiveXPageText)" Pop $0 ${AeroWizardDialogControl} $0 IntOp $Dialog.Y $Dialog.Y + 60 ${NSD_CreateIcon} 3u $Dialog.Y 4u 4u "" Pop $0 ${AeroWizardDialogControl} $0 ${NSD_SetIconFromInstaller} $0 103 ${NSD_CreateRadioButton} 30u $Dialog.Y -30u 10u "$(ActiveXPageYesTitle)" Pop $0 ${AeroWizardDialogControl} $0 ${NSD_OnClick} $0 ActiveXPageSelectionChanged SendMessage $0 ${BM_SETCHECK} ${BST_CHECKED} 0 ${NSD_SetFocus} $0 ${If} ${AtLeastWinVista} StrCpy $0 "$(ActiveXPageYesTextVista)" ${Else} StrCpy $0 "$(ActiveXPageYesText2KXP)" ${EndIf} IntOp $Dialog.Y $Dialog.Y + 17 ${NSD_CreateLabel} 41u $Dialog.Y -41u 24u "$0" Pop $0 ${AeroWizardDialogControl} $0 IntOp $Dialog.Y $Dialog.Y + 50 ${NSD_CreateIcon} 3u $Dialog.Y 4u 4u "" Pop $0 ${AeroWizardDialogControl} $0 ${If} ${AtLeastWinVista} ${NSD_SetIcon} $0 "$WINDIR\System32\wucltux.dll" $1 StrCpy $1 "$(ActiveXPageNoTitleVista)" StrCpy $2 "$(ActiveXPageNoTextVista)" ${Else} ${NSD_SetIcon} $0 "res://$WINDIR\System32\wupdmgr.exe/#Icon/APPICON" $1 StrCpy $1 "$(ActiveXPageNoTitle2KXP)" StrCpy $2 "$(ActiveXPageNoText2KXP)" ${EndIf} ${NSD_CreateRadioButton} 30u $Dialog.Y -30u 10u "$1" Pop $0 ${AeroWizardDialogControl} $0 ${NSD_OnClick} $0 ActiveXPageSelectionChanged IntOp $Dialog.Y $Dialog.Y + 17 ${NSD_CreateLabel} 41u $Dialog.Y -41u 24u "$2" Pop $0 ${AeroWizardDialogControl} $0 nsDialogs::Show Call AeroWizardOnShow FunctionEnd Function ActiveXPageSelectionChanged Pop $0 ${NSD_GetState} $0 $0 ; TODO: Fix ordering of setup.nsi so we can do this ${If} $0 == ${BST_CHECKED} ; !insertmacro UnselectSection ${ACTIVEX} ${Else} ; !insertmacro SelectSection ${ACTIVEX} ${EndIf} FunctionEnd ================================================ FILE: setup/AeroWizard.nsh ================================================ !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 ; These are PE resources because there's no benefit to LZMA compressing PNGs PEAddResource "banner-wordmark-light.png" "PNG" "#1337" PEAddResource "banner-wordmark-dark.png" "PNG" "#1338" PEAddResource "banner-wordmark-glow.png" "PNG" "#1339" Var /GLOBAL ChildHwnd Var /GLOBAL AeroWizard.Font !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} ; Aero style CreateFont $3 "Segoe UI" 12 400 !insertmacro SetControlColor $HWNDPARENT 1037 0x003399 ${EndIf} CreateFont $AeroWizard.Font "Segoe UI" 8 400 !insertmacro SetFont $3 $HWNDPARENT 1037 !insertmacro SetFont $AeroWizard.Font $HWNDPARENT 1028 ${For} $4 1 3 !insertmacro SetFont $AeroWizard.Font $HWNDPARENT $4 ${Next} ${For} $4 1000 1043 !insertmacro SetFont $AeroWizard.Font $ChildHwnd $4 ${Next} ${Else} ; Wizard97ish style ${If} ${FileExists} "$FONTS\framd.ttf" CreateFont $2 "Franklin Gothic Medium" 13 400 !insertmacro SetControlColor $HWNDPARENT 1037 0x003399 ${Else} CreateFont $2 "Verdana" 12 800 !insertmacro SetControlColor $HWNDPARENT 1037 SYSCLR:WINDOWTEXT ${EndIf} !insertmacro SetFont $2 $HWNDPARENT 1037 CreateFont $AeroWizard.Font "MS Shell Dlg 2" 8 400 ${EndIf} ; Set white background SetCtlColors $HWNDPARENT SYSCLR:WINDOWTEXT SYSCLR:WINDOW SetCtlColors $ChildHwnd SYSCLR:WINDOWTEXT SYSCLR:WINDOW !insertmacro SetBackground $ChildHwnd 103 ${For} $4 1000 1043 !insertmacro SetBackground $ChildHwnd $4 ${Next} ; Set up banner and glass LegacyUpdateNSIS::DialogInit ; Activate taskbar progress bar plugin LegacyUpdateNSIS::InitTaskbarProgress !macroend Function AeroWizardOnShow !insertmacro -AeroWizardOnShow FunctionEnd !if ${NT4} == 0 Function un.AeroWizardOnShow !insertmacro -AeroWizardOnShow FunctionEnd !endif !macro -AeroWizardDialogControl hwnd SendMessage ${hwnd} ${WM_SETFONT} $AeroWizard.Font 0 SetCtlColors ${hwnd} SYSCLR:WINDOWTEXT SYSCLR:WINDOW !macroend !define AeroWizardDialogControl '!insertmacro -AeroWizardDialogControl' ================================================ FILE: setup/Common.nsh ================================================ !addplugindir /x86-unicode x86-unicode SetPluginUnload alwaysoff !if ${DEBUG} == 0 !packhdr upx.tmp 'upx --lzma -9 upx.tmp' !endif !if ${SIGN} == 1 !finalize '../build/sign.sh "%1"' !uninstfinalize '../build/sign.sh "%1"' !endif !macro -Trace msg !if ${DEBUG} == 1 !insertmacro _LOGICLIB_TEMP !ifdef __FUNCTION__ StrCpy $_LOGICLIB_TEMP "${__FUNCTION__}" !else StrCpy $_LOGICLIB_TEMP "${__SECTION__}" !endif MessageBox MB_OK `${__FILE__}(${__LINE__}): $_LOGICLIB_TEMP: ${msg}` !endif !macroend !define TRACE '!insertmacro -Trace' !define IsNativeIA64 '${IsNativeMachineArchitecture} ${IMAGE_FILE_MACHINE_IA64}' ; Avoid needing to use System.dll for this !define /redef RunningX64 `"$PROGRAMFILES64" != "$PROGRAMFILES32"` !macro _HasFlag _a _b _t _f !insertmacro _LOGICLIB_TEMP ${GetParameters} $_LOGICLIB_TEMP ClearErrors ${GetOptions} $_LOGICLIB_TEMP `${_b}` $_LOGICLIB_TEMP IfErrors `${_f}` `${_t}` !macroend !define IsPassive `"" HasFlag "/passive"` !define IsActiveX `"" HasFlag "/activex"` !define IsRunOnce `"" HasFlag "/runonce"` !define IsPostInstall `"" HasFlag "/postinstall"` !define NoRestart `"" HasFlag "/norestart"` !define IsHelp `"" HasFlag "/?"` !if ${DEBUG} == 1 !define IsVerbose `1 == 1` !define TestRunOnce `"" HasFlag "/testrunonce"` !else !define IsVerbose `"" HasFlag "/v"` !endif !macro -DetailPrint level text LegacyUpdateNSIS::WriteLog "${text}" !if ${level} == 0 ${If} ${IsVerbose} DetailPrint "${text}" ${EndIf} !else SetDetailsPrint both DetailPrint "${text}" SetDetailsPrint listonly !endif !macroend !define VerbosePrint `!insertmacro -DetailPrint 0` !define DetailPrint `!insertmacro -DetailPrint 1` Var /GLOBAL SetupMutexHandle Var /GLOBAL TermsrvUserModeChanged Function CheckSetupMutex !define SetupMutexName "Global\$(^Name)" System::Call '${OpenMutex}(${SYNCHRONIZE}, 0, "${SetupMutexName}") .r0' ${If} $0 != 0 System::Call '${CloseHandle}($0)' ${VerbosePrint} "Setup is already running" MessageBox MB_USERICON "$(MsgBoxSetupAlreadyRunning)" /SD IDOK SetErrorLevel 1 Quit ${EndIf} System::Call '${CreateMutex}(0, 1, "${SetupMutexName}") .r0' StrCpy $SetupMutexHandle $0 FunctionEnd Function InitChecks SetShellVarContext all ${If} ${IsVerbose} SetDetailsPrint both ${Else} SetDetailsPrint listonly ${EndIf} ${If} ${RunningX64} SetRegView 64 ${EndIf} !if ${NT4} == 1 ${IfNot} ${IsWinNT4} MessageBox MB_USERICON|MB_OKCANCEL "$(MsgBoxNeedsNT4)" /SD IDCANCEL \ IDCANCEL +2 ExecShell "" "${WEBSITE}" SetErrorLevel ${ERROR_OLD_WIN_VERSION} Quit ${EndIf} !else ${IfNot} ${AtLeastWin2000} MessageBox MB_USERICON|MB_OKCANCEL "$(MsgBoxOldWinVersion)" /SD IDCANCEL \ IDCANCEL +2 ExecShell "" "${WUR_WEBSITE}" SetErrorLevel ${ERROR_OLD_WIN_VERSION} Quit ${EndIf} !endif ${If} ${IsHelp} MessageBox MB_USERICON "$(MsgBoxUsage)" Quit ${EndIf} ClearErrors LegacyUpdateNSIS::InitLog ${If} ${Errors} MessageBox MB_USERICON "$(MsgBoxPluginFailed)" /SD IDOK SetErrorLevel 1 Quit ${EndIf} LegacyUpdateNSIS::IsAdmin Pop $0 ${If} $0 == 0 ${VerbosePrint} "Not an admin" MessageBox MB_USERICON "$(MsgBoxElevationRequired)" /SD IDOK SetErrorLevel ${ERROR_ELEVATION_REQUIRED} Quit ${EndIf} Call CheckSetupMutex ${If} ${IsRunOnce} ${OrIf} ${IsPostInstall} ${VerbosePrint} "RunOnce logon" Call OnRunOnceLogon ${ElseIfNot} ${AtLeastWin10} GetWinVer $0 Build ReadRegDword $1 HKLM "${REGPATH_CONTROL_WINDOWS}" "CSDVersion" IntOp $1 $1 & 0xFF ${If} $1 != 0 ${VerbosePrint} "Unexpected service pack: $1" StrCpy $1 1 ${EndIf} !if ${NT4} == 1 ${If} $0 != ${WINVER_BUILD_NT4} !else ${If} $0 != ${WINVER_BUILD_2000} ${AndIf} $0 != ${WINVER_BUILD_XP2002} ${AndIf} $0 != ${WINVER_BUILD_XP2003} ${AndIf} $0 != ${WINVER_BUILD_VISTA} ${AndIf} $0 != ${WINVER_BUILD_VISTA_SP1} ${AndIf} $0 != ${WINVER_BUILD_VISTA_SP2} ${AndIf} $0 != ${WINVER_BUILD_VISTA_ESU} ${AndIf} $0 != ${WINVER_BUILD_7} ${AndIf} $0 != ${WINVER_BUILD_7_SP1} ${AndIf} $0 != ${WINVER_BUILD_8} ${AndIf} $0 != ${WINVER_BUILD_8.1} !endif ${VerbosePrint} "Unexpected build: $0" StrCpy $1 1 ${EndIf} ${If} $1 == 1 MessageBox MB_USERICON|MB_OKCANCEL "$(MsgBoxBetaOS)" /SD IDOK \ IDOK +3 SetErrorLevel 1 Quit ${EndIf} !if ${NT4} == 0 ; Detect One-Core-API ReadRegDword $0 HKLM "${REGPATH_HOTFIX}\OCAB" "Installed" ${If} $0 == 1 ${VerbosePrint} "One-Core-API detected" MessageBox MB_USERICON|MB_OKCANCEL "$(MsgBoxOneCoreAPI)" /SD IDOK \ IDOK +3 SetErrorLevel 1 Quit ${EndIf} !endif ${EndIf} !if ${NT4} == 0 ; Detect NNN4NT5 ReadEnvStr $0 "_COMPAT_VER_NNN" ${If} $0 != "" ${VerbosePrint} "NNN4NT5 detected" MessageBox MB_USERICON "$(MsgBoxNNN4NT5)" /SD IDOK SetErrorLevel 1 Quit ${EndIf} ; Check for compatibility mode (GetVersionEx() and RtlGetNtVersionNumbers() disagreeing) GetWinVer $0 Major GetWinVer $1 Minor GetWinVer $2 Build System::Call '${RtlGetNtVersionNumbers}(.r3, .r4, .r5)' IntOp $5 $5 & 0xFFFF ; Windows 2000 lacks RtlGetNtVersionNumbers(), but there is no compatibility mode anyway. ${If} "$3.$4.$5" != "0.0.0" ${AndIf} "$0.$1.$2" != "$3.$4.$5" ${VerbosePrint} "Compatibility mode detected. Fake: $0.$1.$2, Actual: $3.$4.$5" MessageBox MB_USERICON "$(MsgBoxCompatMode)" /SD IDOK SetErrorLevel 1 Quit ${EndIf} !endif ; Check for a service pack or hotfix install in progress StrCpy $1 0 System::Call '${OpenMutex}(${SYNCHRONIZE}, 0, "Global\ServicePackOrHotfix") .r0' ${If} $0 != 0 System::Call '${CloseHandle}($0)' StrCpy $1 1 ${Else} ; This mutex string is also used by Vista SP2 and 7 SP1, and yes, it has a typo System::Call '${OpenMutex}(${SYNCHRONIZE}, 0, "Global\Microsoft® Windows® Vista Sevice Pack 1 Installer") .r0' ${If} $0 != 0 System::Call '${CloseHandle}($0)' StrCpy $1 1 ${EndIf} ${EndIf} ${If} $1 == 1 ${VerbosePrint} "Found a service pack or hotfix installer running" MessageBox MB_USERICON "$(MsgBoxInstallInProgress)" /SD IDOK SetErrorLevel 1 Quit ${EndIf} ; Check for Terminal Services execute mode ${If} ${IsServerOS} ${AndIf} ${IsTerminalServer} ReadRegDword $0 HKLM "${REGPATH_CONTROL_TERMSRV}" "TSAppCompat" System::Call '${TermsrvAppInstallMode}() .r1' ${If} $0 == 1 ${AndIf} $1 == 0 ${IfNot} ${IsRunOnce} ${AndIfNot} ${IsPostInstall} ${VerbosePrint} "Terminal Server execute mode detected" MessageBox MB_USERICON|MB_OKCANCEL "$(MsgBoxTermsrvAppInstallMode)" /SD IDOK \ IDOK +3 SetErrorLevel 1 Quit ${EndIf} ${VerbosePrint} "Setting Terminal Server install mode" StrCpy $TermsrvUserModeChanged 1 System::Call '${SetTermsrvAppInstallMode}(1)' ${EndIf} ${EndIf} FunctionEnd Function RevertTermsrvUserMode ${If} $TermsrvUserModeChanged == 1 ${VerbosePrint} "Reverting Terminal Server install mode" System::Call '${SetTermsrvAppInstallMode}(0)' ${EndIf} FunctionEnd !macro InhibitSleep state !if ${state} == 1 System::Call '${SetThreadExecutionState}(${ES_CONTINUOUS}|${ES_SYSTEM_REQUIRED})' !else System::Call '${SetThreadExecutionState}(${ES_CONTINUOUS})' !endif !macroend !macro -DeleteWithErrorHandling file ClearErrors Delete "${file}" IfErrors 0 +4 StrCpy $0 "${file}" MessageBox MB_USERICON|MB_RETRYCANCEL "$(MsgBoxCopyFailed)" /SD IDCANCEL \ IDRETRY -4 Abort !macroend !define DeleteWithErrorHandling `!insertmacro -DeleteWithErrorHandling` !macro -WriteRegWithBackup type root subkey name value ClearErrors ReadReg${type} $0 ${root} "${subkey}" "${name}" ${IfNot} ${Errors} WriteReg${type} ${root} "${subkey}" "${name}_LegacyUpdateBackup" $0 ${EndIf} WriteReg${type} ${root} "${subkey}" "${name}" `${value}` !macroend !macro -DeleteRegWithBackup type root subkey name fallback ClearErrors ReadReg${type} $0 ${root} "${subkey}" "${name}_LegacyUpdateBackup" ${If} ${Errors} !if "${fallback}" == "-" DeleteRegValue ${root} "${subkey}" "${name}" !else WriteReg${type} ${root} "${subkey}" "${name}" `${fallback}` !endif ${Else} WriteReg${type} ${root} "${subkey}" "${name}" $0 DeleteRegValue ${root} "${subkey}" "${name}_LegacyUpdateBackup" ${EndIf} !macroend !define WriteRegWithBackup `!insertmacro -WriteRegWithBackup` !define DeleteRegWithBackup `!insertmacro -DeleteRegWithBackup` Function SetLastOSVersion System::Call '${GetVersion}() .r0' WriteRegDWORD HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "LastOSVersion" "$0" FunctionEnd ================================================ FILE: setup/Constants.nsh ================================================ ; Product !define NAME "Legacy Update" !define DOMAIN "legacyupdate.net" ; NSIS target !ifdef NSIS_UNICODE !define NSIS_CHARSET "unicode" !else !define NSIS_CHARSET "ansi" !endif !define NSIS_TARGET "${NSIS_CPU}-${NSIS_CHARSET}" ; Version !if ${NT4} == 1 !define DLLVersion_1 1 !define DLLVersion_2 11 !define DLLVersion_3 1 !define DLLVersion_4 0 !else !getdllversion "..\LegacyUpdate\obj\LegacyUpdate32.dll" DLLVersion_ !endif !define LONGVERSION "${DLLVersion_1}.${DLLVersion_2}.${DLLVersion_3}.${DLLVersion_4}" !define VERSION "${LONGVERSION}" !if ${DLLVersion_4} == 0 !define /redef VERSION "${DLLVersion_1}.${DLLVersion_2}.${DLLVersion_3}" !endif !if ${DLLVersion_3}.${DLLVersion_4} == 0.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://legacyupdate.net/v6" !define WSUS_SERVER_HTTPS "https://legacyupdate.net/v6" !define WUR_WEBSITE "http://windowsupdaterestored.com/" !define TRUSTEDR "http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en" ; Control Panel entry !define CPL_GUID "{FFBE8D44-E9CF-4DD8-9FD6-976802C94D9C}" !define CPL_APPNAME "LegacyUpdate" ; IE elevation policy !define ELEVATIONPOLICY_GUID "{3D800943-0434-49F2-89A1-472A259AD982}" ; Legacy Update keys !define REGPATH_LEGACYUPDATE_SETUP "Software\Hashbang Productions\Legacy Update\Setup" !define REGPATH_UNINSTSUBKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${NAME}" ; Control Panel entry !define REGPATH_CPLNAMESPACE "Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\${CPL_GUID}" !define REGPATH_HKCR_CPLCLSID "CLSID\${CPL_GUID}" ; System !define REGPATH_HARDWARE_SYSTEM "Hardware\Description\System" !define REGPATH_CONTROL "System\CurrentControlSet\Control" !define REGPATH_CONTROL_HAL "${REGPATH_CONTROL}\HAL" !define REGPATH_CONTROL_LANGUAGE "${REGPATH_CONTROL}\Nls\Language" !define REGPATH_CONTROL_TERMSRV "${REGPATH_CONTROL}\Terminal Server" !define REGPATH_CONTROL_WINDOWS "${REGPATH_CONTROL}\Windows" ; XP WPA !define REGPATH_WPA "System\WPA" !define REGPATH_POSREADY "${REGPATH_WPA}\POSReady" ; RunOnce !define REGPATH_SETUP "System\Setup" !define REGPATH_SETUP_STATUS "${REGPATH_SETUP}\Status" !define REGPATH_RUNONCE "Software\Microsoft\Windows\CurrentVersion\RunOnce" !define REGPATH_POLICIES_SYSTEM "Software\Microsoft\Windows\CurrentVersion\Policies\System" !define REGPATH_SECURITYCENTER "Software\Microsoft\Security Center" ; Windows Update keys !define REGPATH_WU "Software\Microsoft\Windows\CurrentVersion\WindowsUpdate" !define REGPATH_WU_SERVICES "${REGPATH_WU}\Services" ; Windows Update policies !define REGPATH_WUPOLICY "Software\Policies\Microsoft\Windows\WindowsUpdate" !define REGPATH_WUAUPOLICY "${REGPATH_WUPOLICY}\AU" ; CBS keys !define REGPATH_CBS "Software\Microsoft\Windows\CurrentVersion\Component Based Servicing" !define REGPATH_CBS_REBOOTPENDING "${REGPATH_CBS}\RebootPending" !define REGPATH_CBS_PACKAGESPENDING "${REGPATH_CBS}\PackagesPending" !define REGPATH_CBS_REBOOTINPROGRESS "${REGPATH_CBS}\RebootInProgress" ; IE zone keys !define REGPATH_INETSETTINGS "Software\Microsoft\Windows\CurrentVersion\Internet Settings" !define REGPATH_INETSETTINGS_WINHTTP "${REGPATH_INETSETTINGS}\WinHttp" !define REGPATH_ZONEDOMAINS "${REGPATH_INETSETTINGS}\ZoneMap\Domains" !define REGPATH_ZONEESCDOMAINS "${REGPATH_INETSETTINGS}\ZoneMap\EscDomains" ; IE elevation policy keys !define REGPATH_ELEVATIONPOLICY "Software\Microsoft\Internet Explorer\Low Rights\ElevationPolicy" ; SChannel protocol keys !define REGPATH_SCHANNEL_PROTOCOLS "System\CurrentControlSet\Control\SecurityProviders\SChannel\Protocols" !define REGPATH_DOTNET "Software\Microsoft\.NETFramework" !define REGPATH_DOTNET_V2 "${REGPATH_DOTNET}\v2.0.50727" !define REGPATH_DOTNET_V4 "${REGPATH_DOTNET}\v4.0.30319" ; Roots update keys !define ROOTSUPDATE_GUID "{EF289A85-8E57-408d-BE47-73B55609861A}" !define REGPATH_COMPONENTS "Software\Microsoft\Active Setup\Installed Components" ; Hotfix keys !define REGPATH_HOTFIX "Software\Microsoft\Windows NT\CurrentVersion\HotFix" ================================================ FILE: setup/Download2KXP.nsh ================================================ !insertmacro NeedsSPHandler "W2KSP4" "Win2000" 3 !insertmacro NeedsSPHandler "XPSP1a" "WinXP2002" 0 !insertmacro NeedsSPHandler "XPSP2" "WinXP2002" 1 !insertmacro NeedsSPHandler "XPSP3" "WinXP2002" 2 !insertmacro NeedsSPHandler "XPESP3" "WinXP2002" 2 !insertmacro NeedsSPHandler "2003SP2" "WinXP2003" 1 !insertmacro NeedsFileVersionHandler "W2KUR1" "$WINDIR\system32\kernel32.dll" "5.00.2195.7006" !insertmacro PatchHandler "W2KSP4" "Windows 2000 $(SP) 4" ${PATCH_FLAGS_SHORT} "" !insertmacro PatchHandler "W2KUR1" "$(SectionW2KUR1)" ${PATCH_FLAGS_LONG} "" !insertmacro PatchHandler "XPSP1a" "Windows XP $(SP) 1a" ${PATCH_FLAGS_SHORT} "" !insertmacro PatchHandler "XPSP2" "Windows XP $(SP) 2" ${PATCH_FLAGS_LONG} "" !insertmacro PatchHandler "XPSP3" "Windows XP $(SP) 3" ${PATCH_FLAGS_LONG} "" !insertmacro PatchHandler "2003SP2" "Windows XP $(P64)/$(SRV) 2003 $(SP) 2" ${PATCH_FLAGS_LONG} "" !insertmacro PatchHandler "XPESP3" "Windows XP $(EMB) $(SP) 3" ${PATCH_FLAGS_LONG} "" Function FixW2KUR1 ; Fix idling on multi-CPU systems when Update Rollup 1 is installed WriteRegDWORD HKLM "${REGPATH_CONTROL_HAL}" "14140000FFFFFFFF" 0x10 FunctionEnd ================================================ FILE: setup/DownloadIE.nsh ================================================ !insertmacro NeedsFileVersionHandler "IE6" "$WINDIR\system32\mshtml.dll" "6.0.2600.0" !macro DownloadIE ver title ${If} ${NeedsPatch} IE${ver} StrCpy $Patch.Key "IE${ver}" StrCpy $Patch.File "ie${ver}setup.cab" StrCpy $Patch.Title "${title} $(Setup)" Call -PatchHandler ${IfNot} ${FileExists} "$PLUGINSDIR\IE${ver}\ie${ver}setup.exe" !insertmacro ExtractCab '${title} $(Setup)' "$Patch.File" "$PLUGINSDIR\IE${ver}" ${DetailPrint} "$(Downloading)${title}..." !insertmacro ExecWithErrorHandling '${title}' '"$PLUGINSDIR\IE${ver}\ie${ver}setup.exe" /c:"ie${ver}wzd.exe /q /d /s:""#e"""' ${EndIf} ${EndIf} !macroend !macro InstallIE ver title ${If} ${NeedsPatch} IE${ver} Call DownloadIE${ver} ${DetailPrint} "$(Installing)${title}..." StrCpy $RunOnce.UseFallback 1 !insertmacro ExecWithErrorHandling '${title}' '"$PLUGINSDIR\IE${ver}\ie${ver}setup.exe" /c:"ie${ver}wzd.exe /q /r:n /s:""#e"""' RMDir /r /REBOOTOK "$WINDIR\Windows Update Setup Files" ${EndIf} !macroend Function DownloadIE6 !insertmacro DownloadIE 6 "$(IE) 6 $(SP) 1" FunctionEnd Function InstallIE6 !insertmacro InstallIE 6 "$(IE) 6 $(SP) 1" FunctionEnd ================================================ FILE: setup/DownloadNT4.nsh ================================================ !macro TODO thing Function Install${thing} DetailPrint "TODO: ${thing}" FunctionEnd !macroend !include "NT4USB.nsh" !insertmacro NeedsSPHandler "NT4SP6a" "WinNT4" 6 Function NeedsNT4SP6a-clt ${If} ${IsTerminalServer} Push 0 ${Else} Call NeedsNT4SP6a ${EndIf} FunctionEnd Function NeedsNT4SP6a-wts ${If} ${IsTerminalServer} Call NeedsNT4SP6a ${Else} Push 0 ${EndIf} FunctionEnd !insertmacro PatchHandler "NT4SP6a-clt" "Windows NT 4.0 $(SP) 6a" ${PATCH_FLAGS_NT4} "" !insertmacro PatchHandler "NT4SP6a-wts" "Windows NT 4.0 $(WTS) $(SP) 6a" ${PATCH_FLAGS_NT4} "" Function InstallNT4SP6a ${If} ${NeedsPatch} NT4SP6a DetailPrint "$(Installing)Windows NT 4.0 $(SP) 6a..." ${If} ${IsTerminalServer} Call InstallNT4SP6a-wts ${Else} Call InstallNT4SP6a-clt ${EndIf} ${EndIf} FunctionEnd !insertmacro TODO "NT4Rollup" ; Workstation/Server !insertmacro TODO "KB243649" !insertmacro TODO "KB304158" !insertmacro TODO "KB314147" !insertmacro TODO "KB318138" !insertmacro TODO "KB320206" !insertmacro TODO "KB326830" !insertmacro TODO "KB329115" !insertmacro TODO "KB810833" !insertmacro TODO "KB815021" !insertmacro TODO "KB817606" !insertmacro TODO "KB819696" ; Server-only !insertmacro TODO "KB823182" !insertmacro TODO "KB823803" !insertmacro TODO "KB824105" !insertmacro TODO "KB824141" !insertmacro TODO "KB824146" !insertmacro TODO "KB825119" !insertmacro TODO "KB828035" !insertmacro TODO "KB828741" !insertmacro TODO "NT4KB835732" !insertmacro TODO "KB839645" !insertmacro TODO "KB841533" !insertmacro TODO "KB841872" !insertmacro TODO "KB870763" !insertmacro TODO "KB873339" !insertmacro TODO "KB873350" !insertmacro TODO "KB885249" !insertmacro TODO "KB885834" !insertmacro TODO "KB885835" !insertmacro TODO "KB885836" !insertmacro TODO "KB891711" ; Runtimes !insertmacro NeedsFileVersionHandler "MSI" "$WINDIR\system32\msiexec.exe" "3.1.4000.2435" Function InstallMSI ${If} ${NeedsPatch} MSI ${DetailPrint} "$(Installing)$(MSI)..." File "patches\redist\instmsiw.exe" !insertmacro ExecWithErrorHandling '$(MSI)' '"$PLUGINSDIR\instmsiw.exe" /c:"msiinst.exe /delayrebootq"' ${EndIf} FunctionEnd !insertmacro TODO "NT4VCRT" !insertmacro TODO "NT4VB6" !insertmacro TODO "NT4MFCOLE" !insertmacro TODO "NT4WMP64" !insertmacro TODO "NT4DX5" ; Cleanup Function CleanUpSPUninstall DetailPrint "TODO: CleanUpSPUninstall" FunctionEnd ================================================ FILE: setup/DownloadVista78.nsh ================================================ Function NeedsPackage Pop $0 ClearErrors FindFirst $R0 $R1 "$WINDIR\servicing\Packages\$0~31bf3856ad364e35~*" FindClose $R0 ${If} ${Errors} Push 1 ${Else} Push 0 ${EndIf} FunctionEnd !macro SPHandler kbid pkg title Function Needs${kbid} !if "${kbid}" == "VistaSP1" ; Special case: Server 2008 is already SP1, but doesn't have a VistaSP1 package we can detect. ${If} ${IsServerOS} Push 0 Return ${EndIf} !endif Push ${pkg} Call NeedsPackage FunctionEnd Function Download${kbid} StrCpy $Patch.Key "${kbid}" StrCpy $Patch.File "${kbid}.exe" StrCpy $Patch.Title "${title}" ${If} ${NeedsPatch} ${kbid} Call -PatchHandler ${EndIf} FunctionEnd Function Install${kbid} ${If} ${NeedsPatch} ${kbid} Call Download${kbid} !insertmacro InstallSP "${title}" "${kbid}.exe" ${EndIf} FunctionEnd !macroend !macro MSUHandler kbid title Function Needs${kbid} Push Package_for_${kbid} Call NeedsPackage FunctionEnd Function Download${kbid} ${If} ${NeedsPatch} ${kbid} Call GetArch Pop $0 ReadINIStr $1 $PLUGINSDIR\Patches.ini "${kbid}" $0 ReadINIStr $2 $PLUGINSDIR\Patches.ini "${kbid}" Prefix ReadINIStr $3 $PLUGINSDIR\Patches.ini "${kbid}" "$0-sha256" !insertmacro DownloadMSU "${kbid}" "${title}" "$2$1" "$3" ${EndIf} FunctionEnd Function Install${kbid} ${If} ${NeedsPatch} ${kbid} Call Download${kbid} !insertmacro InstallMSU "${kbid}" "${title}" ${EndIf} FunctionEnd !macroend ; Service Packs !insertmacro SPHandler "VistaSP1" "VistaSP1-KB936330" "Windows Vista $(SP) 1" !insertmacro SPHandler "VistaSP2" "VistaSP2-KB948465" "Windows Vista $(SP) 2" !insertmacro SPHandler "Win7SP1" "Windows7SP1-KB976933" "Windows 7 $(SP) 1" ; Windows Vista post-SP2 update combination that fixes WU indefinitely checking for updates !insertmacro MSUHandler "KB3205638" "$(SecUpd) for Windows Vista" !insertmacro MSUHandler "KB4012583" "$(SecUpd) for Windows Vista" !insertmacro MSUHandler "KB4015195" "$(SecUpd) for Windows Vista" !insertmacro MSUHandler "KB4015380" "$(SecUpd) for Windows Vista" ; Internet Explorer 9 for Windows Vista !insertmacro MSUHandler "KB971512" "$(Update) for Windows Vista" !insertmacro MSUHandler "KB2117917" "$(PUS) for Windows Vista" !insertmacro NeedsFileVersionHandler "IE9" "$WINDIR\system32\mshtml.dll" "9.0.8112.16421" !insertmacro PatchHandler "IE9" "$(IE) 9 for Windows Vista" ${PATCH_FLAGS_OTHER} "/passive /norestart /update-no /closeprograms" ; Windows Vista Servicing Stack Update !insertmacro MSUHandler "KB4493730" "2019-04 $(SSU) for Windows $(SRV) 2008" ; Hyper-V Update for Windows Server 2008 !insertmacro MSUHandler "KB950050" "Hyper-V $(Update) for Windows $(SRV) 2008" ; Only check/apply KB950050 if the Hyper-V role is present on 2008 SP1 ; This update is integrated in SP2 Function NeedsHyperV2008Update ${If} ${IsWinVista} ${AndIf} ${IsServerOS} ${AndIf} ${AtMostServicePack} 1 ; Get version of Hyper-V boot driver. ${GetFileVersion} "$WINDIR\system32\drivers\hvboot.sys" $0 ${VersionCompare} $0 "6.0.6001.18016" $1 ${If} $1 == 2 ; Less than Push 1 ${Else} Push 0 ${EndIf} ${Else} Push 0 ${EndIf} FunctionEnd ; Windows 7 Convenience Rollup Update !insertmacro MSUHandler "KB3020369" "2015-04 $(SSU) for Windows 7" !insertmacro MSUHandler "KB3125574" "$(CRU) for Windows 7" ; Windows 7 Servicing Stack Update !insertmacro MSUHandler "KB3138612" "2016-03 $(SSU) for Windows 7" !insertmacro MSUHandler "KB4474419" "$(SHA2) for Windows 7" !insertmacro MSUHandler "KB4490628" "2019-03 $(SSU) for Windows 7" ; Windows Home Server 2011 Update Rollup 4 !insertmacro MSUHandler "KB2757011" "$(SectionWHS2011U4)" ; Windows 8 Servicing Stack !insertmacro MSUHandler "KB4598297" "2021-01 $(SSU) for Windows $(SRV) 2012" ; Windows 8.1 Servicing Stack !insertmacro MSUHandler "KB3021910" "2015-04 $(SSU) for Windows 8.1" ; Weird prerequisite to Update 1 that fixes the main KB2919355 update failing to install Function NeedsClearCompressionFlag Call NeedsKB2919355 FunctionEnd !insertmacro PatchHandler "ClearCompressionFlag" "Windows 8.1 $(Update) 1 $(PrepTool)" ${PATCH_FLAGS_OTHER} "" ; Windows 8.1 Update 1 !insertmacro MSUHandler "KB2919355" "Windows 8.1 $(Update) 1" !insertmacro MSUHandler "KB2932046" "Windows 8.1 $(Update) 1" !insertmacro MSUHandler "KB2959977" "Windows 8.1 $(Update) 1" !insertmacro MSUHandler "KB2937592" "Windows 8.1 $(Update) 1" !insertmacro MSUHandler "KB2934018" "Windows 8.1 $(Update) 1" ; Windows 8.1 Update 3 ; TODO ; !insertmacro MSUHandler "KB2934018" "Windows 8.1 $(Update) 3" Function NeedsVistaPostSP2 ${If} ${NeedsPatch} KB3205638 ${OrIf} ${NeedsPatch} KB4012583 ${OrIf} ${NeedsPatch} KB4015195 ${OrIf} ${NeedsPatch} KB4015380 Push 1 ${Else} Push 0 ${EndIf} FunctionEnd Function NeedsVistaESU Call NeedsKB4493730 FunctionEnd Function NeedsWin7CRU ; Not released for Itanium. There are no superseding updates, but we assume the user might have ; already installed the rolled-up updates manually. ${If} ${NeedsPatch} KB2919355 ${AndIf} ${NeedsPatch} Win7PostSP1 ${AndIfNot} ${IsNativeIA64} Push 1 ${Else} Push 0 ${EndIf} FunctionEnd Function NeedsWin7PostSP1 ${If} ${NeedsPatch} KB3138612 ${OrIf} ${NeedsPatch} KB4474419 ${OrIf} ${NeedsPatch} KB4490628 Push 1 ${Else} Push 0 ${EndIf} FunctionEnd Function NeedsWin81Update1 ${If} ${NeedsPatch} KB2919355 ${OrIf} ${NeedsPatch} KB2932046 ${OrIf} ${NeedsPatch} KB2937592 ${OrIf} ${NeedsPatch} KB2934018 Push 1 ${Else} Push 0 ${EndIf} FunctionEnd ; TODO ; Function NeedsWin81Update3 ; Call GetArch ; Pop $0 ; ${If} $0 == "arm" ; ${AndIf} ${NeedsPatch} KB2934018 ; Push 1 ; ${Else} ; Push 0 ; ${EndIf} ; FunctionEnd ================================================ FILE: setup/DownloadWUA.nsh ================================================ Function DetermineWUAVersion ; WUA refuses to install on 2000 Datacenter Server. Maybe we can hack around this in future. ${If} ${IsWin2000} ${AndIf} ${IsDatacenter} StrCpy $0 "" Return ${EndIf} GetWinVer $1 Major GetWinVer $2 Minor GetWinVer $3 ServicePack ; Handle scenarios where the SP will be updated by the time we install WUA. ${If} "$1.$2" == "5.1" ${If} ${SectionIsSelected} ${XPSP3} ${OrIf} ${SectionIsSelected} ${XPESP3} StrCpy $3 "3" ${EndIf} ${ElseIf} "$1.$2" == "5.2" ${If} ${SectionIsSelected} ${2003SP2} StrCpy $3 "2" ${EndIf} ${EndIf} StrCpy $1 "$1.$2.$3" ; 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} $1 == "5.1.3" ${If} ${IsHomeEdition} ${OrIf} ${IsEmbedded} StrCpy $1 "$1-home" ${EndIf} ${EndIf} StrCpy $0 "" ReadINIStr $2 $PLUGINSDIR\Patches.ini WUA $1 ${If} $2 == "" Return ${EndIf} ${GetFileVersion} "$SYSDIR\wuaueng.dll" $1 ${VersionCompare} $1 $2 $3 ${If} $3 == 2 Call GetArch Pop $0 ReadINIStr $3 $PLUGINSDIR\Patches.ini WUA "$2-$0-sha256" ReadINIStr $0 $PLUGINSDIR\Patches.ini WUA "$2-$0" ${If} $0 == "" Return ${EndIf} ReadINIStr $1 $PLUGINSDIR\Patches.ini WUA Prefix StrCpy $0 "$1$0" ${EndIf} FunctionEnd Function NeedsWUA Call DetermineWUAVersion ${If} $0 == "" Push 0 ${Else} Push 1 ${EndIf} FunctionEnd Function DownloadWUA Call DetermineWUAVersion ${If} $0 != "" !insertmacro Download "$(WUA)" "$0" "WindowsUpdateAgent.exe" "$3" 1 ${EndIf} FunctionEnd Function InstallWUA Call DetermineWUAVersion ${If} $0 != "" Call DownloadWUA !insertmacro Install "$(WUA)" "WindowsUpdateAgent.exe" "/quiet /norestart" ${EndIf} FunctionEnd ================================================ FILE: setup/Makefile ================================================ DEBUG ?= 1 SIGN ?= 0 CI ?= 0 MAKENSIS = makensis NSISFLAGS = -DDEBUG=$(DEBUG) -DSIGN=$(SIGN) -DCI=$(CI) FILES = resource.c RCFILES = resource.rc BIN = obj/resource.dll include ../build/shared.mk CFLAGS += -mdll LDFLAGS += -Wl,-e_DllMain all:: internal-all nsisplugin setup activex nt4: internal-all nsisplugin setup-nt4 nsisplugin: ifeq ($(MAKELEVEL),0) +$(MAKE) -C ../nsisplugin endif setup: internal-all nsisplugin $(MAKENSIS) $(NSISFLAGS) -DNT4=0 setup.nsi setup-nt4: internal-all nsisplugin $(MAKENSIS) $(NSISFLAGS) -DNT4=1 setup-nt4.nsi activex: setup ifeq ($(SIGN),1) cp LegacyUpdate-*.exe codebase/setup.exe cd codebase && makecab.exe /f lucontrl.ddf ../build/sign.sh codebase/lucontrl.cab rm codebase/setup.exe codebase/setup.rpt endif clean:: rm -rf obj rm -f LegacyUpdate-*.exe codebase/{lucontrl.cab,setup.exe,setup.rpt} ifeq ($(MAKELEVEL),0) +$(MAKE) -C ../nsisplugin clean endif test: +$(MAKE) sudo.exe LegacyUpdate-*.exe .PHONY: all internal-all nt4 nsisplugin setup setup-nt4 activex clean ================================================ FILE: setup/NT4USB.nsh ================================================ ; TODO: Check whether machine will support the USB stack, via LegacyUpdateNSIS::IsMultiCPU Function InstallNT4USB Call InstallNT4USBStack Call InstallNT4USBHID Call InstallNT4USBEdgeport Call InstallNT4USBMassStorage Call InstallNT4USBImaging SetOutPath "${RUNONCEDIR}" FunctionEnd Function InstallNT4USBStack ${DetailPrint} "$(Installing)Inside Out Networks USB Stack..." ; Files SetOutPath "$PROGRAMFILES\Inside Out Networks\Inside Out Networks' USB Peripheral Drivers" File "patches\nt4\usb\ReadMe.txt" SetOutPath "$WINDIR" File "patches\nt4\usb\ionlicense.txt" SetOutPath "$WINDIR\system32" ; File "patches\nt4\usb\awusbcfg.exe" File "patches\nt4\usb\UsbTray.exe" File "patches\nt4\usb\ionusb.exe" File "patches\nt4\usb\UsbShare.dll" SetOutPath "$WINDIR\system32\drivers" File "patches\nt4\usb\usbd.sys" File "patches\nt4\usb\usbhub.sys" File "patches\nt4\usb\vusbd.sys" ; Startup shortcut CreateShortcut "$SMSTARTUP\USB Status Utility.lnk" "$WINDIR\system32\UsbTray.exe" ; Register services SetOutPath "$PLUGINSDIR" File "patches\nt4\usb\ionsvc.dll" ${DetailPrint} "$(Installing)USBD service..." System::Call 'ionsvc::CreateUSBDSrvc(i 0, i 0, s "$WINDIR\system32\usbd.sys") i .r0' ${If} $0 != 0 SetErrorLevel 1 Abort ${EndIf} ${DetailPrint} "$(Installing)VUSBD service..." System::Call 'ionsvc::CreateVUSBDSrvc(i 0, i 0, s "$WINDIR\system32\usbd.sys") i .r0' ${If} $0 != 0 SetErrorLevel 1 Abort ${EndIf} ${DetailPrint} "$(Installing)USBHUB service..." System::Call 'ionsvc::CreateUSBHUBSrvc(i 0, i 0, s "$WINDIR\system32\usbd.sys") i .r0' ${If} $0 != 0 SetErrorLevel 1 Abort ${EndIf} ${DetailPrint} "$(Installing)IONUSB service..." System::Call 'ionsvc::CreateIONUSBSrvc(i 0, i 0, s "$WINDIR\system32\ionusb.exe") i .r0' ${If} $0 != 0 SetErrorLevel 1 Abort ${EndIf} FunctionEnd ; TODO: The rest of the files ; File "patches\nt4\usb\edgeport.exe" ; File "patches\nt4\usb\edgeser.sys" ; File "patches\nt4\usb\ionflash.exe" ; File "patches\nt4\usb\usbhid.sys" ; File "patches\nt4\usb\usbms.sys" ; File "patches\nt4\usb\UsbMsDll.dll" ; File "patches\nt4\usb\usbprint.sys" ; File "patches\nt4\usb\usbrm.sys" ; File "patches\nt4\usb\vcusbnt4.sys" ; File "patches\nt4\usb\vicam_32.dll" Function InstallNT4USBHID ${DetailPrint} "$(Installing)Inside Out Networks USB HID Driver..." FunctionEnd Function InstallNT4USBMassStorage ${DetailPrint} "$(Installing)Inside Out Networks USB Mass Storage Driver..." FunctionEnd Function InstallNT4USBImaging ${DetailPrint} "$(Installing)Inside Out Networks USB Imaging Driver..." FunctionEnd Function InstallNT4USBEdgeport ${DetailPrint} "$(Installing)Inside Out Networks USB to Serial (Edgeport) Drivers..." SetOutPath "$WINDIR\inf" File "patches\nt4\usb\rp_mdm.inf" FunctionEnd ================================================ FILE: setup/PatchInstall.nsh ================================================ 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 _NeedsPatch _a _b _t _f !insertmacro _LOGICLIB_TEMP Call Needs${_b} Pop $_LOGICLIB_TEMP StrCmp $_LOGICLIB_TEMP 1 `${_t}` `${_f}` !macroend !define NeedsPatch `"" NeedsPatch` Var /GLOBAL Download.ID Function DownloadRequest ; TODO: This is broken on XP for some reason ; Var /GLOBAL Download.UserAgent ; ${If} $Download.UserAgent == "" ; GetWinVer $R8 Major ; GetWinVer $R9 Minor ; StrCpy $Download.UserAgent "Mozilla/4.0 (${NAME} ${VERSION}; Windows NT $R8.$R9)" ; ${EndIf} ; /HEADER "User-Agent: $Download.UserAgent" NSxfer::Request \ /TIMEOUTCONNECT 60000 \ /TIMEOUTRECONNECT 60000 \ /OPTCONNECTTIMEOUT 60000 \ /OPTRECEIVETIMEOUT 60000 \ /OPTSENDTIMEOUT 60000 \ /URL "$R0" \ /LOCAL "$R1" \ /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} \ $R2 \ /END Pop $Download.ID FunctionEnd !macro DownloadRequest url local extra StrCpy $R0 "${url}" StrCpy $R1 "${local}" StrCpy $R2 "${extra}" Call DownloadRequest !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 "$(DownloadStatusSingle)" "$(DownloadStatusMulti)" \ /ABORT "$(^Name)" "$(MsgBoxDownloadAbort)" \ /END NSxfer::Query /ID $Download.ID /ERRORCODE /ERRORTEXT /END FunctionEnd Var /GLOBAL Download.Name Var /GLOBAL Download.URL Var /GLOBAL Download.Filename Var /GLOBAL Download.Hash Var /GLOBAL Download.Verbose Function Download ${If} ${FileExists} "${RUNONCEDIR}\$Download.Filename" StrCpy $0 "${RUNONCEDIR}\$Download.Filename" Return ${EndIf} ${If} ${FileExists} "$EXEDIR\$Download.Filename" CopyFiles /SILENT "$EXEDIR\$Download.Filename" "${RUNONCEDIR}\$Download.Filename" ${Else} ${If} $Download.Verbose == 1 ${OrIf} ${IsVerbose} ${DetailPrint} "$(Downloading)$Download.Name..." ${EndIf} ${If} ${IsVerbose} ${VerbosePrint} "From: $Download.URL" ${VerbosePrint} "To: ${RUNONCEDIR}\$Download.Filename" ${EndIf} !insertmacro DownloadRequest "$Download.URL" "${RUNONCEDIR}\$Download.Filename" "" ${If} $Download.Verbose == 1 ${OrIf} ${IsVerbose} Call DownloadWait ${Else} Call DownloadWaitSilent ${EndIf} Pop $1 Pop $0 ${If} $1 < 200 ${OrIf} $1 >= 300 ${If} $1 == ${ERROR_INTERNET_NAME_NOT_RESOLVED} StrCpy $2 "$Download.Name" MessageBox MB_USERICON "$(MsgBoxDownloadDNSError)" /SD IDOK ${ElseIf} $1 != ${ERROR_INTERNET_OPERATION_CANCELLED} StrCpy $2 "$Download.Name" MessageBox MB_USERICON "$(MsgBoxDownloadFailed)" /SD IDOK ${EndIf} Delete /REBOOTOK "${RUNONCEDIR}\$Download.Filename" SetErrorLevel 1 Abort ${EndIf} ${EndIf} StrCpy $0 "${RUNONCEDIR}\$Download.Filename" ; Verify downloaded file ${If} $Download.Hash != "" ${DetailPrint} "$(Verifying)$Download.Name..." LegacyUpdateNSIS::VerifyFileHash "$0" "$Download.Hash" Pop $R0 Pop $R1 ${If} ${IsVerbose} ${OrIf} $R0 != 1 ${DetailPrint} "Expected: $Download.Hash" ${DetailPrint} "Actual: $R1" ${EndIf} ${If} $R0 != 1 StrCpy $2 "$Download.Name" MessageBox MB_USERICON "$(MsgBoxHashFailed)" /SD IDOK Delete /REBOOTOK "$0" SetErrorLevel 1 Abort ${EndIf} ${EndIf} FunctionEnd !macro Download name url filename hash verbose StrCpy $Download.Name "${name}" StrCpy $Download.URL "${url}" StrCpy $Download.Filename "${filename}" StrCpy $Download.Hash "${hash}" StrCpy $Download.Verbose ${verbose} Call Download !macroend Var /GLOBAL Exec.Command Var /GLOBAL Exec.Patch Var /GLOBAL Exec.Name Function ExecWithErrorHandling ${VerbosePrint} "$(^Exec)$Exec.Command" LegacyUpdateNSIS::ExecToLog `$Exec.Command` Pop $R0 ${VerbosePrint} "$(ExitCode)$R0" ${If} $R0 == ${ERROR_SUCCESS_REBOOT_REQUIRED} ${VerbosePrint} "$(RestartRequired)" SetRebootFlag true ${ElseIf} $R0 == ${ERROR_INSTALL_USEREXIT} SetErrorLevel ${ERROR_INSTALL_USEREXIT} Abort ${ElseIf} $R0 == ${WU_S_ALREADY_INSTALLED} ${DetailPrint} "$(AlreadyInstalled)" ${ElseIf} $R0 == ${WU_E_NOT_APPLICABLE} ${DetailPrint} "$(NotApplicable)" ${ElseIf} $R0 != 0 StrCpy $0 $R0 LegacyUpdateNSIS::MessageForHresult $R0 Pop $1 ${DetailPrint} "$1 ($0)" StrCpy $2 "$Exec.Name" MessageBox MB_USERICON "$(MsgBoxInstallFailed)" /SD IDOK SetErrorLevel $R0 Abort ${EndIf} FunctionEnd !macro ExecWithErrorHandling name command StrCpy $Exec.Command '${command}' StrCpy $Exec.Name '${name}' Call ExecWithErrorHandling !macroend !macro Install name filename args ${DetailPrint} "$(Installing)${name}..." !insertmacro ExecWithErrorHandling '${name}' '"$0" ${args}' !macroend Function GetUpdateLanguage Var /GLOBAL UpdateLanguage ${If} $UpdateLanguage == "" ReadRegStr $UpdateLanguage HKLM "${REGPATH_HARDWARE_SYSTEM}" "Identifier" ${If} $UpdateLanguage == "NEC PC-98" StrCpy $UpdateLanguage "NEC98" ${Else} ReadRegStr $UpdateLanguage HKLM "${REGPATH_CONTROL_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} ${DisableX64FSRedirection} ${GetFileVersion} "${file}" $0 ${EnableX64FSRedirection} ${VersionCompare} $0 ${version} $1 ${If} $1 == 2 ; Less than Push 1 ${Else} Push 0 ${EndIf} FunctionEnd !macroend !if ${NT4} == 1 Var /GLOBAL SPCleanup !endif ; TODO ; Function SkipSPUninstall ; !if ${NT4} == 1 ; Push $SPCleanup ; !else ; Push 0 ; !endif ; FunctionEnd Var /GLOBAL Patch.Key Var /GLOBAL Patch.File Var /GLOBAL Patch.Title Var /GLOBAL Patch.Params !define PATCH_FLAGS_OTHER 0 !define PATCH_FLAGS_NT4 1 !define PATCH_FLAGS_SHORT 2 !define PATCH_FLAGS_LONG 3 !macro -PatchHandlerFlags params cleanup !if ${DEBUG} == 1 ; To make testing go faster StrCpy $Patch.Params "${params} ${cleanup}" !else ; LUNT will add a SkipSPUninstall setting. For now, we ignore the cleanup param. StrCpy $Patch.Params "${params}" !endif !macroend Function -PatchHandler Call GetUpdateLanguage Call GetArch Pop $1 Pop $0 StrCpy $2 "$0-$1" ClearErrors ReadINIStr $0 $PLUGINSDIR\Patches.ini "$Patch.Key" "$2" ${If} ${Errors} ; Language neutral StrCpy $2 "$1" ClearErrors ReadINIStr $0 $PLUGINSDIR\Patches.ini "$Patch.Key" "$2" ${If} ${Errors} StrCpy $0 "$Patch.Title" MessageBox MB_USERICON "$(MsgBoxPatchNotFound)" /SD IDOK SetErrorLevel 1 Abort ${EndIf} ${EndIf} ReadINIStr $1 $PLUGINSDIR\Patches.ini "$Patch.Key" Prefix ReadINIStr $3 $PLUGINSDIR\Patches.ini "$Patch.Key" "$2-sha256" !insertmacro Download "$Patch.Title" "$1$0" "$Patch.File" "$3" 1 FunctionEnd Function InstallPatch !insertmacro ExecWithErrorHandling "$Patch.Title" '"$0" $Patch.Params' FunctionEnd !macro PatchHandler kbid title type params Function Download${kbid} StrCpy $Patch.Key "${kbid}" StrCpy $Patch.File "${kbid}.exe" StrCpy $Patch.Title "${title}" ${If} ${NeedsPatch} ${kbid} Call -PatchHandler ${EndIf} FunctionEnd Function Install${kbid} ${IfNot} ${NeedsPatch} ${kbid} Return ${EndIf} Call Download${kbid} ; TODO: Call SkipSPUninstall !if ${type} == ${PATCH_FLAGS_OTHER} StrCpy $Patch.Params "" !endif !if ${type} == ${PATCH_FLAGS_NT4} !insertmacro -PatchHandlerFlags "-z" "-n -o" !endif !if ${type} == ${PATCH_FLAGS_SHORT} !insertmacro -PatchHandlerFlags "-u -z" "-n -o" !endif !if ${type} == ${PATCH_FLAGS_LONG} !insertmacro -PatchHandlerFlags "/passive /norestart" "/n /o" !endif StrCpy $Patch.Params "$Patch.Params ${params}" Call InstallPatch FunctionEnd !macroend !macro ExtractCab name filename path ${DetailPrint} "$(Extracting)$Exec.Name..." ${IfNot} ${IsVerbose} SetDetailsPrint none ${EndIf} CreateDirectory "$PLUGINSDIR\$Exec.Patch" StrCpy $Exec.Name "${name}" StrCpy $Exec.Command '"$WINDIR\system32\expand.exe" -F:* "${filename}" "${path}"' Call ExecWithErrorHandling ${IfNot} ${IsVerbose} SetDetailsPrint lastused ${EndIf} !macroend !macro InstallSP name filename ; SPInstall.exe /norestart seems to be broken. We let it do a delayed restart, then cancel it. ${DetailPrint} "$(Installing)${name}..." !insertmacro ExecWithErrorHandling '${name}' '"$0" /unattend /nodialog /warnrestart:600' ; If we successfully abort a shutdown, we'll get exit code 0, so we know a reboot is required. LegacyUpdateNSIS::Exec '"$WINDIR\system32\shutdown.exe" /a' Pop $0 ${If} $0 == 0 SetRebootFlag true ${EndIf} !macroend !macro DownloadMSU kbid name url sha256 !insertmacro Download '${name} (${kbid})' '${url}' '${kbid}.msu' '${sha256}' 1 !macroend Function InstallMSU !insertmacro ExtractCab '$Exec.Name' "$0" "$PLUGINSDIR\$Exec.Patch" CreateDirectory "$PLUGINSDIR\$Exec.Patch\Temp" ; Set %ConfigSetRoot% to where the files are stored. Lenovo Windows 7 RTM images have been found to globally set this ; to C:\Windows\ConfigSetRoot, which doesn't exist. When Dism reads the unattend xml, it tries to look for the cab ; there, and fails. System::Call '${SetEnvironmentVariable}("ConfigSetRoot", "$PLUGINSDIR\$Exec.Patch")' ${DetailPrint} "$(Installing)$Exec.Name..." ${DisableX64FSRedirection} FindFirst $0 $1 "$PLUGINSDIR\$Exec.Patch\*.xml" ${Do} ${If} $1 == "" FindClose $R0 ${Break} ${EndIf} ; We prefer Dism, but need to fall back to Pkgmgr for Vista. ${If} ${IsWinVista} StrCpy $Exec.Command '"$WINDIR\system32\pkgmgr.exe" \ /n:"$PLUGINSDIR\$Exec.Patch\$1" \ /s:"$PLUGINSDIR\$Exec.Patch\Temp" \ /quiet /norestart' ${Else} StrCpy $Exec.Command '"$WINDIR\system32\dism.exe" \ /Online \ /Apply-Unattend:"$PLUGINSDIR\$Exec.Patch\$1" \ /ScratchDir:"$PLUGINSDIR\$Exec.Patch\Temp" \ /LogPath:"$TEMP\LegacyUpdate-Dism.log" \ /Quiet /NoRestart' ${EndIf} Call ExecWithErrorHandling FindNext $0 $1 ${Loop} ${EnableX64FSRedirection} FunctionEnd !macro InstallMSU kbid name StrCpy $Exec.Patch '${kbid}' StrCpy $Exec.Name '${name} (${kbid})' Call InstallMSU !macroend ================================================ FILE: setup/Patches.ini ================================================ [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] Prefix=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ ARA-x86=w2ksp4_ar_d2a46163d29f14829f230729e2c0821.exe ARA-x86-sha256=61de2d20706d80de285fc241a4d82fe2d7849926b3f0f1b483b2065dbaf816f2 CHH-x86=w2ksp4_hk_89b5425007c388c1c146756557915ab.exe CHH-x86-sha256=51df3e5cac2803d940af803cbd4aee523390646898f3f8af933a3b188db85b0e CHS-x86=w2ksp4_cn_a6d8fab4fe598cf1d5c3cf257b11fc8.exe CHS-x86-sha256=57550fe61f5ea1d151216ad7bc5f6267edc63887b28a93318b3e60a04071eb95 CHT-x86=w2ksp4_tw_baf16f1aaae8be095127f4a46dded69.exe CHT-x86-sha256=a4cdaa96289d9243050aba1ee69c304daf05dbcb1a52a4a523437ed565fedac7 CSY-x86=w2ksp4_cs_d055279f80e684debdac3f4a230ab2c.exe CSY-x86-sha256=f72a915d72160c413e6c52442bd90a097d7f09a0740a5054c7a771f146a769ee DAN-x86=w2ksp4_da_e9afc8657e31b34730ea2cda85ece36.exe DAN-x86-sha256=a91211b82257a457cb5993c704409ba6f74d1dad0bfcc552824a228ff7539dc6 DEU-x86=w2ksp4_de_00d4912b4703c77c46cf53a8a8f2027.exe DEU-x86-sha256=b0648871eaf9025dfe263d4cd1a8afcc7c279d5663c8044e9c5d7d39261a40c7 ELL-x86=w2ksp4_el_55eeec8b3b303e61cb0ddab4d943cd1.exe ELL-x86-sha256=01f9394865b8f67da536ff2ea326290107bcf61fc4e73c6d522000782e8cec16 ENU-x86=w2ksp4_en_7f12d2da3d7c5b6a62ec4fde9a4b1e6.exe ENU-x86-sha256=167bb78d4adc957cc39fb4902517e1f32b1e62092353be5f8fb9ee647642de7e ESN-x86=w2ksp4_es_51bae94c83adcf9f0ad3155bcf3ddfc.exe ESN-x86-sha256=aa96ffdfbe5a3c19cc4f0c93b1bfaadaefe49ac108492407a4be26ca0bbee25d FIN-x86=w2ksp4_fi_794e2bba5a5286287dccf7943055e46.exe FIN-x86-sha256=3905fd7abb14b57e9eb2e302ccf61b8fd19f54522a0eb88e533c9f56bdec354f FRA-x86=w2ksp4_fr_4556797dfc88fdd4be13d638bcfb655.exe FRA-x86-sha256=ec9c1ad3c90076d420f1f5424e328cdb5f7c689226544b0587d24ab1f1664a3f HEB-x86=w2ksp4_he_b8e8519d7ae067f49ce742b59e8bcce.exe HEB-x86-sha256=6be441290aaea01232fb9a27c6f73f3324f5bfc03b9676a8cbade7873fe1cfd8 HUN-x86=w2ksp4_hu_1de3d254582472c714af315c85bf2b3.exe HUN-x86-sha256=3e4436b8cfcc92da30ef19c260e54db6920d17e389a1bbf27ecb777427449a45 ITA-x86=w2ksp4_it_6395c3848397fa6cf05e0c3d1923205.exe ITA-x86-sha256=4fcaefd8de48c335e399980f892fc362d6e52a572e4eac4a24cf9ef009820778 JPN-x86=w2ksp4_ja_beb10c6f96ac4bb93f6e192b419a50f.exe JPN-x86-sha256=4cb8034dd6af83285d36d5b754b87bbfc3986ad1f7566909ef5580dec90c77b0 KOR-x86=w2ksp4_ko_8bd7a0eedfaf1fb30439abdad43c347.exe KOR-x86-sha256=1ded8137c7c7beab2b54d4fe42f856ce865551157d31d926dab3d19aa31401b9 NLD-x86=w2ksp4_nl_07596ad911493b966a18b6626e4a1c4.exe NLD-x86-sha256=538d93c8e511f5c2d5ff9e7099db7b051629429f87ad8830f6680fdd8a60dcad NOR-x86=w2ksp4_no_64602c5f513d7244dd5790c6a11577e.exe NOR-x86-sha256=070a646080f7ffeaefdde1deeeaa0cf4460f53e12dc60c9fe3ca95f282b843d5 PLK-x86=w2ksp4_pl_5248f4f8262d599079f5ee246cafc28.exe PLK-x86-sha256=67a8e6dcb37394942128b4b0adefc357e00af50aa02204bd250d8ae6dc8a632f PTB-x86=w2ksp4_br_a90a49821bf9b5e37810e4c453a5128.exe PTB-x86-sha256=e0e2dc33012cde1ee31d2741548e87f05e6a703b2f408632bdfaa08fdc625870 PTG-x86=w2ksp4_pt_cdf5d5ecd163862ff6f641b0a4d4168.exe PTG-x86-sha256=c9863c55a76d281c42970a98369947d8be9b114b0f413226ac832bf7b77df28b RUS-x86=w2ksp4_ru_980742b1376cf5614a9e10705952dcd.exe RUS-x86-sha256=bb643c5b0eb8ad7acac2c50118fe1559e257292554b8261a258b7a8ca122d499 SVE-x86=w2ksp4_sv_c46814adb550c5184297a290acd9d25.exe SVE-x86-sha256=6d8df02f8505e48d70070450d61d1b8ce868ead8db95f29e7d5cedd56f99091c TRK-x86=w2ksp4_tr_3d5c002a300e271049b18acdc569d83.exe TRK-x86-sha256=ef6440e780bd8b37724d5dacdafb51333f7455e6346998682facd068a4c31a7d NEC98-x86=w2ksp4_ja_7cf59dd6babe7afcf1d7489b40941a8.exe NEC98-x86-sha256=ca03755cd266b885cfc964f7de5370a65c2726f3ff6165b3b11b25fd1f44b3b1 [W2KUR1] Prefix=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ ARA-x86=windows2000-kb891861-v2-x86-ara_73c7fa3d013476d3a2b8ff8569e3bc82f1ad1582.exe ARA-x86-sha256=93b8e14e20a07b3cf781d5ccf2b1850a568f243116ce459cc1cf30bbddcb9ba4 CHH-x86=windows2000-kb891861-v2-x86-cht_4b7c5abb4e313f5cbd5f139ea7094145e2a80b5a.exe CHH-x86-sha256=f76dc699682b8098d0756fa6da3b2b87ac967d8e573e3ef413697be91e51e8cc CHS-x86=windows2000-kb891861-v2-x86-chs_fe99e12ef1944cc43ad2891797ac9a7698e194d9.exe CHS-x86-sha256=2199076d04b3f229600ab5aeddeb64f699422cdcde904f68bb3b2f532f39030d CHT-x86=windows2000-kb891861-v2-x86-cht_4b7c5abb4e313f5cbd5f139ea7094145e2a80b5a.exe CHT-x86-sha256=f76dc699682b8098d0756fa6da3b2b87ac967d8e573e3ef413697be91e51e8cc CSY-x86=windows2000-kb891861-v2-x86-csy_a18b67cb73d57b03d9ae276097e33ae870acc77d.exe CSY-x86-sha256=026ce759801ee991f88672effc2185323ea75aee6857beb0e5618d580496d16c DAN-x86=windows2000-kb891861-v2-x86-dan_0b5521ef897e7859fefd1ceace978ba06a67caf6.exe DAN-x86-sha256=8bd53e11a8969431d53dea44ebebd4b49ec33ea21cb406009662e9f0154ef8aa DEU-x86=windows2000-kb891861-v2-x86-deu_e2c13be516127d3b1de17a60b9fadfb11862b86b.exe DEU-x86-sha256=dca1493c8fab3ef59a5650534991eb1d7375e06a6cc321e21955243058e9d05f ELL-x86=windows2000-kb891861-v2-x86-ell_e04a73c2761a323c0b266f766c5cc3e6f9389b76.exe ELL-x86-sha256=3694af2b5e8f87a0e12c27add4286cf21c352c9463084f780329ad42d01ec243 ENU-x86=windows2000-kb891861-v2-x86-enu_f118bd276f4211929719961a2e929b620c1a2234.exe ENU-x86-sha256=55e09d2a5a8390338a7bc1321844f1c3e716898245d5f843c8554a16dbd097c9 ESN-x86=windows2000-kb891861-v2-x86-esn_b9f1a26cc909adca730ed20344cf712480c9877e.exe ESN-x86-sha256=b6bc21196326433b8791481c23f089b07b13556e573d0b16b0f4320e90649d96 FIN-x86=windows2000-kb891861-v2-x86-fin_318d6b6a1ac04e9c9c033d53d7fcd47748e7f75f.exe FIN-x86-sha256=5cc26e029b6b62cb2dcbfc5193dd8f69454a913ed2dc39493db7e7a759b0cd11 FRA-x86=windows2000-kb891861-v2-x86-fra_8d036d92d4895bf23b0e9b714937b5b211b1d592.exe FRA-x86-sha256=fd7c3685cae1b695ce6b723335998990472090c2ecd89394d9a767a1fe21697d HEB-x86=windows2000-kb891861-v2-x86-heb_3f08f4037db77733e5de5e1cb89e5bedebb4d249.exe HEB-x86-sha256=71473829b8f27b9123298e9bb918afd2d8718805c7cacaddfb3c3a21c01413f3 HUN-x86=windows2000-kb891861-v2-x86-hun_d94efec685c682825592e04130ea1b0bf3c4e532.exe HUN-x86-sha256=28ccc4c207d149f2f7fbcafaf44582e746f0e66ad7de74be410d4f312d71f3df ITA-x86=windows2000-kb891861-v2-x86-ita_aaf013cd7a046d6069c0250e8e7f0bf8582c3e31.exe ITA-x86-sha256=65d1246df2f4f3e21203948cfbf4491ded95abe6f8fcae32369ce30cfa8277af JPN-x86=windows2000-kb891861-v2-x86-jpn_d5fa54ab3547a38fae6260e28227a6fb0ed4a827.exe JPN-x86-sha256=e824af4aec05a2ef10481ae83d7d1330bdb2dae596bc99172f4d544e06363795 KOR-x86=windows2000-kb891861-v2-x86-kor_10db79be10624535fb3926781db5a02efb2b5503.exe KOR-x86-sha256=d54987fbadd52df10f93f23a20715d4801171f647349b9754e12365bbb71e9aa NLD-x86=windows2000-kb891861-v2-x86-nld_33cbe9c7dedc85d22f6fc281aefef77b9d26ce6f.exe NLD-x86-sha256=d6743083b1fbc06dc0365874cdeb945790cc492f15c8a878469adb32277c202c NOR-x86=windows2000-kb891861-v2-x86-nor_6dce467272a1cb3375bc74bec901a581d55661e6.exe NOR-x86-sha256=5bbc0261a1844368ecea9d6074a38a67ce2cf3324015bcf135b2a2c5d22be8ed PLK-x86=windows2000-kb891861-v2-x86-plk_1cded665d65ea7614b7b33989efb81a4b91cf674.exe PLK-x86-sha256=93a0a1d8bf77cb13a7b301d2c1203f3eeb568cb904e2ec51e969e4f8809905bc PTB-x86=windows2000-kb891861-v2-x86-ptb_d1a5c2bf1c9393f64748bab275339d09f767a1d9.exe PTB-x86-sha256=9003a81fc261b0b7bb1ad99645ee956f5ce504c2a228c2b887a3e54e8f29e647 PTG-x86=windows2000-kb891861-v2-x86-ptg_ad4fd8ab12ee20236a44cf3e550ee55a3e8019ec.exe PTG-x86-sha256=da071d194b93068a915120ad0b5e02f8977f0f4eb75d967102ff54ce850cf40f RUS-x86=windows2000-kb891861-v2-x86-rus_2d2b365faf8fc71be99122fa89b8eea97ae40abd.exe RUS-x86-sha256=d531f30ac747686856d51eaa2fee1e0373d40f165a8637a75600d7339d33eaa8 SVE-x86=windows2000-kb891861-v2-x86-sve_e694a39661f9a6531c1b9367ed6fc9458ae536fb.exe SVE-x86-sha256=cf8f87e0f938f499f93f2fdc72280ebd1fc45c6a12f51e019cacc146aad9b259 TRK-x86=windows2000-kb891861-v2-x86-trk_31ee7902955f771a63b8bd6165fa41119624ac23.exe TRK-x86-sha256=42590ad2ccebf909bd7cfd34bc6ff03a7dd768cea75a9bc7f1933865e7aea7d4 NEC98-x86=windows2000-kb891861-v2-nec98-jpn_ca1372faeb77c66ded958bd3dc8e3344e1cd4260.exe NEC98-x86-sha256=09cea1fa3d33932eecfb50d3a4ae3fa19d1031d810fa881df87814bc7308ad8a [IE6] Prefix=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ ARA-x86=ie6sp1-wucab-ara_b1720a72becd05142cb4ccbb23205c76b51d29e2.cab ARA-x86-sha256=00d97a076490ba149036947a8b7bdcdf0f3da0c9beeb27964111c96665516805 CHH-x86=ie6sp1-wucab-cht_1899bffb8ebf36c0a58686f04cc1d721c419792d.cab CHH-x86-sha256=e97b1998b6018275d7689a1a40f2a0480bb6977f3bda4f4aa16ee98e2471a511 CHS-x86=ie6sp1-wucab-chs_6d93ab8525d3b6f775faf692caaa4c8267c8a22b.cab CHS-x86-sha256=ebe63b68deed463ce93a5cbf396b23fcb4a34db4e88c55cfdf6e67661db4bc69 CHT-x86=ie6sp1-wucab-cht_1899bffb8ebf36c0a58686f04cc1d721c419792d.cab CHT-x86-sha256=e97b1998b6018275d7689a1a40f2a0480bb6977f3bda4f4aa16ee98e2471a511 CSY-x86=ie6sp1-wucab-csy_2789a030bba2128fc90e0475e2530c300ed5defc.cab CSY-x86-sha256=62b6399918816a72ac05bf3e169f9b206d42e3d9e7c86b35b9a09db05b88eabd DAN-x86=ie6sp1-wucab-dan_0c178b2634a97a4879c172797b21a59e567d18e6.cab DAN-x86-sha256=4a9b5c4afc04f70fa1533191f8f38672ddf4c956d89a8cacc4fdf97b717b9aa3 DEU-x86=ie6sp1-wucab-deu_2a13ac14e403ad4a1c6877fe478067e81ac20da8.cab DEU-x86-sha256=0a5775809900dd72ab8ab6ed9f95c8f2cd05e1de22fd00a2d125cb02371e0ed2 ELL-x86=ie6sp1-wucab-ell_15a4e43c8922f658eddd5d57d23c11e0fa55dce9.cab ELL-x86-sha256=c5ecfd53d031f61ca77decb3651bddeda4460e0d2a3ab99ca0d0d76f3b2e5f64 ENU-x86=ie6sp1-wucab-enu_91192253c8d3cf7beff22e68ae1fdff9638bf546.cab ENU-x86-sha256=57d10f32b9312f8160cc613f61abb10f950e20040a20053bcd91ee436e1fb342 ESN-x86=ie6sp1-wucab-esn_a9c53ad93bae78becf2b06f6d317ef7ef66a2abe.cab ESN-x86-sha256=052e80ae42941a96e0ab11cffbf49ce44cef76c6f14ce2820db176d3c7179b22 FIN-x86=ie6sp1-wucab-fin_1a369fcc86e803128144e17246e16d0a27a8c35b.cab FIN-x86-sha256=ab9773eebce72f1780c2f27f2a3aba83dcfce646c501dba804abd506d7cfdf49 FRA-x86=ie6sp1-wucab-fra_0bc4219b3119a127503cd93863cfedfb1e37bd55.cab FRA-x86-sha256=4b9e4264be2725fd94e601ad9b76f9b628cd9283ace4854ac8ef9363759a0020 HEB-x86=ie6sp1-wucab-heb_70518dd1d09d702975b8e44a22c88e139f168975.cab HEB-x86-sha256=6c6d21364d8b5b0b33374db9cb684a82b39cc30f6ada5d98f112b2e723651284 HUN-x86=ie6sp1-wucab-hun_1eeed3e7b3e6bd311c17c0d97f67ec12df8b4b85.cab HUN-x86-sha256=3ec506555388ea9dd12ca6c07dbd41c1d0a07b11279c3f8a9077cdf14b3b5f6e ITA-x86=ie6sp1-wucab-ita_2c6ab20b41114e53646ebb56ff6d269fd86fba36.cab ITA-x86-sha256=efff03fe5c1ccef643358600014c5204498eb50a735295a298d3d1f3ea7622a4 JPN-x86=ie6sp1-wucab-jpn_b1e1e8b9dbbf440d8964ec375348674502ef0728.cab JPN-x86-sha256=6122c7ad1aa555de13b0a1ac349799bcbecad687b9011acee482ab33192bc0cf KOR-x86=ie6sp1-wucab-kor_f61474b056ae37c5e9670978c6d3b24f4800d7f5.cab KOR-x86-sha256=5696ce7d9a3dfb25110f719d5aa0deef51ba48e7ee1ea43fdd8bec66ac10b70e NLD-x86=ie6sp1-wucab-nld_3fd676fe34f93471f4db9a0a1f3ef5c3ed8e5f43.cab NLD-x86-sha256=904d8d1301835b025bd65e477b5e84302f797dd7c16c3e88ae2e361cb970dd7b NOR-x86=ie6sp1-wucab-nor_72a81d06462c5a66f9531f4f226b13463698dd24.cab NOR-x86-sha256=c4900351cc950a8de85c028849b3291449682cdfdc81392f5b2db73010155492 PLK-x86=ie6sp1-wucab-plk_14889750985a9d29490886c2e901ef3bc69c4ff5.cab PLK-x86-sha256=4154b875fdb879d68804e8c1048d59b7438ddb87f15b445154c1c32282d33892 PTB-x86=ie6sp1-wucab-ptb_448df44aea5d853e4954d48411b1953569df23c2.cab PTB-x86-sha256=cfe4bae54599de1e334a3158e8e249d9200b6be3497d19a52d9bc8c8189c71d0 PTG-x86=ie6sp1-wucab-ptg_5892593c72f702ba6c7d88b47c2bd7c5707081fd.cab PTG-x86-sha256=d6cd7ae8d40d9e8b6c171f3cdfb62148e83838ad8672c26a6d3d0e20e565ccab RUS-x86=ie6sp1-wucab-rus_842c289d0887bbe2e4edea1ff3763addc8d77db5.cab RUS-x86-sha256=f9b4c82b5cc91595d1e4241c414b7ca04c4e0ee4955e9f69b1ad4673c6634577 SVE-x86=ie6sp1-wucab-sve_db8dcfef073f2df327fc3706d9a141b6124cfed0.cab SVE-x86-sha256=5ce56fb70e8cf61c0f0f532406433ed5372c87e3bb1867e3b519e83bb3902938 TRK-x86=ie6sp1-wucab-trk_64479241feb2f783f851b16791d5d1c684d94a66.cab TRK-x86-sha256=f97f243cb541f6f9af013b3e6185c87c818e18810a773daa2d654b7c0a660e20 NEC98-x86=ie6sp1-wucab-jpn_b1e1e8b9dbbf440d8964ec375348674502ef0728.cab NEC98-x86-sha256=6122c7ad1aa555de13b0a1ac349799bcbecad687b9011acee482ab33192bc0cf ; Windows XP 2002 [XPSP1a] Prefix=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ ARA-x86=xpsp1a_e31fa91a89a658f3d586aa1c9992b01af3e11fe0.exe ARA-x86-sha256=d41b76b70a0552b4e418615945d18dce19d454b0f0beb98f19a2d18a2b8c00e4 CHH-x86=xpsp1a_c7c76e11bb0c1bbabefe5d4576851f3.exe CHH-x86-sha256=9597aec1bcada2a50170f40f9b311e6ab194a9b098517d8943524cf93774b7d3 CHS-x86=xpsp1a_8bd1bde300df00e7bd6831ac37cb87e437e2b729.exe CHS-x86-sha256=dd4eb6391214e2d1295fc39aa38b7f374a29c8463de344c651143a6025b254e8 CHT-x86=xpsp1a_98472ed83897ec104c8496fcd661e6f289ef5090.exe CHT-x86-sha256=e2f24bcd9a1f328cd812287b677f75133ab4adf6f4d30d45a3b1700eeef42ecd CSY-x86=xpsp1a_57f0caa259089b1477a162f220d08b1c4bc86010.exe CSY-x86-sha256=ab2bf6c2dd0159dea96495a546fad42a29eee19a42b8af75e2296898fcca4d74 DAN-x86=xpsp1a_619cc6cf6a98f75d18f4d6eddb662ebfe4a44223.exe DAN-x86-sha256=046b465b71464f132e15eb62b99a97aff6ac9264eaa987c7f1c69e141fe20892 DEU-x86=xpsp1a_cb7d182645ea1019741d9d94732c29251294acdc.exe DEU-x86-sha256=2d291429f38b58f0ced45e31e2f9217b0416b961f97a1ebf00deb0e869caebec ELL-x86=xpsp1a_47666b37340d6224eeb40f67ae16da3e457e64e0.exe ELL-x86-sha256=79449a7703689b6e735d869a0c6bcbb7053ed681e8f9dcf58577de951f2d79a9 ENU-x86=xpsp1a_8441053935adbfc760b966e5e413d3415a753213.exe ENU-x86-sha256=265bcb1f9bd3ee01dad3d1271a3d149a468d50413b0fc46e6f42f0f79038899e ESN-x86=xpsp1a_e675d08b12d20ca372ba6d3b502074000981870f.exe ESN-x86-sha256=2ed011aa23a09bcdb7d49280a0f33db018f32c580aef1ee0c3f182a910a0c7ca FIN-x86=xpsp1a_8a254d89daeb22f4f4ccb9b0861e83cb5ea66196.exe FIN-x86-sha256=3d7043ae996f25564a6ddef5c7fc32852b2d83b576f768b8942a687a3a2bb690 FRA-x86=xpsp1a_fe557a68aed45003151f647189767aeb2bed53a9.exe FRA-x86-sha256=22bfb16e30ccea9dc14186173df595ba7d196e1091e5ab480c29780be4586d7a HEB-x86=xpsp1a_499ee7440dba140909fe4d3a86fffd8ec4a1d473.exe HEB-x86-sha256=f6ce365778bf7784cc3cd48875ea3eb16043884212ce4cfdb429ce198e9c55c1 HUN-x86=xpsp1a_9f24000eb4b69aaa975edeb578b4cd22f971318b.exe HUN-x86-sha256=a37f9926429e8db1e70cfdde9cc9aafef2ca052577b02740a991f69bff24b15f ITA-x86=xpsp1a_4f5aa5833bee00c3309fc03d6eafcc6e6f4e2eea.exe ITA-x86-sha256=9f4d467b35777162a02782971e58e3ce82bb951877c68869f36ccd081bffac42 JPN-x86=xpsp1a_a03d9d2ad30a478ca4c2a51c1de26eaca021e4d1.exe JPN-x86-sha256=09671231da2e8e2a711d2efb3e02a903f2520403fbee2022d3d86a9ee8afbcf8 KOR-x86=xpsp1a_e79e224ef297b77c0a23a9440f919c8d64e6554a.exe KOR-x86-sha256=cc2af43b3b59912aaff3d8894f6566e57c3d4ef0826050ef89715786fd0d02ca NLD-x86=xpsp1a_f1a0183ddc01376d27f374b69fa9364647b336b2.exe NLD-x86-sha256=c7cded9cb347ef7230cdb2f31eded2b49e6502c298afb35de0edc9cae4826a6a NOR-x86=xpsp1a_487a5bbfcf9164a0cda2bbe31f9d4aed6c5455a2.exe NOR-x86-sha256=28eba2a1544172959aac062fbb31cd45c030707ccb73e485c4d98a0267a028f6 PLK-x86=xpsp1a_d2a89787c9ac8ed660684686930513663bc723ba.exe PLK-x86-sha256=5f389bf3c8f17c95f35e0dca355038ce387b687d64cf9336c34072b7e9e8567e PTB-x86=xpsp1a_87ec9b54ce8b93f7319b2158cbb0fa1de47d48df.exe PTB-x86-sha256=e16a63d103757161c4ac25dba10c07d50da79601a2321a4c7071ef30c0e57137 PTG-x86=xpsp1a_625bc5ebcc1306c2632c1b1a60a6f8f30f230cb9.exe PTG-x86-sha256=1efaaee387502f2c6398ecc4f2472acd8b6b07544b3051796cb8aa06aec26566 RUS-x86=xpsp1a_b5151f669462b3154faf93d48e10beae1b0339aa.exe RUS-x86-sha256=30b74327cbd07ec74f89ee4a150deac5943e5885737f3a28f7cbfcc2423de824 SVE-x86=xpsp1a_8f11213e01d65c883a95b8871b6134e179e09941.exe SVE-x86-sha256=d7798916c5c6187336fc8ab4e0e4a902d6c493102ada6e5cc60c84b857732207 TRK-x86=xpsp1a_a2bc3da0f0a3d366c78d4c51ea6aabbb2dd0d545.exe TRK-x86-sha256=e06c6e90f4964cc2ec4d4436ab21f273dacdbcc9e8249890e037aba4b9ea2527 [XPSP2] Prefix=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ ARA-x86=xpsp2_a001b2b27b0f748ab89bd28fa45359f28f95ffb6.exe ARA-x86-sha256=e0b06ae32ff73af4d69ed39da405c07b0e04d66a031244e48c5b3414ca781e92 CHH-x86=xpsp2_546c11a0a5a41e90ae5f021f234d9abad5a0a25a.exe CHH-x86-sha256=8b4887a3f5de5017f2e61159fbe1f7b1e48feda6ed605134aa9ffe00c385fbf5 CHS-x86=xpsp2_554ee954bae0f65e88b706cf9b9fd733c02fa397.exe CHS-x86-sha256=5e706191fb7cf002908a974639b4a0243031d55958332969b508503c1bbafde7 CHT-x86=xpsp2_66d8ba2cbf90737010a45e2b5969c9a779ab1d35.exe CHT-x86-sha256=a9160f4017dc0e3a595909dae517675ddc7b35b29499826807b8c127f4e5a36c CSY-x86=xpsp2_767f81c9d0154bfa21d19a49e0b27ede9f93190a.exe CSY-x86-sha256=a2c0a886d946e016e70f809f576366c5b1fd267e30a67da0cabff9d6c1d4f709 DAN-x86=xpsp2_e60a2b567fda2ab2cf4629700cf65cd3f4d46b0d.exe DAN-x86-sha256=4b98e4230b6201bfd699f739691420e719c176abba4f4070525583fe0082e00e DEU-x86=xpsp2_ac8d3101744ff56f74a4de941dc04a7e567c8ba7.exe DEU-x86-sha256=05561c851b83fe3631cc83ef1c793086bacd8ec773e69d73d74907839b0eb760 ELL-x86=xpsp2_fd86a331f91bc16185e88e6706db859cb27264d1.exe ELL-x86-sha256=adfd2d30860e40380e8156a7bf793c229df1698abe6d7d02123e6ff685d65bfe ENU-x86=xpsp2_33a8fef60d48ae1f2c4feea27111af5ceca3c4f6.exe ENU-x86-sha256=8e4c617eb3b8c61f5d8011aa0e692829a5166bd73e9064e5d318f4579dcc8dfa ESN-x86=xpsp2_8e7e8de62676d994a7412df190fcdce848f25cf0.exe ESN-x86-sha256=2e6cf4d610b63b889cfc9aff5730ccf9fbbb4b3d74a6b99dd2eea31343647706 FIN-x86=xpsp2_2feacc1ad5a703d508e9aee4c2fca1e0b9ca9962.exe FIN-x86-sha256=099a7960283c0c43bdee5037e782b8aefa37b9d00a30e47530063307987f217f FRA-x86=xpsp2_da94a031147ebd6f8d02eadb7972801843a533bb.exe FRA-x86-sha256=f6102b86d30e88573fe98e1ecddbf319430a57ab8c507255dc32e8632e341866 HEB-x86=xpsp2_76096ed9f2218ac7a14472cbf435f380ffc1c2f6.exe HEB-x86-sha256=4b8cbbddce12131f404c2fe714fa0d68dd7f086a09fe136651a0ab577c004d6c HUN-x86=xpsp2_bd03a3d2a28de2de9e58da3e5dec888ffae25aca.exe HUN-x86-sha256=686699d2e8b970fa078e4fde690c6f214c112a8590f59eb3e4bbc59c8e35f522 ITA-x86=xpsp2_1334fdd285666bfd821eef8590914f188b1bcc0c.exe ITA-x86-sha256=e68e3d6c2640bc227fffb99ef00d92d08e9f3e4292f6f6d4fc745679ff26dd7f JPN-x86=xpsp2_d36c0a7046f2dbe29dfff33b6dbb6bb4574bbd7d.exe JPN-x86-sha256=08d71b3c17b5654c32266b89c37cc0e7de443bcc790e38bbd0d9857c50f0ddb0 KOR-x86=xpsp2_4a6b32f007fe94a2a8b4542fc6778582ef4245e3.exe KOR-x86-sha256=665731c61e24dcf79df2cc5b38b3bff773f136b89038d612e98f1ca147041201 NLD-x86=xpsp2_64551a535981fbcd9c2bac3f91df30c6b3610725.exe NLD-x86-sha256=cd4680eec0a420884d2bed659d54e01d0603cfda1bf7c98b664301bdd01b3dc9 NOR-x86=xpsp2_ace2994463597f9cb7cb059e1dca2a87c12bf278.exe NOR-x86-sha256=06aa6e675290005a6fdb7d632bba433ab3dae1b0880c56c2eae2b475f5c7142c PLK-x86=xpsp2_8aefc12abade033f2f093786646206fbb70cbb5d.exe PLK-x86-sha256=095a80b203226421787973f7a2700aefe551aec7a00f23bb2c1610d695a8c858 PTB-x86=xpsp2_bcbc1bbb2c493dd0a942d13695b18da0400188f8.exe PTB-x86-sha256=1f1404dd95af19341c1e8dab480d25dccfa5d343836a2d85a6f4366df0b9145e PTG-x86=xpsp2_db1f7c486f0eda249d77ae91c858a162cefb769b.exe PTG-x86-sha256=338309ca7abc25cae6c6ec8ebd33e7e222a8d31c967079f592eb8950a9c05a3f RUS-x86=xpsp2_72946fbe955201f2387430963d4372cda7cac392.exe RUS-x86-sha256=eef47682b0d173df28148c9e8f9baf26fd849dea6247c3c0f44ec246b8dc39fc SVE-x86=xpsp2_3ff578d759e77df91effefe34a42030b8ada1c24.exe SVE-x86-sha256=e1f08d9f4c8f138a0ba3be6cbda4280fdaf5af7823062799672ea82cf4d741bb TRK-x86=xpsp2_68cfeb8fda746b900f9c3ce313d7348c812fd30d.exe TRK-x86-sha256=fdde64bb905ab4fd32df2ad2546881c489f427b5a7aa791d8a8a2f871dae1605 [XPSP3] Prefix=http://download.windowsupdate.com/msdownload/update/software/ ARA-x86=dflt/2008/04/windowsxp-kb936929-sp3-x86-ara_4e82a87cea3b9643fd57b39393a88061614cdae6.exe ARA-x86-sha256=83a9c1f65cc02f0597a283c7a0175ce30468d05f39236e3e5e68c1497894fc9a CHH-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-chh_2663fb610f29e65a10be176740ea6757ca1f22d5.exe CHH-x86-sha256=83c9155ffab220d5b4d56187966d9d2e52466b2c59ad009261e8c1526c22c233 CHS-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-chs_d7067e86abd4257454200d0c398d71c4ce6cd33e.exe CHS-x86-sha256=39eeb121685e1566c655ae821bf6d2be97fdcc8a62ae2249602954b4f7bb5fd9 CHT-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-cht_8a0625e10b8c6cb88d9d1952f1a189fbd761b744.exe CHT-x86-sha256=239396a476cad4d4b50e93b5cf0c7ede84dc88fe345b60e275cb8ae0106b0302 CSY-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-csy_7af606916b887dba9dd38ae282505ce2c2b81b08.exe CSY-x86-sha256=0f2602a19ff6390be2286f2f205ce28c559341d4b8d493ed7d8d503de32506fd DAN-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-dan_37e03a7d43ad65bc4b71f3947c76bd2fc0fe44d6.exe DAN-x86-sha256=2e71b33fa6e9fbe2d3b711d8b11b2ab1d869be6d651d8e50336e814202123187 DEU-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-deu_f2dcd2211384a78df215c696a7fd1a7949dc794b.exe DEU-x86-sha256=10e158040c04c5dd90aedb624ae144c8eff9c6badc5dcfd001e6a61d4e36ca91 ELL-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-ell_cec2ed1c3097e44e62dcb1f2a473a64a58e031fe.exe ELL-x86-sha256=6e28a272ed069140968585d6ec41e38f38cab14ceebb96bed6c6512ba06a1bba ENU-x86=dflt/2008/04/windowsxp-kb936929-sp3-x86-enu_c81472f7eeea2eca421e116cd4c03e2300ebfde4.exe ENU-x86-sha256=62e524a552db9f6fd22d469010ea4d7e28ee06fa615a1c34362129f808916654 ESN-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-esn_e305becfc6fd5a8199368ceffc496397247ac60f.exe ESN-x86-sha256=b18ef3ddc740952d36dd5f880ce3f1c2eb41fdad139eca05ba2c9c31053d84f1 FIN-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-fin_5654c021a03bfb10543a2c673bdfc42a853e347a.exe FIN-x86-sha256=39a27e9796a5375f492384b3e71b5b33b9a381a64ed7ef67af9977aac0719923 FRA-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-fra_414b61bbc86e09579d8447baa23eb1b867f9ca93.exe FRA-x86-sha256=7cc6321e200cc8517fe246723b98af880e863930b547617b44173ded65d19009 HEB-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-heb_eb8fc9ff0890279346661dde065c14b5c696e423.exe HEB-x86-sha256=7e32f7a0c772548268a6e9e0efabf52de8fd8965a7c750f81e53694d5d0b0e1e HUN-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-hun_77b70fe421baeebb115c2f378b8a1fc274db9867.exe HUN-x86-sha256=1233e1d7877bd92f246c20dcb5c1e02855652c709bf9a87c41feecb6ae52caa8 ITA-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-ita_2162c1d419d1e462a7dc34294528b2daf593302c.exe ITA-x86-sha256=99e69d414f2d026b5cc789911fb00184c401010284f91579c5de84c5e3a36202 JPN-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-jpn_e0fc34cfa52d270b3c79a68af8fa358244f7419e.exe JPN-x86-sha256=4d59ff48494eb17ca9db5a577f5811d0753f19fd05e20e6f9d6f652928e9692b KOR-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-kor_8ca7e862bfc2742ad9c4c58df0b0cd5ad4b700ae.exe KOR-x86-sha256=6ed8c3caa648f65184cc6b201ec9fc657e8f587aa5c4db702d6d8882713cf173 NLD-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-nld_b2576b4d1972583a3b776fdf963b914341d34058.exe NLD-x86-sha256=a2c87924ee51ad748273c07ecc001478b7e5df608d246241aa8a41faaf157d88 NOR-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-nor_67c9167275a2c3e3884a38c2ad7387556ad4713a.exe NOR-x86-sha256=5eb734b6dc226d57b6802ef6bfc35404e463d7e4ad34125a7b2d9572e6384d55 PLK-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-plk_7cbe718131e9c71b322f1149e86bedba351ba11c.exe PLK-x86-sha256=ea707282fc6ce7f6c7c58943713958df45e074fdd38b43490dfedc5a2556a3a0 PTB-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-ptb_02900ef11f5a982a93de5f927997ce92d5a81a86.exe PTB-x86-sha256=51cd7320492a0b816e848ed934f80a1b2e501b88b964fee7eabf1b026fd15adc PTG-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-ptg_bc5189c05e93cd0e5742712d84f0b5f5ffcbb7e4.exe PTG-x86-sha256=070366f5bce1adc80cd3149a0d7990d9a374c75b8db52f13f44ed14e2cc3c77e RUS-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-rus_850cda9f57033a17d046a56d422547ea80dcaf61.exe RUS-x86-sha256=80840593225a95a44768416ff51df048792f9e3cfad2917ec1ad9683aad12ee4 SVE-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-sve_13c5ecca22e12224934a1faa1190ee34db3995ae.exe SVE-x86-sha256=73e26e3c074362f66a9445904ae29ccc8d36ebb99ffbac991224de5e01361a18 TRK-x86=svpk/2008/04/windowsxp-kb936929-sp3-x86-trk_5aaf60501636af08c97ef1c18f1315f4ed6fbcdf.exe TRK-x86-sha256=fd5c9acab3f143e5083d4ac53670f92376432fcc7c9163eb2ce3883310337f01 [XPESP3] ; Only seems to be available in English. Mirrored by us because the file was deleted by Microsoft. x86=http://content.legacyupdate.net/download.microsoft.com/download/3/a/e/3aea3d4e-159d-4078-a5b4-5b1e4f5a4db4/WindowsXP-KB958255-ENU.exe x86-sha256=b3f410a712f3382119f4bd5705ed914edb07632b1ed54798abfaa494bd60b1e5 ; Windows XP 2003 [2003SP2] Prefix=http://download.windowsupdate.com/msdownload/update/ CHH-x86=v3-19990518/cabpool/windowsserver2003-kb914961-sp2-x86-chh_2de4fb187533e226cd615bcda30b9a8a2836e197.exe CHH-x86-sha256=ae6c95197b69b031b2a5547afc8dbc3fe82845efa68842f6530b7d1a64d0bd4c CHS-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-chs_c3e7772c6ad063bac3cb6ca05ea6e1b39c5bb35d.exe CHS-x86-sha256=569bc93961bedb5645a4c2c3d00bc81819b87e3754272462c4b6afb56f58cb08 CHT-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-cht_65a62b8ef051bf93d0ccd78900fe8d6709d37a92.exe CHT-x86-sha256=4fdb0a2d6ac056accaa65da6272f11139a5dfff8741ef084e60260443f110629 CSY-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-csy_fa0c18ba0a265001778e9d2691086742fc4efeb6.exe CSY-x86-sha256=0afb6655c1ef02509c1a7f731557d6f86b0a8304b2c4f532fb983242232b5a01 DEU-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-deu_f9a055504e882bb06ce2c7e83319000d905f7917.exe DEU-x86-sha256=ece3cd4c96a2d50310c5ded40aca7b35cec149db05aac52cd0f6729a179ea32d ENU-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-enu_51e1759a1fda6cd588660324abaed59dd3bbe86b.exe ENU-x86-sha256=9b18b8094318fda577ce392fa634a5e825ca8feb1b72b051dce21116265f15ad ESN-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-esn_38d7fba08bdebdaf567ae626042e860bf525306e.exe ESN-x86-sha256=2e5fd9d16c086a99c90a8cdf038a2b0b2af579b78a422812ffd55d2516800616 FRA-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-fra_51f76d9ebb01806f905199f83a16715e8026c095.exe FRA-x86-sha256=2cfc34d91dfd72a5e8d001a411b3f70ff4c91473134ae2c443a7ee84604f1684 HUN-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-hun_0ac4aaf8685d74132da6256439ed5f74337cb7f5.exe HUN-x86-sha256=791ed73f214b83c361f34778714b6e22f9012bef7e5dc6b13bc65c7cb9fa620f ITA-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-ita_75aa7220b0e226330a723cd27cb0f8b56e9b5f22.exe ITA-x86-sha256=a81203ab2df3625e0ff46b1d04f800224d9392e68f58b506eecb9732ab5be3e1 JPN-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-jpn_af70b74d70df32c530352b75e42ce772e9bb68d2.exe JPN-x86-sha256=9f42f6fb01eec164c0a51bd86563abff7d84b56da2eb0537fbd6228792a2b02d KOR-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-kor_65bcd5be738a08046f0714a108a5fa334ef08fd0.exe KOR-x86-sha256=b41827beda31671041857bfed9225ce04cbc83063516b42a405285aa9e694a7b NLD-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-nld_12014e84ae5c8a41cd918a6e2c97586bdee030f7.exe NLD-x86-sha256=d95527fbdb812a74809bd5cbe02db3a68d5d2395634f5012ada7a851a0d40001 PLK-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-plk_213469cc7ac58cfa82215f1e5ca6753675061b57.exe PLK-x86-sha256=04ac0dbab6148009dd91b3d29929ed24e3d7173155495ab44ee4740d865d1abe PTB-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-ptb_73a2c9a9a28f1203aba9f1852c64247467494652.exe PTB-x86-sha256=1f4d3ef6574dc430af1be9168878d809cecca5c5328ec4b213d2949190e30777 PTG-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-ptg_d8b921ee4bb0e0d2831f249e99c64264ae9098db.exe PTG-x86-sha256=4619329f32eb844e1a1fc36c5a6de493d81538f0efac0c4de0185e494456372d RUS-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-rus_b53c66c6cec98327d1a25b77a252dc82d984f959.exe RUS-x86-sha256=b9d36d52553d8f3294e810fc2d64cb69b6f8681169b92ddc033335ccb3ad0e80 SVE-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-sve_fba6d5c90dc7c15ae750c98cf407a0f148bbfee5.exe SVE-x86-sha256=38f87207509abd109c3641c4bab0f35ca9c3319c7dbf299a617e7939ec31c02e TRK-x86=software/dflt/2008/02/windowsserver2003-kb914961-sp2-x86-trk_428236b66433ce6b08c9d7a6aa6c523874a340ae.exe TRK-x86-sha256=63f0e3f33d5e710e686bb257532d99ec191e8b9f353984faaf3ddaa069a338ca ENU-x64=v3-19990518/cabpool/windowsserver2003.windowsxp-kb914961-sp2-x64-enu_7f8e909c52d23ac8b5dbfd73f1f12d3ee0fe794c.exe ENU-x64-sha256=62c6f31edc47f5a00651a83b6fa6edc7b4245dcf693d9233b6d0a79e52a5a57a JPN-x64=v3-19990518/cabpool/windowsserver2003.windowsxp-kb914961-sp2-x64-jpn_c725a8c4e03803b12a9ac8820e964dbc377a80dc.exe JPN-x64-sha256=8c39dc9bbdd4a6bbb6830bb49a108d79f18de42b5489a0496d965c2611667148 DEU-ia64=v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-deu_f6857c1bb8fc03798541a78cdc1f5bb98b456333.exe DEU-ia64-sha256=66a9dc02f7f9b214b6a1a9674f0ac6a6393d23102ee967014a4c8c1cc5fe6b08 ENU-ia64=v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-enu_8856af0aa0f198a8aad2de2c1ca68240d1d49bf3.exe ENU-ia64-sha256=f701a8e0950c9b7454ebd5526409fdc39b9fd463cd5ae0ce281d2752194c2fa7 FRA-ia64=v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-fra_0289b81fe7ed5c1c36f87232f87b25cdb21d331d.exe FRA-ia64-sha256=378209aaea67ea261631d2f1e4d51645870e10f845b050cc28a9d348864de774 JPN-ia64=v3-19990518/cabpool/windowsserver2003-kb914961-sp2-ia64-jpn_3216b1978fd418181ecbf77eef67398edb97a106.exe JPN-ia64-sha256=fe87dbcaad083d2a0a28d836e385f6ac9602060d7cb7482cbcf3ed3f0eb45a73 ; Windows Update Agent standalone installer [WUA] Prefix=http://download.windowsupdate.com/windowsupdate/redist/standalone/ ; 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=7.2.6001.788/WindowsUpdateAgent30-x86.exe 7.2.6001.788-x86-sha256=3dc3ab0add514e0f2780a7d40b310d373fb84087060e16dcf1004f9e2b84de7c 7.2.6001.788-x64=7.2.6001.788/WindowsUpdateAgent30-x64.exe 7.2.6001.788-x64-sha256=e61a0fb432780f1071b142bc24d83a5f081da12cd6c2bc8bd4ab6e5e2ecf653e 7.2.6001.788-ia64=7.2.6001.788/WindowsUpdateAgent30-ia64.exe 7.2.6001.788-ia64-sha256=7cc4c81f32b3a649cde35b768bdf4f9a89c595aa74c2c0878828c19119eebf3b 7.6.7600.243-x86=7.4.7600.243/WindowsUpdateAgent30-x86.exe 7.6.7600.243-x86-sha256=0c645755a01bebef694825362f7df308e7b4ee26dadca88474797f327a61a8d7 7.6.7600.256-x86=7.6.7600.320/WindowsUpdateAgent-7.6-x86.exe 7.6.7600.256-x86-sha256=9fc6856827123d0391a2c7451ccb1cbf93261442252dd87819ad5b8db72b0ec0 7.6.7600.256-x64=7.6.7600.320/WindowsUpdateAgent-7.6-x64.exe 7.6.7600.256-x64-sha256=d82a85e4874fbee6cb70479a5e146bb373a82cf8d898c95a600358b6e1933c24 7.6.7600.256-ia64=7.6.7600.320/WindowsUpdateAgent-7.6-ia64.exe 7.6.7600.256-ia64-sha256=c3645037ed96bf9ccb75d1ef40a8453382e03a06f2c44d97c97bb4e5ccf49097 ; 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.0=7.6.7600.256 6.0.1=7.6.7600.256 6.0.2=7.6.7600.256 ; Vista/Server 08 [VistaSP1] Prefix=http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/ x86=windows6.0-kb936330-x86_b8a3fa8f819269e37d8acde799e7a9aea3dd4529.exe x86-sha256=f2c460675e4a64665a685968a1e8123ce5cce4f1a419d13f9a819554305731ee x64=windows6.0-kb936330-x64_12eed6cf0a842ce2a609c622b843afc289a8f4b9.exe x64-sha256=4c441093f023e4a7d1c5df32734916a5bb430ccc141d489be15865dbbb921763 ; No ia64 release for Vista SP1 [VistaSP2] Prefix=http://download.windowsupdate.com/msdownload/update/software/svpk/2009/06/ x86=windows6.0-kb948465-x86_55f17352b4398ecb4f0cc20e3737631420ca1609.exe x86-sha256=9fcbbef32ffae17bfe3859770ea49a0bd26970c29d1f0123d127fc5bfc63d563 x64=windows6.0-kb948465-x64_2eedca0bfa5ae8d1b0acf2117ddc4f15ac5183c9.exe x64-sha256=bc8e2a4b663b41fdb4b154a2398c1c5e72ca6ac5651cb421152c344fb08a829e ia64=windows6.0-kb948465-ia64_1a6cd9ade213bcc056cba3b810e86f0c09c16b51.exe ia64-sha256=ae65b53de3235f4d767374865a00ebc4e960bb4e053abad9c4e088634a36edcd [KB3205638] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/secu/2016/11/ x86=windows6.0-kb3205638-x86_e2211e9a6523061972decd158980301fc4c32a47.msu x86-sha256=bba36504ae8c0178f06ac4d0a94de66c5fdbdb3a61d989e332453ec866b0b000 x64=windows6.0-kb3205638-x64_a52aaa009ee56ca941e21a6009c00bc4c88cbb7c.msu x64-sha256=0e2a8b49a6eaf22863e68f77f0c69403d1a074f441b26ad9ecf03809bff6b451 ia64=windows6.0-kb3205638-ia64_d6bd55663080885c712c3afb9021c7336d0be83a.msu ia64-sha256=406dc4e8a965f814906a0a34c403de14d6482c0dbf5b17f6e3f5e5f229119a80 [KB4012583] Prefix=http://download.windowsupdate.com/c/msdownload/update/software/secu/2017/02/ x86=windows6.0-kb4012583-x86_1887cb5393b62cbd2dbb6a6ff6b136e809a2fbd0.msu x86-sha256=e83118b4ab3e628ab773fd244e7b8d41ed467543dd53b1cf2c733a45f833e05a x64=windows6.0-kb4012583-x64_f63c9a85aa877d86c886e432560fdcfad53b752d.msu x64-sha256=6ef5b5ec6912ede5629622d4c05000df38cc0a566d1a1881b15e6a4d1ad534ad ia64=windows6.0-kb4012583-ia64_ab1ab96d3a3d7fbd1bf5d1cee53bf0be958c6329.msu ia64-sha256=4f87975fca9ce119b523bc930109c9e0c9f7e58d89f972cada19a7fde519da45 [KB4015195] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/secu/2017/03/ x86=windows6.0-kb4015195-x86_eb045e0144266b20b615f29fa581c4001ebb7852.msu x86-sha256=8e55dec6bf11cfbbd37b64cd74611d46814f75cdc46b1bdf3f01784a0fa6aa32 x64=windows6.0-kb4015195-x64_2e310724d86b6a43c5ae8ec659685dd6cfb28ba4.msu x64-sha256=b62531d6925f6cb0b2b3bc5593d3b81157d7103db988379763556c4af1d35594 ia64=windows6.0-kb4015195-ia64_0ae8f7c2ab5cf24123f6e279469674d823d20129.msu ia64-sha256=64ed566d2238b37bf7fd296b2ddc278819774e578ab004fb80afd611a6b266b1 [KB4015380] Prefix=http://download.windowsupdate.com/ x86=d/msdownload/update/software/secu/2017/03/windows6.0-kb4015380-x86_3f3548db24cf61d6f47d2365c298d739e6cb069a.msu x86-sha256=f7f41d5645b2517619c3619ac4a42fb21118eea1047ad31e984b0b2de33ac517 x64=c/msdownload/update/software/secu/2017/03/windows6.0-kb4015380-x64_959aedbe0403d160be89f4dac057e2a0cd0c6d40.msu x64-sha256=18367f7ce24e11ce8ef84b1839df929713d30354e16e893ba789e40e760acc8f ia64=c/msdownload/update/software/secu/2017/03/windows6.0-kb4015380-ia64_2a825e5f1aca191bb5f627b494838660180da2d6.msu ia64-sha256=5bc5c096336f3f2200dcc762301035690e9607a4b7c19ca3a01814a7b642cd8c [KB4493730] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/secu/2019/04/ x86=windows6.0-kb4493730-x86_ab4368f19db796680ff445a7769886c4cdc009a0.msu x86-sha256=601c6afc2da2bce6e6068aba2368c94a3902a4948365a24cde44022ef462e163 x64=windows6.0-kb4493730-x64_5cb91f4e9000383f061b80f88feffdf228c2443c.msu x64-sha256=26bf790fadd11eca1433abd8edc78d2ddfa1fe85fe0d2f67cdffb5de0c069530 ia64=windows6.0-kb4493730-ia64_024e5a390f7eace6d2e9dcaa91f09976e4d147db.msu ia64-sha256=e806326e885fa6d7b072ada47ca63e88d3b399b2137515fe202764e70f8215ec ; IE9 for Vista [KB971512] Prefix=http://download.windowsupdate.com/msdownload/update/software/updt/2009/10/ x86=windows6.0-kb971512-x86_370c3e41e1c161ddce29676e9273e4b8bb7ba3eb.msu x86-sha256=ebfae656dc0936ed003ac0c2ea9b0b0dd1810558ff32c61a0952e92e6bf9c3d1 x64=windows6.0-kb971512-x64_0b329b985437c6c572529e5fd0042b9d54aeaa0c.msu x64-sha256=05127e5cef082bad20cfdb9e87ebe89b6285dbc0ec43e7a6fb36a4b294ce0722 [KB2117917] Prefix=http://download.windowsupdate.com/msdownload/update/software/updt/2011/02/ x86=windows6.0-kb2117917-x86_370435d9efa6643c44d6506666b1960d56cf673a.msu x86-sha256=eaf649252e2d784f994236fc413356bd433798599b924a7c07645cb050a513fa x64=windows6.0-kb2117917-x64_655a21758801e9648702791d7bf30f81b58884b3.msu x64-sha256=f188b7ccb72fcd45a96bf8487e1d5e683bf7a7379e6491adb61398972ff9548c [IE9] Prefix=http://download.windowsupdate.com/msdownload/update/software/uprl/2011/ x86=05/wu-ie9-windowsvista-x86_90e3e90e964c2769a008cbf924eefdc42413dd52.exe x86-sha256=de20f531dede818aa65c05194b1e7bfed163dd060dc5214c85629d2e8c760fe3 x64=03/wu-ie9-windowsvista-x64_f599c02e7e1ea8a4e1029f0e49418a8be8416367.exe x64-sha256=e9c8ee3418f92b93a4f0759f527f4fd63215f6bc9fbbd1d86131d0ec49cce95d ; Hyper-V update for Server 08 [KB950050] Prefix=http://download.windowsupdate.com/msdownload/update/software/updt/2008/06/ x86=windows6.0-kb950050-x86_ca9c19235f4789743d1d818c33726e0f2600238a.msu x86-sha264=3ba4464725f19fb11b1a1d16f02f3e871d0bbb208cd4219acd2afa80e4a0cbda x64=windows6.0-kb950050-x64_0440bab6c829c0cc052473e34d42e18d37745a91.msu x64-sha256=a7a9c40dbbceec3981fb923b8d55600b0e0095980f482d67dca781603744f87c ; 7/Server 08 R2 [Win7SP1] x86=http://download.windowsupdate.com/msdownload/update/software/svpk/2011/02/windows6.1-kb976932-x86_c3516bc5c9e69fee6d9ac4f981f5b95977a8a2fa.exe x86-sha256=e5449839955a22fc4dd596291aff1433b998f9797e1c784232226aba1f8abd97 x64=http://download.windowsupdate.com/msdownload/update/software/svpk/2011/02/windows6.1-kb976932-x64_74865ef2562006e51d7f9333b4a8d45b7a749dab.exe x64-sha256=f4d1d418d91b1619688a482680ee032ffd2b65e420c6d2eaecf8aa3762aa64c8 ia64=http://content.legacyupdate.net/download.microsoft.com/download/0/a/f/0afb5316-3062-494a-ab78-7fb0d4461357/windows6.1-KB976932-IA64.exe ia64-sha256=12f82b736f6d29813ab7c93e10b6cbe308e7e9236428f624dc614447fe24f6be [KB3020369] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/updt/2015/04/ x86=windows6.1-kb3020369-x86_82e168117c23f7c479a97ee96c82af788d07452e.msu x86-sha256=9263e422baa496b59e7ae5be1d43790e9f0fccaad7e4c7336b4a3bd03b0855c9 x64=windows6.1-kb3020369-x64_5393066469758e619f21731fc31ff2d109595445.msu x64-sha256=e9fbb6b43c6fb9c1dcc8864bb7a35f29e4002830f3acbb93e0e717ae653fe76a ; ia64 exists, but not used by us [KB3125574] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/05/ x86=windows6.1-kb3125574-v4-x86_ba1ff5537312561795cc04db0b02fbb0a74b2cbd.msu x86-sha256=930cc1c0f8838d731dbb89755b9de12b489ab35fdc2644c01605a6b6de3f497e x64=windows6.1-kb3125574-v4-x64_2dafb1d203c8964239af3048b5dd4b1264cd93b9.msu x64-sha256=7bb1796827448df30356b57ac5731bccbc1336789dc884630e8d356df2e1685b [KB3138612] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/02/ x86=windows6.1-kb3138612-x86_6e90531daffc13bc4e92ecea890e501e807c621f.msu x86-sha256=a70e00bd2c77122ad819e05009b6557ff4ed31567dc7b643ed848d095ef34df8 x64=windows6.1-kb3138612-x64_f7b1de8ea7cf8faf57b0138c4068d2e899e2b266.msu x64-sha256=5309f9d9a49dd91ef38031b1e4518cf5d1bf8f7d35cf11814cd867912ba11870 ia64=windows6.1-kb3138612-ia64_4edd5410fb137382d77f468a14118fa6d1c03655.msu ia64-sha256=38423da2dc1882990ff6d335c4720877f5bba777cf46d7ccc8c90fc1943d8e65 [KB4474419] Prefix=http://download.windowsupdate.com/c/msdownload/update/software/secu/2019/09/ x86=windows6.1-kb4474419-v3-x86_0f687d50402790f340087c576886501b3223bec6.msu x86-sha256=8cf49fc7ac61e0b217859313a96337b149ab41b3307eb0d9529615142ea34c6c x64=windows6.1-kb4474419-v3-x64_b5614c6cea5cb4e198717789633dca16308ef79c.msu x64-sha256=99312df792b376f02e25607d2eb3355725c47d124d8da253193195515fe90213 ia64=windows6.1-kb4474419-v3-ia64_1436a990f64876332857baaafa7aeb9eadcb4fa4.msu ia64-sha256=8162835bb6f51d63784ca66b1b013beb657e9289179d37b456f54334f28b3d0b [KB4490628] Prefix=http://download.windowsupdate.com/ x86=c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x86_3cdb3df55b9cd7ef7fcb24fc4e237ea287ad0992.msu x86-sha256=b86849fda570f906012992a033f6342373c00a3b3ec0089780eabb084a9a0182 x64=c/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-x64_d3de52d6987f7c8bdc2c015dca69eac96047c76e.msu x64-sha256=8075f6d889bcb27be6f52ed47081675e5bb8a5390f2f5bfe4ec27a2bb70cbf5e ia64=d/msdownload/update/software/secu/2019/03/windows6.1-kb4490628-ia64_4736acd98e0a4e02f29fcdef63feacc5ac7b702b.msu ia64-sha256=3c343a9ed3a4e67bcc3aa7b784bfc2fce4fdd0c65f0050813b7e2de03fbe9c87 ; Windows Home Server 2011 [KB2757011] Prefix=http://download.windowsupdate.com/msdownload/update/software/uprl/2012/12/ x64=windows6.1-kb2757011-x64_4140355ab0b06df89668ec51432a820dff9af356.msu x64-sha256=47548095dd7baa7ac977b07c025243b1050be9c13cc5d82c4a03cd53513f1b2d ; 8/Server 2012 [KB4598297] Prefix=http://download.windowsupdate.com/d/msdownload/update/software/secu/2021/01/ x86=windows8-rt-kb4598297-x86_a517ea587c91af5f803b0973d40166c3e076fe5c.msu x86-sha256=740c16a73778d3a936ffd5a9adcc9ba123f120f2a6b549b864f9edf1b6e04fe4 x64=windows8-rt-kb4598297-x64_60f5c45d1216ee6ff1ab88ca03b037ac519ad0da.msu x64-sha256=ee75660e59543caec58e22b3c089119a6f4fcd8bf9d143bee88d4ac5873b6e5a ; 8.1/Server 2012 R2 [KB3021910] Prefix=http://download.windowsupdate.com/ x86=c/msdownload/update/software/updt/2015/04/windows8.1-kb3021910-x86_7e70173bec00c3d4fe3b0b8cba17b095b4ed2d20.msu x86-sha256=971d1b18cb26e578926591ee944f7183be7a6d7abfc2e255b930803666eebc20 x64=c/msdownload/update/software/updt/2015/04/windows8.1-kb3021910-x64_e291c0c339586e79c36ebfc0211678df91656c3d.msu x64-sha256=feb03c1c3d5719ec2e7873c0b9b85bb9e9db44df88c75f9ddd5222942e4bf928 arm=d/msdownload/update/software/updt/2015/03/windows8.1-kb3021910-arm_72a8286480463b9328f742c7247d7c155a716cd0.msu arm-sha256=7c2ffdc3029c0c6bc98726722cea34bc4968bc8c69440ad619db62a1d841c8c3 [ClearCompressionFlag] Prefix=http://download.windowsupdate.com/ x86=c/msdownload/update/software/secu/2014/04/clearcompressionflag_220edca17ae47089fc4da060915e0df568eac4ff.exe x86-sha256=fc540c0d8da69d08dbd26f71f817f4925b5725e04e76ee0d0fd89e42d1860a86 x64=d/msdownload/update/software/secu/2014/04/clearcompressionflag_3104315db9d84f6a2a56b9621e89ea66a8c27604.exe x64-sha256=9b95973b198eb255c8e85eb72e0af96482f5ae7547d66aa1b70a7e41602f2548 arm=c/msdownload/update/software/secu/2014/04/clearcompressionflag_70c52df15023ad1fa579149f0435e6a2b078fc94.exe arm-sha256=8c05fb101a01b54de6cc6e22441b528ea1b3cde211781a8e4258e2f776338841 [KB2919355] Prefix=http://download.windowsupdate.com/ x86=c/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x86_de9df31e42fe034c9a763328326e5852c2b4963d.msu x86-sha256=f8beca5b463a36e1fef45ad0dca6a0de7606930380514ac1852df5ca6e3f6c1d x64=d/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-x64_e6f4da4d33564419065a7370865faacf9b40ff72.msu x64-sha256=b0c9ada530f5ee90bb962afa9ed26218c582362315e13b1ba97e59767cb7825d arm=c/msdownload/update/software/crup/2014/02/windows8.1-kb2919355-arm_a6119d3e5ddd1a233a09dd79d91067de7b826f85.msu arm-sha256=cf3e9dd5a521965a613ca5b931dea739ac9101e21dc20aa6d05374710083e426 [KB2932046] Prefix=http://download.windowsupdate.com/ x86=c/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-x86_bfd8ca4c683ccec26355afc1f2e677f3809cb3d6.msu x86-sha256=a57c15c14f21d2a36a10a587efbd5229e5b10c58d5c39e809093582151cb061a x64=d/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-x64_6aee5fda6e2a6729d1fbae6eac08693acd70d985.msu x64-sha256=46b5f5ac8592caa1fc9f9494f775c480dd35b8d1034bc443469df2ae7260cd2e arm=c/msdownload/update/software/crup/2014/02/windows8.1-kb2932046-arm_fe6acf558880d127aef1a759a8c2539afc67b5fb.msu arm-sha256=86d78135033944f169974e3523f12072bc34de82d68de924250d0917fb953254 [KB2959977] Prefix=http://download.windowsupdate.com/ x86=d/msdownload/update/software/secu/2014/04/windows8.1-kb2959977-x86_5ccf761a356bb143b68887f99883d8c24946d2c2.msu x86-sha256=c0da1c3845ba98f5ee5f1cba1312189422ce1c6bec95bc9c86270b2bf61751ee x64=c/msdownload/update/software/secu/2014/04/windows8.1-kb2959977-x64_574ba2d60baa13645b764f55069b74b2de866975.msu x64-sha256=3e6a8674cc5a206cae551426a6bfe254092b11e0501c162f3872fb32ffbc797b arm=c/msdownload/update/software/secu/2014/04/windows8.1-kb2959977-arm_d37dfe20cdc496b4ed4338913d225fc1a9a91d36.msu arm-sha256=734dc55f56798695d98d7ba13d774abb54e2326b7b51881fa6db78eadcc1fb4b [KB2937592] Prefix=http://download.windowsupdate.com/ x86=d/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-x86_96a3416d480bd2b54803df26b8e76cd1d0008d43.msu x86-sha256=af4622499f3a054c8eef2ced379b24f95af95eca1b8582c22935ed6ceddd1553 x64=c/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-x64_4abc0a39c9e500c0fbe9c41282169c92315cafc2.msu x64-sha256=094f92c5fea35c9067844f7acc160f3106214fc62a56068798759512183c18fd arm=c/msdownload/update/software/crup/2014/02/windows8.1-kb2937592-arm_860c83a0cccc0519111f57a679ae9f9d071315e5.msu arm-sha256=0abb841953f1abbd59d0d95f20a093d8ff454f2c8cdd781c87693f3b32fe9b66 [KB2934018] Prefix=http://download.windowsupdate.com/ x86=d/msdownload/update/software/secu/2014/04/windows8.1-kb2934018-x86_8fb05387836b77abbf1755185ae743c9da417e9a.msu x86-sha256=3976c63843b89bc3a167f26166c7ff7007edc2edf3ed671888b5480ee8c34179 x64=c/msdownload/update/software/secu/2014/04/windows8.1-kb2934018-x64_234a5fc4955f81541f5bfc0d447e4fc4934efc38.msu x64-sha256=083cb134f59107531e241645530fed396f3cfdd8128ab33349fe138f20f2e19d arm=c/msdownload/update/software/secu/2014/04/windows8.1-kb2934018-arm_28c62f5a4129ba24ab75936517c5066435702ae8.msu arm-sha256=d87e2d6d5a9d544ff50d268df6421f92791416f095a8a09050b5a8a48d334d5d [KB3097667] arm=http://download.windowsupdate.com/d/msdownload/update/software/updt/2015/09/windows8.1-kb3033055-arm_1b0aeee420c6ad850de7cfac0c485d4bd7965f71.msu arm-sha256=4e861185a4897c7950f02ab93069297fbd929460a3c4c735877cb1be8b4aa472 ================================================ FILE: setup/PatchesNT4.ini ================================================ [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 [IE6] Prefix=http://download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/ ARA-x86=ie6sp1-wucab-ara_b1720a72becd05142cb4ccbb23205c76b51d29e2.cab CHH-x86=ie6sp1-wucab-cht_1899bffb8ebf36c0a58686f04cc1d721c419792d.cab CHS-x86=ie6sp1-wucab-chs_6d93ab8525d3b6f775faf692caaa4c8267c8a22b.cab CHT-x86=ie6sp1-wucab-cht_1899bffb8ebf36c0a58686f04cc1d721c419792d.cab CSY-x86=ie6sp1-wucab-csy_2789a030bba2128fc90e0475e2530c300ed5defc.cab DAN-x86=ie6sp1-wucab-dan_0c178b2634a97a4879c172797b21a59e567d18e6.cab DEU-x86=ie6sp1-wucab-deu_2a13ac14e403ad4a1c6877fe478067e81ac20da8.cab ELL-x86=ie6sp1-wucab-ell_15a4e43c8922f658eddd5d57d23c11e0fa55dce9.cab ENU-x86=ie6sp1-wucab-enu_91192253c8d3cf7beff22e68ae1fdff9638bf546.cab ESN-x86=ie6sp1-wucab-esn_a9c53ad93bae78becf2b06f6d317ef7ef66a2abe.cab FIN-x86=ie6sp1-wucab-fin_1a369fcc86e803128144e17246e16d0a27a8c35b.cab FRA-x86=ie6sp1-wucab-fra_0bc4219b3119a127503cd93863cfedfb1e37bd55.cab HEB-x86=ie6sp1-wucab-heb_70518dd1d09d702975b8e44a22c88e139f168975.cab HUN-x86=ie6sp1-wucab-hun_1eeed3e7b3e6bd311c17c0d97f67ec12df8b4b85.cab ITA-x86=ie6sp1-wucab-ita_2c6ab20b41114e53646ebb56ff6d269fd86fba36.cab JPN-x86=ie6sp1-wucab-jpn_b1e1e8b9dbbf440d8964ec375348674502ef0728.cab KOR-x86=ie6sp1-wucab-kor_f61474b056ae37c5e9670978c6d3b24f4800d7f5.cab NLD-x86=ie6sp1-wucab-nld_3fd676fe34f93471f4db9a0a1f3ef5c3ed8e5f43.cab NOR-x86=ie6sp1-wucab-nor_72a81d06462c5a66f9531f4f226b13463698dd24.cab PLK-x86=ie6sp1-wucab-plk_14889750985a9d29490886c2e901ef3bc69c4ff5.cab PTB-x86=ie6sp1-wucab-ptb_448df44aea5d853e4954d48411b1953569df23c2.cab PTG-x86=ie6sp1-wucab-ptg_5892593c72f702ba6c7d88b47c2bd7c5707081fd.cab RUS-x86=ie6sp1-wucab-rus_842c289d0887bbe2e4edea1ff3763addc8d77db5.cab SVE-x86=ie6sp1-wucab-sve_db8dcfef073f2df327fc3706d9a141b6124cfed0.cab TRK-x86=ie6sp1-wucab-trk_64479241feb2f783f851b16791d5d1c684d94a66.cab NEC98-x86=ie6sp1-wucab-jpn_b1e1e8b9dbbf440d8964ec375348674502ef0728.cab ================================================ FILE: setup/RebootPage.nsh ================================================ Function RebootPage ; Only show if reboot needed ${IfNot} ${RebootFlag} Abort ${EndIf} ; Not needed in runonce ${If} ${IsRunOnce} ${OrIf} ${IsPostInstall} Abort ${EndIf} ; If /norestart passed, skip creating the page ${If} ${NoRestart} StrCpy $0 -1 ${Else} !insertmacro MUI_HEADER_TEXT "$(RebootPageTitle)" "" LegacyUpdateNSIS::RebootPageCreate \ "$(RebootPageText)" \ "$(RebootPageTimer)" \ "$(RebootPageRestart)" \ "$(RebootPageLater)" Call AeroWizardOnShow LegacyUpdateNSIS::RebootPageShow Pop $0 ${EndIf} ${If} $0 == 0 ${OrIf} $0 == 1 ; Reboot Call RebootIfRequired ${Else} ; Later ${MementoSectionSave} Call PrepareRunOnce SetErrorLevel ${ERROR_SUCCESS_REBOOT_REQUIRED} Quit ${EndIf} FunctionEnd ================================================ FILE: setup/RunOnce.nsh ================================================ Function IsAuditMode ; 2k/XP ReadRegDword $0 HKLM "${REGPATH_SETUP}" "AuditInProgress" ${If} $0 == 1 Push 1 ${Else} ; Vista+ ReadRegDword $0 HKLM "${REGPATH_SETUP_STATUS}" "AuditBoot" ${If} $0 > 0 Push 1 ${Else} Push 0 ${EndIf} ${EndIf} FunctionEnd !macro _IsAuditMode _a _b _t _f !insertmacro _LOGICLIB_TEMP Call IsAuditMode Pop $_LOGICLIB_TEMP StrCmp $_LOGICLIB_TEMP 1 `${_t}` `${_f}` !macroend !define IsAuditMode `"" IsAuditMode ""` !macro PromptReboot !insertmacro InhibitSleep 0 SetErrorLevel ${ERROR_SUCCESS_REBOOT_REQUIRED} ${If} ${NoRestart} ; Prompt for reboot ${IfNot} ${Silent} ${AndIfNot} ${IsPassive} System::Call '${RestartDialog}($HWNDPARENT, "", ${EWX_REBOOT})' ${EndIf} Quit ${Else} ; Reboot immediately System::Call '${GetUserName}(.r0, ${NSIS_MAX_STRLEN}) .r1' ${If} ${IsRunOnce} ${AndIf} $0 == "SYSTEM" ${AndIfNot} ${IsAuditMode} ; Running in setup mode. Winlogon will reboot for us. Quit ${Else} ; Regular reboot. Reboot ${EndIf} ${EndIf} !macroend Function CleanUpRunOnce ; The reboot has happened, so remove reboot flag if any DeleteRegValue HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "RebootPending" ; Restore setup keys ; Be careful here. Doing this wrong can cause SYSTEM_LICENSE_VIOLATION bootloops! ${DeleteRegWithBackup} Str HKLM "${REGPATH_SETUP}" "CmdLine" "" ${DeleteRegWithBackup} Dword HKLM "${REGPATH_SETUP}" "SetupType" ${SETUP_TYPE_NORMAL} DeleteRegValue HKLM "${REGPATH_SETUP}" "SetupShutdownRequired" ${If} ${Abort} Call CleanUpRunOnceFinal ${EndIf} FunctionEnd Function CleanUpRunOnceFinal ; Enable keys we disabled if needed ${If} ${IsWinXP2002} ${DeleteRegWithBackup} Dword HKLM "${REGPATH_SECURITYCENTER}" "FirstRunDisabled" "-" ${EndIf} ${If} ${AtLeastWin8} ${DeleteRegWithBackup} Dword HKLM "${REGPATH_POLICIES_SYSTEM}" "EnableFirstLogonAnimation" "-" ${EndIf} ; Delete runonce stuff RMDir /r /REBOOTOK "${RUNONCEDIR}" ; Delete IE6 temp files RMDir /r /REBOOTOK "$WINDIR\Windows Update Setup Files" FunctionEnd !if ${NT4} == 0 Function CopyLauncher ${If} ${IsNativeAMD64} File /ONAME=LegacyUpdate.exe "..\launcher\obj\LegacyUpdate64.exe" ${Else} File /ONAME=LegacyUpdate.exe "..\launcher\obj\LegacyUpdate32.exe" ${EndIf} FunctionEnd !endif Var /GLOBAL RunOnce.UseFallback Function PrepareRunOnce ${IfNot} ${RebootFlag} Return ${EndIf} ; Set flag in case the user decides to restart later, so we can jump straight to the restart page WriteRegDword HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "RebootPending" 1 !if ${NT4} == 0 ${IfNot} ${IsRunOnce} ; Copy to runonce path to ensure installer is accessible by the temp user CreateDirectory "${RUNONCEDIR}" SetOutPath "${RUNONCEDIR}" CopyFiles /SILENT "$EXEPATH" "${RUNONCEDIR}\LegacyUpdateSetup.exe" Call CopyLauncher ; Remove mark of the web to prevent "Open File - Security Warning" dialog System::Call '${DeleteFile}("${RUNONCEDIR}\LegacyUpdateSetup.exe:Zone.Identifier")' ${EndIf} !endif !if ${NT4} == 1 StrCpy $1 "${RUNONCEDIR}\LegacyUpdateSetup.exe" !else StrCpy $1 "${RUNONCEDIR}\LegacyUpdate.exe" !endif ${If} $RunOnce.UseFallback == 1 ${OrIf} ${IsAuditMode} WriteRegStr HKLM "${REGPATH_RUNONCE}" "LegacyUpdateRunOnce" '"$1" /runonce' ${Else} ; Somewhat documented in KB939857: ; https://web.archive.org/web/20090723061647/http://support.microsoft.com/kb/939857 ; See also Wine winternl.h ${WriteRegWithBackup} Str HKLM "${REGPATH_SETUP}" "CmdLine" '"$1" /runonce' ${WriteRegWithBackup} Dword HKLM "${REGPATH_SETUP}" "SetupType" ${SETUP_TYPE_NOREBOOT} WriteRegDword HKLM "${REGPATH_SETUP}" "SetupShutdownRequired" ${SETUP_SHUTDOWN_REBOOT} ${EndIf} ; Temporarily disable Security Center first run if needed ${If} ${IsWinXP2002} ${AndIfNot} ${AtLeastServicePack} 2 ${VerbosePrint} "Disabling Security Center first run" ${WriteRegWithBackup} Dword HKLM "${REGPATH_SECURITYCENTER}" "FirstRunDisabled" 1 ${EndIf} ; Temporarily disable logon animation if needed ${If} ${AtLeastWin8} ${VerbosePrint} "Disabling first logon animation" ${WriteRegWithBackup} Dword HKLM "${REGPATH_POLICIES_SYSTEM}" "EnableFirstLogonAnimation" 0 ${EndIf} FunctionEnd !macro -RebootIfRequired ${If} ${RebootFlag} ${If} ${Silent} ${OrIf} ${IsRunOnce} Call RebootIfRequired ${EndIf} Return ${EndIf} !macroend !define RebootIfRequired `!insertmacro -RebootIfRequired` Function RebootIfRequired ${MementoSectionSave} ${If} ${RebootFlag} ; Reboot now Call PrepareRunOnce !insertmacro PromptReboot ${Else} ; Restore setup keys Call CleanUpRunOnce ${EndIf} FunctionEnd Function OnRunOnceLogon ; To be safe in case we crash, immediately restore setup keys. We'll set them again if needed. Call CleanUpRunOnce FunctionEnd !macro SetMarquee state Push $0 FindWindow $0 "#32770" "" $HWNDPARENT FindWindow $0 "msctls_progress32" "" $0 !if ${state} == 1 ${NSD_AddStyle} $0 ${PBS_MARQUEE} SendMessage $0 ${PBM_SETMARQUEE} 1 100 !else ${NSD_RemoveStyle} $0 ${PBS_MARQUEE} !endif Pop $0 !macroend !if ${NT4} == 0 Function PollCbsInstall ${IfNot} ${AtLeastWinVista} Return ${EndIf} ReadRegDword $0 HKLM "${REGPATH_CBS}" "ExecuteState" ${If} $0 == ${CBS_EXECUTE_STATE_NONE} ${OrIf} $0 == ${CBS_EXECUTE_STATE_NONE2} Return ${EndIf} ${VerbosePrint} "Packages are still installing [$0]" ${DetailPrint} "$(StatusCbsInstalling)" ; Set marquee progress bar !insertmacro SetMarquee 1 ${While} 1 == 1 ; Are we in a RebootInProgress phase? ClearErrors EnumRegKey $1 HKLM "${REGPATH_CBS_REBOOTINPROGRESS}" 0 ${IfNot} ${Errors} ; Prepare runonce now and spin forever. TrustedInstaller will reboot on its own. SetRebootFlag true Call PrepareRunOnce ${VerbosePrint} "System will restart automatically" ${While} 1 == 1 Sleep 10000 ${EndWhile} ${EndIf} ; Poll TrustedInstaller execution state ReadRegDword $0 HKLM "${REGPATH_CBS}" "ExecuteState" ${If} $0 == ${CBS_EXECUTE_STATE_NONE} ${OrIf} $0 == ${CBS_EXECUTE_STATE_NONE2} ; Ignore under Vista RTM servicing stack. It can trick us by going to -1, then back to 0. ; This happens in the first 2 (of 3) reboots when installing SP1. ${IfNot} ${IsWinVista} ${OrIf} ${AtLeastServicePack} 1 ${Break} ${EndIf} ${EndIf} Sleep 1000 ${EndWhile} ; Revert progress bar !insertmacro SetMarquee 0 FunctionEnd !endif Function RebootIfCbsRebootPending ${IfNot} ${AtLeastWinVista} Return ${EndIf} StrCpy $1 0 ClearErrors ReadRegDword $0 HKLM "${REGPATH_CBS}" "ExecuteState" ${IfNot} ${Errors} ${AndIf} $0 != ${CBS_EXECUTE_STATE_NONE} ${AndIf} $0 != ${CBS_EXECUTE_STATE_NONE2} StrCpy $1 1 ${EndIf} ClearErrors EnumRegKey $0 HKLM "${REGPATH_CBS_REBOOTPENDING}" 0 EnumRegKey $0 HKLM "${REGPATH_CBS_PACKAGESPENDING}" 0 ${IfNot} ${Errors} StrCpy $1 1 ${EndIf} ${If} $1 == 1 ${VerbosePrint} "Restarting to install previously pending packages" SetRebootFlag true ${RebootIfRequired} ${EndIf} FunctionEnd Function OnRunOnceDone ${If} ${IsRunOnce} ${AndIfNot} ${Abort} ; Set up postinstall runonce ${If} ${IsAuditMode} ${VerbosePrint} "Running postinstall" Exec '"${RUNONCEDIR}\LegacyUpdate.exe" /runonce postinstall' ${Else} ${VerbosePrint} "Preparing postinstall" WriteRegStr HKLM "${REGPATH_RUNONCE}" "LegacyUpdatePostInstall" '"${RUNONCEDIR}\LegacyUpdate.exe" /runonce postinstall' System::Call '${GetUserName}(.r0, ${NSIS_MAX_STRLEN}) .r1' ${If} $0 == "SYSTEM" ; Configure winlogon to proceed to the logon dialog Call CleanUpRunOnce ${EndIf} ${EndIf} ${EndIf} FunctionEnd ================================================ FILE: setup/Strings.nsh ================================================ !insertmacro MUI_LANGUAGE "English" ; Dialog MiscButtonText "Back" "Next" "Cancel" "Close" ; Log LangString ^ExecShell ${LANG_ENGLISH} "Execute: " LangString ^Completed ${LANG_ENGLISH} "Done" LangString Downloading ${LANG_ENGLISH} "Downloading " LangString Verifying ${LANG_ENGLISH} "Verifying " LangString Extracting ${LANG_ENGLISH} "Extracting " LangString Installing ${LANG_ENGLISH} "Installing " LangString ExitCode ${LANG_ENGLISH} "Exit code: " LangString RestartRequired ${LANG_ENGLISH} "Success - restart required" LangString AlreadyInstalled ${LANG_ENGLISH} "Installation skipped - already installed" LangString NotApplicable ${LANG_ENGLISH} "Installation skipped - not applicable" ; Download LangString DownloadStatusSingle ${LANG_ENGLISH} "{TIMEREMAINING} left - {RECVSIZE} of {FILESIZE} ({SPEED})" LangString DownloadStatusMulti ${LANG_ENGLISH} "{TIMEREMAINING} left - {TOTALRECVSIZE} of {TOTALFILESIZE} ({SPEED})" ; Startup errors LangString MsgBoxUsage ${LANG_ENGLISH} \ "Usage: setup.exe [/S] [/v] [/passive] [/norestart]$\r$\n\ $\r$\n\ /S$\tExecute Legacy Update setup silently.$\r$\n\ /v$\tDisplay verbose details during installation.$\r$\n\ /passive$\tInstall without user interaction.$\r$\n\ /norestart$\tDisable automatic restart during installation.$\r$\n\ $\r$\n\ If no flags are passed, Legacy Update will launch its full user interface.$\r$\n\ For more information on these flags, visit legacyupdate.net." LangString MsgBoxElevationRequired ${LANG_ENGLISH} \ "Log on as an administrator to install Legacy Update." LangString MsgBoxOldWinVersion ${LANG_ENGLISH} \ "Legacy Update requires Windows 2000 or later.$\r$\n\ $\r$\n\ You might be interested in Windows Update Restored instead.$\r$\n\ Would you like to go to ${WUR_WEBSITE} now?" LangString MsgBoxNeedsNT4 ${LANG_ENGLISH} \ "Legacy Update NT is intended only for use on Windows NT 4.0.$\r$\n\ $\r$\n\ For other versions of Windows, use the regular version of Legacy Update.$\r$\n\ Would you like to go to ${WEBSITE} now?" LangString MsgBoxBetaOS ${LANG_ENGLISH} \ "The current version of Windows is a beta build. Legacy Update may not work correctly on this version of Windows.$\r$\n\ $\r$\n\ Continue anyway?" LangString MsgBoxOneCoreAPI ${LANG_ENGLISH} \ "One-Core-API has been detected on this system. Installation of updates will fail while One-Core-API is installed.$\r$\n\ $\r$\n\ It is recommended to uninstall One-Core-API, then install it again after you have installed all updates.$\r$\n\ $\r$\n\ Continue anyway?" LangString MsgBoxNNN4NT5 ${LANG_ENGLISH} \ "A compatibility mode has been set on this program by NNN Changer for NT 5.x (NNN4NT5). Legacy Update will not work correctly in compatibility mode.$\r$\n\ $\r$\n\ Click the $\"Delete$\" button in NNN4NT5 to disable compatibility mode, then try again." LangString MsgBoxCompatMode ${LANG_ENGLISH} \ "A compatibility mode has been set on this program. Legacy Update will not work correctly in compatibility mode.$\r$\n\ $\r$\n\ Disable it in the Properties dialog of this file and try again." LangString MsgBoxSetupAlreadyRunning ${LANG_ENGLISH} \ "Legacy Update setup is already running." LangString MsgBoxInstallInProgress ${LANG_ENGLISH} \ "An update is currently being installed. Please wait for that installation to finish before running Legacy Update setup again." LangString MsgBoxTermsrvAppInstallMode ${LANG_ENGLISH} \ "Terminal Services is currently in Execute mode. To install Legacy Update, Terminal Services will be changed to Install mode." LangString MsgBoxPluginFailed ${LANG_ENGLISH} \ "Setup failed to initialize.$\r$\n\ $\r$\n\ The file may be corrupt. Try downloading Legacy Update again." ; Install errors LangString MsgBoxCopyFailed ${LANG_ENGLISH} \ 'Unable to write to "$0".$\r$\n\ $\r$\n\ If Internet Explorer is open, close it and click Retry.' FileErrorText $(MsgBoxCopyFailed) $(MsgBoxCopyFailed) LangString MsgBoxDownloadAbort ${LANG_ENGLISH} \ "Cancelling will terminate Legacy Update setup." LangString MsgBoxDownloadFailed ${LANG_ENGLISH} \ "$2 failed to download.$\r$\n\ $\r$\n\ $0 ($1)" LangString MsgBoxDownloadDNSError ${LANG_ENGLISH} \ "$2 failed to download.$\r$\n\ $\r$\n\ Legacy Update requires an internet connection to download additional components from Microsoft. Check your internet connection and try again.$\r$\n\ $\r$\n\ $0 ($1)" LangString MsgBoxHashFailed ${LANG_ENGLISH} \ "$2 failed to download.$\r$\n\ $\r$\n\ The downloaded file is corrupt. If this persists, a firewall or your internet service provider may be blocking the download." LangString MsgBoxInstallFailed ${LANG_ENGLISH} \ "$2 failed to install.$\r$\n\ $\r$\n\ $1 ($0)" LangString MsgBoxPatchNotFound ${LANG_ENGLISH} \ "$0 failed to install.$\r$\n\ $\r$\n\ The installed Windows language and/or architecture is not supported." LangString MsgBoxMUFailed ${LANG_ENGLISH} \ "Failed to enable Microsoft Update.$\r$\n\ $\r$\n\ $1 ($0)" ; Warnings LangString MsgBoxWES09NotSSE2Main ${LANG_ENGLISH} \ "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.$\r$\n\ For more information, visit http://legacyupdate.net/help/sse2." LangString MsgBoxWES09NotSSE2Block ${LANG_ENGLISH} \ "$(MsgBoxWES09NotSSE2Main)$\r$\n\ $\r$\n\ To protect your Windows installation from becoming damaged by incompatible updates, this option will be disabled." LangString MsgBoxWES09NotSSE2Pre ${LANG_ENGLISH} \ "Your current operating system is Windows Embedded 2009, or updates from Windows Embedded 2009 have been enabled on this system by another tool.$\r$\n\ $\r$\n\ $(MsgBoxWES09NotSSE2Main)" LangString MsgBoxActivateXP2002NotSP3 ${LANG_ENGLISH} \ "Windows XP must be updated to Service Pack 3 to activate over the internet. The Service Pack 3 update action will be enabled." LangString MsgBoxActivateXP2003NotSP2 ${LANG_ENGLISH} \ "Windows XP Professional x64 Edition or Windows Server 2003 must be updated to Service Pack 2 to activate over the internet. The Service Pack 2 update action will be enabled." LangString MsgBoxVistaSPInstall ${LANG_ENGLISH} \ "Your computer will restart several times to install Windows Vista Service Pack 2. Your screen may appear blank for an extended period of time. Do not turn off your computer during this process." LangString MsgBoxWUA2000Datacenter ${LANG_ENGLISH} \ "Windows Update Agent is not supported on Windows 2000 Datacenter Server. The Legacy Update action will be disabled." ; Statuses LangString StatusRestarting ${LANG_ENGLISH} "Restarting..." LangString StatusRestartingWUAU ${LANG_ENGLISH} "Restarting Windows Update service..." LangString StatusCheckingSSL ${LANG_ENGLISH} "Checking SSL connectivity..." LangString StatusCbsInstalling ${LANG_ENGLISH} "Configuring updates..." LangString StatusClosingIE ${LANG_ENGLISH} "Closing Internet Explorer windows..." ; Products LangString DX ${LANG_ENGLISH} "DirectX" LangString IE ${LANG_ENGLISH} "Internet Explorer" LangString MSI ${LANG_ENGLISH} "Windows Installer" LangString VB ${LANG_ENGLISH} "Visual Basic" LangString VC ${LANG_ENGLISH} "Visual C/C++" LangString WMP ${LANG_ENGLISH} "Windows Media Player" LangString Runtime ${LANG_ENGLISH} "Runtime" LangString Runtimes ${LANG_ENGLISH} "Runtimes" ; Editions LangString PRO ${LANG_ENGLISH} "Professional" LangString P64 ${LANG_ENGLISH} "Professional x64 Edition" LangString EMB ${LANG_ENGLISH} "Embedded" LangString SRV ${LANG_ENGLISH} "Server" LangString WTS ${LANG_ENGLISH} "Terminal Server" ; Update types LangString Setup ${LANG_ENGLISH} "Setup" LangString Update ${LANG_ENGLISH} "Update" LangString Updates ${LANG_ENGLISH} "Updates" LangString Rollup ${LANG_ENGLISH} "Update Rollup" LangString SP ${LANG_ENGLISH} "Service Pack" LangString PostSP ${LANG_ENGLISH} "Post-Service Pack" LangString SecUpd ${LANG_ENGLISH} "Security Update" LangString SSU ${LANG_ENGLISH} "Servicing Stack Update" LangString WUA ${LANG_ENGLISH} "Windows Update Agent" LangString PrepTool ${LANG_ENGLISH} "Preparation Tool" LangString PUS ${LANG_ENGLISH} "Platform Update Supplement" LangString SRP ${LANG_ENGLISH} "Security Rollup Package" LangString CRU ${LANG_ENGLISH} "Convenience Rollup Update" LangString SHA2 ${LANG_ENGLISH} "SHA-2 Code Signing Support Update" LangString CTL ${LANG_ENGLISH} "Certificate Trust List" LangString Unofficial ${LANG_ENGLISH} "(Unofficial)" LangString SectionWES09 ${LANG_ENGLISH} "Enable Windows Embedded 2009 updates" LangString SectionWS2008HVU ${LANG_ENGLISH} "Hyper-V $(Update) for Windows Server 2008" LangString SectionWHS2011U4 ${LANG_ENGLISH} "Windows Home Server 2011 $(Rollup) 4" LangString SectionW2KUR1 ${LANG_ENGLISH} "Update Rollup 1 for Windows 2000 $(SP) 4" LangString SectionSSU ${LANG_ENGLISH} "Windows Servicing Stack update" LangString SectionWUA ${LANG_ENGLISH} "Windows Update Agent update" LangString SectionRootCerts ${LANG_ENGLISH} "Root certificates store update" LangString SectionEnableMU ${LANG_ENGLISH} "Enable Microsoft Update" LangString SectionActivate ${LANG_ENGLISH} "Activate Windows" LangString SectionESU ${LANG_ENGLISH} "Prepare for Extended Security Updates" LangString SectionSupEULA ${LANG_ENGLISH} \ "By installing, you are agreeing to the Supplemental End User License Agreement for this update." LangString SectionMSLT ${LANG_ENGLISH} \ "By installing, you are agreeing to the Microsoft Software License Terms for this update." LangString SectionW2KSP4Desc ${LANG_ENGLISH} \ "Updates Windows 2000 to Service Pack 4 with Update Rollup 1, as required to install the Windows Update Agent.$\r$\n$(SectionSupEULA)" LangString SectionIE6SP1Desc ${LANG_ENGLISH} \ "Updates Internet Explorer to 6.0 SP1, as required for Legacy Update.$\r$\n$(SectionSupEULA)" LangString SectionXPSP3Desc ${LANG_ENGLISH} \ "Updates Windows XP to Service Pack 3. Required if you would like to activate Windows online.$\r$\n$(SectionSupEULA)" LangString SectionXPESP3Desc ${LANG_ENGLISH} \ "Updates Windows XP Embedded to Service Pack 3. Required if you would like to activate Windows online.$\r$\n$(SectionSupEULA)" LangString SectionWES09Desc ${LANG_ENGLISH} \ "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. This change can not be undone." LangString Section2003SP2Desc ${LANG_ENGLISH} \ "Updates Windows XP Professional x64 Edition or Windows Server 2003 to Service Pack 2. Required if you would like to activate Windows online.$\r$\n$(SectionSupEULA)" LangString SectionVistaSP2Desc ${LANG_ENGLISH} \ "Updates Windows Vista or Windows Server 2008 to Service Pack 2, as required to install the Windows Update Agent.$\r$\n$(SectionMSLT)" LangString SectionVistaSSUDesc ${LANG_ENGLISH} \ "Installs additional updates required to resolve issues with the Windows Update Agent." LangString SectionVistaESUDesc ${LANG_ENGLISH} \ "Installs additional updates that prepare the system to receive Extended Security Updates (ESU). This fixes Windows Update stalling at $\"Checking for updates$\", but may cause compatibility issues. Using ESU without a valid license is a violation of the Microsoft Software License Terms. This change can not be undone." LangString SectionVistaIE9Desc ${LANG_ENGLISH} \ "Updates Internet Explorer to 9.0, improving website compatibility.$\r$\n$(SectionMSLT)" LangString SectionWin7SP1Desc ${LANG_ENGLISH} \ "Updates Windows 7 or Windows Server 2008 R2 to Service Pack 1, as required to install the Windows Update Agent.$\r$\n$(SectionMSLT)" LangString SectionWin7CRUDesc ${LANG_ENGLISH} \ "Installs all updates released for Windows 7 and Windows Server 2008 R2 up to March 2016.$\r$\nThis update installs telemetry features that may not be desirable." LangString SectionWin7SSUDesc ${LANG_ENGLISH} \ "Updates Windows 7 or Windows Server 2008 R2 with additional updates required to resolve issues with the Windows Update Agent." LangString SectionWin8SSUDesc ${LANG_ENGLISH} \ "Updates Windows 8 or Windows Server 2012 with additional updates required to resolve issues with the Windows Update Agent." LangString SectionWin81U1Desc ${LANG_ENGLISH} \ "Updates Windows 8.1 to Update 1, as required to resolve issues with the Windows Update Agent. Also required to upgrade to Windows 10." LangString SectionWin81SSUDesc ${LANG_ENGLISH} \ "Updates Windows 8.1 or Windows Server 2012 R2 with additional updates required to resolve issues with the Windows Update Agent." LangString SectionWS2008HVUDesc ${LANG_ENGLISH} \ "Updates Windows Server 2008 to the released version of Hyper-V, as required to install Service Pack 2." LangString SectionWHS2011U4Desc ${LANG_ENGLISH} \ "Updates Windows Home Server 2011 to Update Rollup 4 to resolve issues with the Windows Update Agent. Also fixes data corruption problems." LangString SectionWUADesc ${LANG_ENGLISH} \ "Updates the Windows Update Agent to the latest version, as required for Legacy Update." LangString SectionRootCertsDesc ${LANG_ENGLISH} \ "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." LangString SectionEnableMUDesc ${LANG_ENGLISH} \ "Configures Windows Update to receive updates for Microsoft Office and other Microsoft software." LangString SectionActivateDesc ${LANG_ENGLISH} \ "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." LangString SectionActiveX2KXPDesc ${LANG_ENGLISH} \ "Installs the Legacy Update ActiveX control, enabling access to the full Windows Update interface via the legacyupdate.net website." LangString SectionActiveXVista78Desc ${LANG_ENGLISH} \ "Installs the Legacy Update ActiveX control, enabling access to the classic Windows Update interface via the legacyupdate.net website. Not required if you want to use the built-in Windows Update Control Panel." LangString SectionActiveXWin10Desc ${LANG_ENGLISH} \ "Installs the Legacy Update ActiveX control, enabling access to the classic Windows Update interface via the legacyupdate.net website." ; LangString SectionLegacyUpdateDesc ${LANG_ENGLISH} \ ; "Installs Legacy Update, enabling access to Windows Update." ; LangString SectionWUServerDesc ${LANG_ENGLISH} \ ; "Configures Windows Update to use the Legacy Update proxy server, resolving connection issues to the official Microsoft Windows Update service." ; NT 4.0 LangString MsgBoxNT4PostInstall ${LANG_ENGLISH} \ "Legacy Update is complete. Windows is up to date." LangString SectionWDU ${LANG_ENGLISH} \ "Windows Desktop Update" LangString SectionWDUYes ${LANG_ENGLISH} \ "Install Windows 98-style Explorer" LangString SectionWDUNo ${LANG_ENGLISH} \ "Keep Windows 95-style Explorer" LangString SectionNT4USB ${LANG_ENGLISH} \ "Inside Out Networks USB Peripheral Drivers" LangString SectionSPCleanup ${LANG_ENGLISH} \ "Delete update uninstall data" LangString SectionNT4WDUDesc ${LANG_ENGLISH} \ "Installs the updated Windows 98-style Explorer experience. This choice can not be changed later. Requires installing Internet Explorer 6." LangString SectionNT4WDUYesDesc ${LANG_ENGLISH} \ "$(SectionNT4WDUDesc)" LangString SectionNT4WDUNoDesc ${LANG_ENGLISH} \ "Keeps the Windows 95-style Explorer experience. This choice can not be changed later." LangString SectionNT4SP6ADesc ${LANG_ENGLISH} \ "Updates Windows NT 4.0 to Service Pack 6a with 128-bit encryption support.$\r$\n$(SectionSupEULA)" LangString SectionNT4RollupDesc ${LANG_ENGLISH} \ "Installs Windows NT 4.0 Service Pack 6a Security Rollup Package.$\r$\n$(SectionSupEULA)" LangString SectionNT4PostSPDesc ${LANG_ENGLISH} \ "Installs Windows NT 4.0 updates released after the Security Rollup Package.$\r$\n$(SectionSupEULA)" LangString SectionNT4MSIDesc ${LANG_ENGLISH} \ "Installs Windows Installer, required to install newer applications.$\r$\n$(SectionSupEULA)" LangString SectionNT4VCRTDesc ${LANG_ENGLISH} \ "Installs updated versions of the Microsoft Visual C, Visual C++, and Visual Basic runtimes, required to run newer applications.$\r$\n$(SectionSupEULA)" LangString SectionNT4IE6SP1Desc ${LANG_ENGLISH} \ "Installs Internet Explorer 6. Required for Windows Desktop Update.$\r$\n$(SectionSupEULA)" LangString SectionNT4WMP64Desc ${LANG_ENGLISH} \ "Installs Windows Media Player 6.4.$\r$\n$(SectionSupEULA)" LangString SectionNT4DX5Desc ${LANG_ENGLISH} \ "Installs DirectX 5. This is an unofficial patch. Microsoft officially supports only up to DirectX 3 on Windows NT 4.0.$\r$\n$(SectionSupEULA)" LangString SectionNT4USBDesc ${LANG_ENGLISH} \ "Installs the Inside Out Networks USB Peripheral Drivers, enabling access to USB devices.$\r$\nBy installing, you are agreeing to the Inside Out Networks Edgeport for NT 4.0 License Agreement." LangString SectionSPCleanupDesc ${LANG_ENGLISH} \ "Deletes backup files created during installation of updates. This frees up disk space, but you will not be able to uninstall updates." ; Components page LangString ComponentsPageTitle ${LANG_ENGLISH} "Welcome to Legacy Update" LangString ComponentsPageText ${LANG_ENGLISH} "Select what you would like Legacy Update 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." ; Install page LangString InstFilesPageTitle ${LANG_ENGLISH} "Performing Actions" ; Uninstall confirm page LangString UnConfirmPageTitle ${LANG_ENGLISH} "Uninstall Legacy Update" LangString UnConfirmPageText ${LANG_ENGLISH} "Legacy Update will be uninstalled. Your Windows Update configuration will be reset to directly use Microsoft servers." ; ActiveX page LangString ActiveXPageTitle ${LANG_ENGLISH} "How do you want to use Windows Update?" LangString ActiveXPageText ${LANG_ENGLISH} "Legacy Update configures Windows Update to use the Legacy Update proxy server, resolving connection issues to the official Microsoft Windows Update service. You can choose between two options to access Windows Update." LangString ActiveXPageYesTitle ${LANG_ENGLISH} "Use the Legacy Update website" LangString ActiveXPageYesTextVista ${LANG_ENGLISH} "The Legacy Update website is a replacement for the original Windows Update website. If you select this, you can still use the Windows Update Control Panel." LangString ActiveXPageYesText2KXP ${LANG_ENGLISH} "The Legacy Update website is a replacement for the original Windows Update website, allowing you to download optional updates and drivers." LangString ActiveXPageNoTitleVista ${LANG_ENGLISH} "Use the Windows Update Control Panel" LangString ActiveXPageNoTextVista ${LANG_ENGLISH} "Legacy Update is compatible with the built-in Windows Update Control Panel. Make sure to check for updates $\"managed by your system administrator$\" to use the Legacy Update proxy server" LangString ActiveXPageNoTitle2KXP ${LANG_ENGLISH} "Use Automatic Updates" LangString ActiveXPageNoText2KXP ${LANG_ENGLISH} "Use the built-in Automatic Updates feature to download and install updates. You will only be able to download critical updates." ; Reboot page LangString RebootPageTitle ${LANG_ENGLISH} "Restarting Windows" LangString RebootPageText ${LANG_ENGLISH} "Your computer will not be up to date until you restart it. Save any open files, and then restart the computer.$\r$\n\ $\r$\n\ Setup will resume after restarting. Your computer may restart several times to complete installation." LangString RebootPageTimer ${LANG_ENGLISH} "Restarting in " LangString RebootPageRestart ${LANG_ENGLISH} "Restart" LangString RebootPageLater ${LANG_ENGLISH} "Later" ================================================ FILE: setup/UpdateRoots.nsh ================================================ !macro -SetSecureProtocolsBitmask root path key ReadRegDword $0 ${root} "${path}" "${key}" ${VerbosePrint} "${root}\${path}" ${VerbosePrint} "Before: $0" ; 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} ${VerbosePrint} "After: $0" WriteRegDword ${root} "${path}" "${key}" $0 !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 !insertmacro -SetSecureProtocolsBitmask HKLM "${REGPATH_INETSETTINGS}" "SecureProtocols" !insertmacro -SetSecureProtocolsBitmask HKCU "${REGPATH_INETSETTINGS}" "SecureProtocols" ; Enable WinHTTP TLSv1.1 and v1.2 !insertmacro -SetSecureProtocolsBitmask HKLM "${REGPATH_INETSETTINGS_WINHTTP}" "DefaultSecureProtocols" !insertmacro -SetSecureProtocolsBitmask HKCU "${REGPATH_INETSETTINGS_WINHTTP}" "DefaultSecureProtocols" ; 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 ${VerbosePrint} "Configuring crypto (native)" Call _ConfigureCrypto ; Repeat in the WOW64 registry if needed ${If} ${RunningX64} ${VerbosePrint} "Configuring crypto (WOW64)" SetRegView 32 Call _ConfigureCrypto SetRegView 64 ${EndIf} FunctionEnd !macro _DownloadSST name !insertmacro Download "$(CTL) (${name})" "${TRUSTEDR}/${name}.sst" "${name}.sst" "" 0 !macroend Function DownloadRoots ${DetailPrint} "$(Downloading)$(CTL)..." !insertmacro _DownloadSST authroots !insertmacro _DownloadSST delroots !insertmacro _DownloadSST roots !insertmacro _DownloadSST updroots !insertmacro _DownloadSST disallowedcert FunctionEnd !macro _InstallRoots state store file LegacyUpdateNSIS::UpdateRoots ${state} ${store} "${file}" Pop $0 ${If} $0 != 0 LegacyUpdateNSIS::MessageForHresult $0 Pop $1 StrCpy $2 "$(CTL) (${file})" MessageBox MB_USERICON "$(MsgBoxInstallFailed)" /SD IDOK SetErrorLevel $0 Abort ${EndIf} !macroend Function UpdateRoots ${DetailPrint} "$(Installing)$(CTL)..." !insertmacro _InstallRoots /update AuthRoot authroots.sst !insertmacro _InstallRoots /update AuthRoot updroots.sst !insertmacro _InstallRoots /update Root roots.sst !insertmacro _InstallRoots /delete AuthRoot delroots.sst !insertmacro _InstallRoots /update Disallowed disallowedcert.sst WriteRegStr HKLM "${REGPATH_COMPONENTS}\${ROOTSUPDATE_GUID}" "" "RootsUpdate" WriteRegDword HKLM "${REGPATH_COMPONENTS}\${ROOTSUPDATE_GUID}" "IsInstalled" 1 WriteRegStr HKLM "${REGPATH_COMPONENTS}\${ROOTSUPDATE_GUID}" "Version" "1337,0,2195,0" WriteRegStr HKLM "${REGPATH_COMPONENTS}\${ROOTSUPDATE_GUID}" "Locale" "*" WriteRegStr HKLM "${REGPATH_COMPONENTS}\${ROOTSUPDATE_GUID}" "ComponentID" "Windows Roots Update" LegacyUpdateNSIS::SetRootsUpdateTime FunctionEnd ================================================ FILE: setup/Win32.nsh ================================================ ; advapi32 !define GetUserName 'advapi32::GetUserName(t, *i) i' ; cbscore !define CBS_EXECUTE_STATE_NONE -1 ; Officially -1 in cbscore.dll, but underflows in the registry. !define CBS_EXECUTE_STATE_NONE2 0xffffffff ; We can get one or the other depending on the OS. ; kernel32 !define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 !define ES_CONTINUOUS 0x80000000 !define ES_SYSTEM_REQUIRED 0x00000001 !define GetVersion 'kernel32::GetVersion() i' !define GetVersionEx 'kernel32::GetVersionEx(pr) i' !define IsProcessorFeaturePresent 'kernel32::IsProcessorFeaturePresent(i) i' !define SetThreadExecutionState 'kernel32::SetThreadExecutionState(i) i' !define OpenEvent 'kernel32::OpenEvent(i, i, t) i' !define OpenMutex 'kernel32::OpenMutex(i, i, t) i' !define CreateMutex 'kernel32::CreateMutex(i, i, t) i' !define SetEvent 'kernel32::SetEvent(i) i' !define CloseHandle 'kernel32::CloseHandle(i) i' !define DeleteFile 'kernel32::DeleteFile(t) i' !define TermsrvAppInstallMode 'kernel32::TermsrvAppInstallMode() i' !define SetTermsrvAppInstallMode 'kernel32::SetTermsrvAppInstallMode(i) i' !define SetEnvironmentVariable 'kernel32::SetEnvironmentVariable(t, t) i' ; ntdll !define RtlGetNtVersionNumbers 'ntdll::RtlGetNtVersionNumbers(*i, *i, *i)' ; shell32 !define RestartDialog 'shell32::RestartDialog(p, t, i) i' ; user32 !define EWX_REBOOT 0x02 !define PBS_SMOOTH 0x02 !define PBS_MARQUEE 0x08 !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 ; 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 !define ERROR_INTERNET_NAME_NOT_RESOLVED 12007 !define ERROR_INTERNET_OPERATION_CANCELLED 12017 ; winlogon !define SETUP_TYPE_NORMAL 0 !define SETUP_TYPE_NOREBOOT 2 !define SETUP_SHUTDOWN_REBOOT 1 ; 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" ================================================ FILE: setup/WinVer.nsh ================================================ ; 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_NT4 0x0400 ; 4.0.1381 !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_10TP 0x0604 ; 6.4.9841-9883 !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_NT4 1381 !define WINVER_BUILD_2000 2195 !define WINVER_BUILD_XP2002 2600 !define WINVER_BUILD_XP2003 3790 !define WINVER_BUILD_VISTA 6000 !define WINVER_BUILD_VISTA_SP1 6001 !define WINVER_BUILD_VISTA_SP2 6002 !define WINVER_BUILD_VISTA_ESU 6003 !define WINVER_BUILD_7 7600 !define WINVER_BUILD_7_SP1 7601 !define WINVER_BUILD_8 9200 !define WINVER_BUILD_8.1 9600 !define WINVER_BUILD_10 10240 !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 since XP) !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 !endif StrCmp $__WINVEROS "" _winver_noveryet Return _winver_noveryet: GetWinVer $__WINVEROS NTDDIMajMin GetWinVer $__WINVERBUILD Build GetWinVer $__WINVERSP ServicePack !macroend !macro __WinVer_InitEx !ifndef __WINVER_VARS_DECLARED_EX !define __WINVER_VARS_DECLARED_EX Var /GLOBAL __WINVERSUITE Var /GLOBAL __WINVERPROD !endif StrCmp $__WINVERSUITE "" _winver_noveryet_ex Return _winver_noveryet_ex: Push $0 Push $1 Push $2 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 .r2, b)' System::Free $0 StrCpy $__WINVERSUITE $1 StrCpy $__WINVERPROD $2 Pop $2 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_TestSuite _a num _t _f !insertmacro _LOGICLIB_TEMP ${CallArtificialFunction} __WinVer_InitEx IntOp $_LOGICLIB_TEMP $__WINVERSUITE & ${num} !insertmacro _= $_LOGICLIB_TEMP ${num} `${_t}` `${_f}` !macroend !macro __WinVer_TestProduct op num _t _f ${CallArtificialFunction} __WinVer_InitEx !insertmacro _${op} $__WINVERPROD ${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 !macro __WinVer_TestXPWPAEdition _a key _t _f !insertmacro _LOGICLIB_TEMP ReadRegDword $_LOGICLIB_TEMP HKLM "${REGPATH_WPA}\${key}" "Installed" !insertmacro _= $_LOGICLIB_TEMP 1 `${_t}` `${_f}` !macroend ; Defines ; TODO: This is apparently insufficient prior to NT4 SP6? !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 IsDatacenter `"" _WinVer_TestSuite ${VER_SUITE_DATACENTER}` !define IsTerminalServer `"" _WinVer_TestSuite ${VER_SUITE_TERMINAL}` !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 !macro __WinVer_DefineXPWPAEdition key !define IsWinXP${key} `= _WinVer_TestXPWPAEdition ${key}` !macroend !insertmacro __WinVer_DefineClient NT4 !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 !insertmacro __WinVer_DefineXPWPAEdition MediaCenter !insertmacro __WinVer_DefineXPWPAEdition TabletPC !insertmacro __WinVer_DefineXPWPAEdition WES !insertmacro __WinVer_DefineXPWPAEdition POSReady ================================================ FILE: setup/codebase/lucontrl.ddf ================================================ .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 ================================================ FILE: setup/codebase/setup.inf ================================================ [Version] Signature="$CHICAGO$" AdvancedINF=2.0 [Setup Hooks] setup=setup [setup] run="%EXTRACT_DIR%\setup.exe" /activex ================================================ FILE: setup/codebase/test.html ================================================ ================================================ FILE: setup/patches/.gitignore ================================================ # Only commit redists **/* !.gitignore !redist !redist/**/* ================================================ FILE: setup/resource.c ================================================ void DllMain() {} ================================================ FILE: setup/resource.h ================================================ // Root dialog #define IDD_INST 105 #define IDC_BACK 3 #define IDC_CHILDRECT 1018 #define IDC_VERSTR 1028 // Common #define IDC_INTROTEXT 1006 #define IDC_EDIT1 1000 // License #define IDD_LICENSE 102 #define IDC_LICENSEAGREE 1034 #define IDC_LICENSEDISAGREE 1035 // License - radio buttons #define IDD_LICENSE_FSRB 108 // License - checkbox #define IDD_LICENSE_FSCB 109 // Directory #define IDD_DIR 103 #define IDC_DIR 1019 #define IDC_BROWSE 1001 #define IDC_CHECK1 1008 #define IDC_SELDIRTEXT 1020 #define IDC_SPACEREQUIRED 1023 #define IDC_SPACEAVAILABLE 1024 // Components #define IDD_SELCOM 104 #define IDC_TREE1 1032 #define IDC_COMBO1 1017 #define IDC_TEXT1 1021 #define IDC_TEXT2 1022 // Install files #define IDD_INSTFILES 106 #define IDC_LIST1 1016 #define IDC_PROGRESS 1004 #define IDC_SHOWDETAILS 1027 // Uninstall #define IDD_UNINST 107 #define IDC_UNINSTFROM 1029 // Verifying #define IDD_VERIFY 111 #define IDI_ICON2 103 #define IDC_STR 1030 ================================================ FILE: setup/resource.rc ================================================ #include "resource.h" #include #include #define OUTER_WIDTH 363 #define OUTER_HEIGHT 246 #define INNER_LEFT 25 #define INNER_WIDTH 325 #define INNER_HEIGHT 131 #define INNER_WIDTH_ALIGNED INNER_WIDTH - 12 ///////////////////////////////////////////////////////////////////////////// // English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(65001) ///////////////////////////////////////////////////////////////////////////// // // Dialogs // IDD_INST DIALOGEX 0, 0, OUTER_WIDTH, OUTER_HEIGHT STYLE DS_SHELLFONT | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_WINDOWEDGE | WS_EX_APPWINDOW CAPTION "Template" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Bottom divider LTEXT "", 6900, 0, OUTER_HEIGHT - 26, OUTER_WIDTH + 2, 1, SS_ETCHEDHORZ | WS_CHILD | WS_GROUP // Bottom background LTEXT "", 6901, 0, OUTER_HEIGHT - 25, OUTER_WIDTH, 25, WS_CHILD | WS_GROUP // Buttons PUSHBUTTON "Back", IDABORT, OUTER_WIDTH - 148, OUTER_HEIGHT - 20, 45, 14, BS_PUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Next", IDOK, OUTER_WIDTH - 102, OUTER_HEIGHT - 20, 45, 14, BS_PUSHBUTTON | WS_TABSTOP PUSHBUTTON "Cancel", IDCANCEL, OUTER_WIDTH - 52, OUTER_HEIGHT - 20, 45, 14, BS_PUSHBUTTON | WS_TABSTOP // Branding LTEXT "Branding", IDC_VERSTR, INNER_LEFT, OUTER_HEIGHT - 17, OUTER_WIDTH - 183, 11, WS_DISABLED // Inner content LTEXT "", IDC_CHILDRECT, INNER_LEFT, 75, INNER_WIDTH, INNER_HEIGHT, SS_BLACKRECT | WS_GROUP | NOT WS_VISIBLE // Title LTEXT "Title", 1037, INNER_LEFT, 52, INNER_WIDTH, 36, 0 // Top divider LTEXT "", 1047, 0, 40, OUTER_WIDTH + 2, 1, SS_ETCHEDHORZ | WS_CHILD | WS_GROUP // Banner LTEXT "", 1046, 0, 0, OUTER_WIDTH, 40, SS_BITMAP | WS_CHILD END IDD_LICENSE DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CAPTION FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Unused CONTROL "", IDC_EDIT1, "RichEdit20W", ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 0, 0, 0, 0 END IDD_DIR DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Unused EDITTEXT IDC_DIR, 0, 0, 0, 0, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP PUSHBUTTON "", IDC_BROWSE, 0, 0, 0, 0, BS_PUSHBUTTON | WS_TABSTOP END IDD_SELCOM DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Intro text LTEXT "Text\nText\nText", IDC_INTROTEXT, 0, 0, INNER_WIDTH, 31, 0 // Selection CONTROL "", IDC_TREE1, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | WS_BORDER | WS_TABSTOP, 0, 32, INNER_WIDTH_ALIGNED, 60 // Description LTEXT "", 1043, 0, 99, INNER_WIDTH, 32, 0 // Unused COMBOBOX IDC_COMBO1, 0, 0, 0, 0, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | NOT WS_VISIBLE END IDD_INSTFILES DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Show details PUSHBUTTON "", IDC_SHOWDETAILS, 0, 33, 60, 14, BS_PUSHBUTTON // Progress CONTROL "", IDC_PROGRESS, "msctls_progress32", WS_BORDER, 0, 16, INNER_WIDTH_ALIGNED, 10 // Intro text LTEXT "", IDC_INTROTEXT, 0, 0, INNER_WIDTH, 16, SS_LEFTNOWORDWRAP | SS_NOPREFIX // Details list CONTROL "", IDC_LIST1, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP | NOT WS_VISIBLE, 0, 33, INNER_WIDTH_ALIGNED, INNER_HEIGHT - 34 END IDD_UNINST DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Uninstall path label LTEXT "", IDC_UNINSTFROM, 0, 42, 65, 8, 0 // Uninstall path EDITTEXT IDC_EDIT1, 70, 40, INNER_WIDTH_ALIGNED - 79, 12, ES_AUTOHSCROLL | ES_READONLY | WS_BORDER | WS_TABSTOP // Intro text LTEXT "", IDC_INTROTEXT, 0, 0, INNER_WIDTH, 30, 0 END IDD_LICENSE_FSRB DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CAPTION FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Unused CONTROL "", IDC_EDIT1, "RichEdit20W", ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 0, 0, 0, 0 PUSHBUTTON "", IDC_LICENSEAGREE, 0, 0, 0, 0, BS_AUTORADIOBUTTON | WS_TABSTOP PUSHBUTTON "", IDC_LICENSEDISAGREE, 0, 0, 0, 0, BS_AUTORADIOBUTTON | WS_TABSTOP END IDD_LICENSE_FSCB DIALOGEX 0, 0, INNER_WIDTH, INNER_HEIGHT STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CAPTION FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Unused CONTROL "", IDC_EDIT1, "RichEdit20W", ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 0, 0, 0, 0 PUSHBUTTON "", IDC_LICENSEAGREE, 0, 0, 0, 0, BS_AUTOCHECKBOX | WS_TABSTOP END IDD_VERIFY DIALOGEX 0, 0, 167, 43 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN // Status CTEXT "", IDC_STR, 40, 26, 120, 10, 0 // Icon ICON IDI_ICON2, -1, 10, 11, 21, 20, 0 // Loading text CTEXT "Please wait while Setup is loading...", 76, 40, 10, 120, 16, 0 END #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// ================================================ FILE: setup/setup-nt4.nsi ================================================ !include Constants.nsh Name "${NAME}" Caption "${NAME}" BrandingText "${NAME} ${VERSION} - ${DOMAIN}" OutFile "LegacyUpdateNT-${VERSION}.exe" InstallDir "$PROGRAMFILES32\Legacy Update" InstallDirRegKey HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "InstallLocation" 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" VIAddVersionKey /LANG=1033 "LegalCopyright" "${U+00A9} Hashbang Productions. All rights reserved." VIAddVersionKey /LANG=1033 "FileDescription" "${NAME}" VIAddVersionKey /LANG=1033 "FileVersion" "${LONGVERSION}" VIProductVersion ${LONGVERSION} VIFileVersion ${LONGVERSION} ReserveFile "${NSIS_TARGET}\System.dll" ReserveFile "${NSIS_TARGET}\NSxfer.dll" ReserveFile "${NSIS_TARGET}\LegacyUpdateNSIS.dll" ReserveFile "banner-wordmark-nt4.bmp" ReserveFile "banner-wordmark-nt4-low.bmp" ReserveFile "PatchesNT4.ini" !define RUNONCEDIR "$COMMONPROGRAMDATA\Legacy Update" !define MUI_UI "obj\resource.dll" !define MUI_UI_HEADERIMAGE "obj\resource.dll" !define MUI_COMPONENTSPAGE_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\classic.bmp" !define MUI_CUSTOMFUNCTION_ABORT CleanUp !define MUI_ICON "..\LegacyUpdate\icon.ico" !define MUI_UNICON "..\LegacyUpdate\icon.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "banner-wordmark-nt4.bmp" !define MUI_HEADERIMAGE_UNBITMAP "banner-wordmark-nt4.bmp" !define MUI_TEXT_ABORT_TITLE "Installation Failed" !define MEMENTO_REGISTRY_ROOT HKLM !define MEMENTO_REGISTRY_KEY "${REGPATH_LEGACYUPDATE_SETUP}" !include FileFunc.nsh !include Integration.nsh !include LogicLib.nsh !include Memento.nsh !include MUI2.nsh !include nsDialogs.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 PatchInstall.nsh !include RunOnce.nsh !include AeroWizard.nsh !include DownloadIE.nsh !include DownloadNT4.nsh !include UpdateRoots.nsh !insertmacro GetParameters !insertmacro GetOptions !define MUI_PAGE_HEADER_TEXT "$(ComponentsPageTitle)" !define MUI_COMPONENTSPAGE_TEXT_TOP "$(ComponentsPageText)" !define MUI_PAGE_CUSTOMFUNCTION_PRE ComponentsPageCheck !define MUI_PAGE_CUSTOMFUNCTION_SHOW OnShow !define MUI_PAGE_FUNCTION_GUIINIT OnShow !insertmacro MUI_PAGE_COMPONENTS !define MUI_PAGE_HEADER_TEXT "$(InstFilesPageTitle)" !define MUI_PAGE_CUSTOMFUNCTION_SHOW OnShow !insertmacro MUI_PAGE_INSTFILES !include Strings.nsh Function OnShow Call AeroWizardOnShow FunctionEnd Section -BeforeInstall !insertmacro InhibitSleep 1 SectionEnd Section -PreDownload ${IfNot} ${IsRunOnce} ${AndIfNot} ${IsPostInstall} Call PreDownload ${EndIf} SectionEnd Section - PREREQS_START SectionEnd SectionGroup /e "$(SectionWDU)" NT4WDU ${MementoSection} "$(SectionWDUYes)" NT4WDUYes ; No-op; used during IE5.5 install ${MementoSectionEnd} ${MementoSection} "$(SectionWDUNo)" NT4WDUNo ; No-op; used during IE5.5 install ${MementoSectionEnd} SectionGroupEnd SectionGroup /e "Windows NT 4.0 $(Updates)" NT4Updates Section "Windows NT 4.0 $(SP) 6a" NT4SP6A SectionIn Ro Call InstallNT4SP6A ; SP6I386 Call RebootIfRequired SectionEnd Section "Windows NT 4.0 $(SRP)" NT4ROLLUP SectionIn Ro Call InstallNT4Rollup ; Q299444 SectionEnd Section "Windows NT 4.0 $(PostSP) 6a $(Updates)" NT4POSTSP SectionIn Ro ; Workstation/Server Call InstallKB243649 Call InstallKB304158 Call InstallKB314147 Call InstallKB318138 Call InstallKB320206 Call InstallKB326830 Call InstallKB329115 Call InstallKB810833 Call InstallKB815021 Call InstallKB817606 Call InstallKB819696 ; Server-only Call InstallKB823182 Call InstallKB823803 Call InstallKB824105 Call InstallKB824141 Call InstallKB824146 Call InstallKB825119 Call InstallKB828035 Call InstallKB828741 Call InstallNT4KB835732 Call InstallKB839645 Call InstallKB841533 Call InstallKB841872 Call InstallKB870763 Call InstallKB873339 Call InstallKB873350 Call InstallKB885249 Call InstallKB885834 Call InstallKB885835 Call InstallKB885836 Call InstallKB891711 Call RebootIfRequired SectionEnd SectionGroupEnd SectionGroup /e "$(Runtimes)" NT4Runtimes ${MementoSection} "$(MSI)" NT4MSI Call InstallMSI ${MementoSectionEnd} ${MementoSection} "Microsoft $(VC) and $(VB) $(Runtimes)" NT4VCRT Call InstallNT4VCRT Call InstallNT4VB6 Call InstallNT4MFCOLE ${MementoSectionEnd} ${MementoSection} "$(IE) 6.0 $(SP) 1" NT4IE6SP1 Call InstallIE6 Call RebootIfRequired ${MementoSectionEnd} ${MementoSection} "$(WMP) 6.4" NT4WMP64 Call InstallNT4WMP64 ${MementoSectionEnd} ${MementoSection} "$(DX) 5 $(Unofficial)" NT4DX5 Call InstallNT4DX5 ${MementoSectionEnd} SectionGroupEnd ${MementoSection} "$(SectionRootCerts)" ROOTCERTS Call ConfigureCrypto ${IfNot} ${IsPostInstall} Call UpdateRoots ${EndIf} ${MementoSectionEnd} ${MementoSection} "$(SectionNT4USB)" NT4USB Call InstallNT4USB ${MementoSectionEnd} ${MementoUnselectedSection} "$(SectionSPCleanup)" SPCLEANUP Call CleanUpSPUninstall ${MementoSectionEnd} Section - PREREQS_END SectionEnd ${MementoSectionDone} !macro DESCRIPTION_STRING section !insertmacro MUI_DESCRIPTION_TEXT ${${section}} "$(Section${section}Desc)" !macroend !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro DESCRIPTION_STRING NT4WDU !insertmacro DESCRIPTION_STRING NT4WDUYes !insertmacro DESCRIPTION_STRING NT4WDUNo !insertmacro DESCRIPTION_STRING NT4SP6A !insertmacro DESCRIPTION_STRING NT4ROLLUP !insertmacro DESCRIPTION_STRING NT4POSTSP !insertmacro DESCRIPTION_STRING NT4MSI !insertmacro DESCRIPTION_STRING NT4VCRT !insertmacro DESCRIPTION_STRING NT4IE6SP1 !insertmacro DESCRIPTION_STRING NT4WMP64 !insertmacro DESCRIPTION_STRING NT4DX5 !insertmacro DESCRIPTION_STRING ROOTCERTS !insertmacro DESCRIPTION_STRING SPCLEANUP !insertmacro MUI_FUNCTION_DESCRIPTION_END Function .onInit Call InitChecks ${MementoSectionRestore} SetOutPath $PLUGINSDIR File Patches.ini SetOutPath "${RUNONCEDIR}" FunctionEnd Function ComponentsPageCheck ; Skip the page if we're being launched with /runonce, /postinstall, or /passive ${If} ${IsRunOnce} ${OrIf} ${IsPostInstall} ${OrIf} ${IsPassive} Abort ${EndIf} FunctionEnd Function PreDownload ${If} ${SectionIsSelected} ${SPCLEANUP} StrCpy $SPCleanup 1 ${EndIf} ${If} ${SectionIsSelected} ${NT4IE6SP1} Call DownloadIE6 ${EndIf} ${If} ${SectionIsSelected} ${ROOTCERTS} Call DownloadRoots ${EndIf} FunctionEnd Function PostInstall MessageBox MB_OK|MB_USERICON \ "$(MsgBoxNT4PostInstall)" \ /SD IDOK FunctionEnd Function CleanUp ; Called only after all tasks have completed Call CleanUpRunOnce !insertmacro InhibitSleep 0 ${If} ${IsRunOnce} Call OnRunOnceDone ${Else} ${If} ${IsPostInstall} ${OrIfNot} ${RebootFlag} Call CleanUpRunOnceFinal ${EndIf} ${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 ${MementoSectionSave} Call CleanUp FunctionEnd Function .onSelChange ; Nothing for now FunctionEnd ================================================ FILE: setup/setup.nsi ================================================ !include Constants.nsh Name "${NAME}" Caption "${NAME}" BrandingText "${NAME} ${VERSION} - ${DOMAIN}" OutFile "LegacyUpdate-${VERSION}.exe" InstallDir "$PROGRAMFILES64\Legacy Update" InstallDirRegKey HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "InstallLocation" Unicode true RequestExecutionLevel admin AutoCloseWindow true ManifestSupportedOS all ManifestDPIAware true AllowSkipFiles off !if ${DEBUG} == 1 SetCompress off !else SetCompressor /SOLID lzma !endif VIAddVersionKey /LANG=1033 "ProductName" "${NAME}" VIAddVersionKey /LANG=1033 "ProductVersion" "${LONGVERSION}" VIAddVersionKey /LANG=1033 "CompanyName" "Hashbang Productions" VIAddVersionKey /LANG=1033 "LegalCopyright" "${U+00A9} Hashbang Productions. All rights reserved." VIAddVersionKey /LANG=1033 "FileDescription" "${NAME}" VIAddVersionKey /LANG=1033 "FileVersion" "${LONGVERSION}" VIProductVersion ${LONGVERSION} VIFileVersion ${LONGVERSION} ReserveFile "${NSIS_TARGET}\System.dll" ReserveFile "${NSIS_TARGET}\NSxfer.dll" ReserveFile "${NSIS_TARGET}\LegacyUpdateNSIS.dll" ReserveFile "banner-wordmark-classic.bmp" ReserveFile "Patches.ini" ReserveFile "..\LegacyUpdate\obj\LegacyUpdate32.dll" ReserveFile "..\LegacyUpdate\obj\LegacyUpdate64.dll" ReserveFile "..\launcher\obj\LegacyUpdate32.exe" ReserveFile "..\launcher\obj\LegacyUpdate64.exe" Var /GLOBAL UninstallInstalled !define RUNONCEDIR "$COMMONPROGRAMDATA\Legacy Update" !define MUI_UI "obj\resource.dll" !define MUI_UI_HEADERIMAGE "obj\resource.dll" !define MUI_CUSTOMFUNCTION_UNGUIINIT un.OnShow !define MUI_CUSTOMFUNCTION_ABORT CleanUp !define MUI_ICON "..\LegacyUpdate\icon.ico" !define MUI_UNICON "..\LegacyUpdate\icon_small.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "banner-wordmark-classic.bmp" !define MUI_HEADERIMAGE_UNBITMAP "banner-wordmark-classic.bmp" !define MUI_TEXT_ABORT_TITLE "Installation Failed" !define MEMENTO_REGISTRY_ROOT HKLM !define MEMENTO_REGISTRY_KEY "${REGPATH_LEGACYUPDATE_SETUP}" !include FileFunc.nsh !include Integration.nsh !include LogicLib.nsh !include Memento.nsh !include MUI2.nsh !include nsDialogs.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 PatchInstall.nsh !include RunOnce.nsh !include AeroWizard.nsh !include Download2KXP.nsh !include DownloadIE.nsh !include DownloadVista78.nsh !include UpdateRoots.nsh ; !include ActiveXPage.nsh !include RebootPage.nsh !insertmacro GetParameters !insertmacro GetOptions !define MUI_PAGE_HEADER_TEXT "$(ComponentsPageTitle)" !define MUI_COMPONENTSPAGE_TEXT_TOP "$(ComponentsPageText)" !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 ; Page custom ActiveXPage !define MUI_PAGE_HEADER_TEXT "$(InstFilesPageTitle)" !define MUI_PAGE_CUSTOMFUNCTION_SHOW OnShow !insertmacro MUI_PAGE_INSTFILES Page custom RebootPage !define MUI_PAGE_HEADER_TEXT "$(UnConfirmPageTitle)" !define MUI_UNCONFIRMPAGE_TEXT_TOP "$(UnConfirmPageText)" !define MUI_PAGE_CUSTOMFUNCTION_SHOW un.OnShow !insertmacro MUI_UNPAGE_CONFIRM !define MUI_PAGE_HEADER_TEXT "$(InstFilesPageTitle)" !define MUI_PAGE_CUSTOMFUNCTION_SHOW un.OnShow !insertmacro MUI_UNPAGE_INSTFILES !include Strings.nsh !macro RestartWUAUService ${DetailPrint} "$(StatusRestartingWUAU)" LegacyUpdateNSIS::Exec '"$WINDIR\system32\net.exe" stop wuauserv' !macroend Function OnShow Call AeroWizardOnShow FunctionEnd Function un.OnShow Call un.AeroWizardOnShow FunctionEnd Function MakeUninstallEntry ${IfNot} $UninstallInstalled == 1 StrCpy $UninstallInstalled 1 SetOutPath $INSTDIR WriteUninstaller "$INSTDIR\Uninstall.exe" ; Add uninstall entry WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayName" "${NAME}" WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayIcon" '"$INSTDIR\LegacyUpdate.exe",-100' WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "DisplayVersion" "${VERSION}" WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "Publisher" "${NAME}" WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "URLInfoAbout" "${WEBSITE}" WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "InstallLocation" "$INSTDIR" WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "UninstallString" '"$INSTDIR\Uninstall.exe"' WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "QuietUninstallString" '"$INSTDIR\Uninstall.exe" /S' WriteRegDword HKLM "${REGPATH_UNINSTSUBKEY}" "NoModify" 1 WriteRegDword HKLM "${REGPATH_UNINSTSUBKEY}" "NoRepair" 1 ${MakeARPInstallDate} $0 WriteRegStr HKLM "${REGPATH_UNINSTSUBKEY}" "InstallDate" $0 ${EndIf} FunctionEnd Section -BeforeInstall PREREQS_START !insertmacro InhibitSleep 1 ${IfNot} ${IsRunOnce} ${AndIfNot} ${IsPostInstall} ; Download files Call PreDownload ; If a reboot is pending, do it now ReadRegDword $0 HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "RebootPending" ${If} $0 == 1 SetRebootFlag true ${RebootIfRequired} ${EndIf} ${IfNot} ${AtLeastWin10} Call RebootIfCbsRebootPending ${EndIf} !if ${DEBUG} == 1 ${If} ${TestRunOnce} SetRebootFlag true ${RebootIfRequired} ${EndIf} !endif ${Else} ; Wait for packages to install if needed Call PollCbsInstall ${EndIf} SectionEnd ; Win2k prerequisities Section "$(IE) 6.0 $(SP) 1" IE6SP1 SectionIn Ro ${RebootIfRequired} Call InstallIE6 ${RebootIfRequired} SectionEnd Section "Windows 2000 $(SP) 4" W2KSP4 SectionIn Ro ${RebootIfRequired} Call InstallW2KSP4 Call InstallW2KUR1 Call FixW2KUR1 ${RebootIfRequired} SectionEnd ; XP 2002 prerequisities ${MementoSection} "Windows XP $(SP) 3" XPSP3 ${RebootIfRequired} ${If} ${IsWinXPMediaCenter} ${OrIf} ${IsWinXPTabletPC} Call InstallXPSP2 ${Else} Call InstallXPSP1a ${EndIf} ${RebootIfRequired} Call InstallXPSP3 ${RebootIfRequired} ${MementoSectionEnd} ${MementoSection} "Windows XP $(EMB) $(SP) 3" XPESP3 ${RebootIfRequired} Call InstallXPESP3 ${RebootIfRequired} ${MementoSectionEnd} ${MementoUnselectedSection} "$(SectionWES09)" WES09 ${RebootIfRequired} WriteRegDword HKLM "${REGPATH_POSREADY}" "Installed" 1 ; KB2686509 is known to fail due to an edition check when the Embedded version of the update is installed on XP. It ; isn't actually a security fix - it just runs a one-time check and writes a log of bad registry keys. In my opinion, ; this update is pointless, so fake it as installed so it doesn't get offered. ; https://legacyupdate.net/help/kb2686509 WriteRegStr HKLM "${REGPATH_HOTFIX}\KB2686509" "" "http://legacyupdate.net/help/kb2686509" WriteRegDword HKLM "${REGPATH_HOTFIX}\KB2686509" "Installed" 1 ${MementoSectionEnd} ; XP 2003 prerequisities ${MementoSection} "Windows XP/$(SRV) 2003 $(SP) 2" 2003SP2 ${RebootIfRequired} Call Install2003SP2 ${RebootIfRequired} ${MementoSectionEnd} ; Vista prerequisities Section "$(SectionWS2008HVU)" WS2008HVU SectionIn Ro ${If} ${NeedsPatch} HyperV2008Update Call InstallKB950050 ${RebootIfRequired} ${EndIf} SectionEnd Section "Windows Vista $(SP) 2" VISTASP2 SectionIn Ro ${RebootIfRequired} Call InstallVistaSP1 ${RebootIfRequired} Call InstallVistaSP2 ${RebootIfRequired} SectionEnd Section "Windows Vista $(PostSP) 2 Updates" VISTASSU SectionIn Ro ${RebootIfRequired} Call InstallKB3205638 Call InstallKB4012583 Call InstallKB4015195 Call InstallKB4015380 ${RebootIfRequired} SectionEnd ${MementoUnselectedSection} "$(SectionESU)" VISTAESU ${RebootIfRequired} Call InstallKB4493730 ${RebootIfRequired} ${MementoSectionEnd} ${MementoSection} "$(IE) 9" VISTAIE9 ${RebootIfRequired} Call InstallKB971512 Call InstallKB2117917 ${RebootIfRequired} Call InstallIE9 ${RebootIfRequired} ${MementoSectionEnd} ; 7 prerequisities Section "Windows 7 $(SP) 1" WIN7SP1 SectionIn Ro Call InstallWin7SP1 ${RebootIfRequired} SectionEnd ${MementoUnselectedSection} "Windows 7 $(CRU)" WIN7CRU ${RebootIfRequired} Call InstallKB3020369 Call InstallKB3125574 ${RebootIfRequired} ${MementoSectionEnd} Section "$(SectionSSU)" WIN7SSU SectionIn Ro ${RebootIfRequired} Call InstallKB3138612 Call InstallKB4474419 Call InstallKB4490628 ${RebootIfRequired} SectionEnd ; Windows Home Server 2011 is based on Server 2008 R2, but has its own separate "rollup" updates Section "$(SectionWHS2011U4)" WHS2011U4 SectionIn Ro ${RebootIfRequired} Call InstallKB2757011 ${RebootIfRequired} SectionEnd ; 8 prerequisities Section "$(SectionSSU)" WIN8SSU SectionIn Ro ${RebootIfRequired} Call InstallKB4598297 ${RebootIfRequired} SectionEnd ; 8.1 prerequisities Section "Windows 8.1 $(Update) 1" WIN81U1 SectionIn Ro ${RebootIfRequired} Call InstallKB3021910 Call InstallClearCompressionFlag Call InstallKB2919355 Call InstallKB2932046 Call InstallKB2959977 Call InstallKB2937592 Call InstallKB2934018 ${RebootIfRequired} SectionEnd Section "$(SectionSSU)" WIN81SSU SectionIn Ro ${RebootIfRequired} Call InstallKB3021910 ${RebootIfRequired} SectionEnd ; Shared prerequisites !include DownloadWUA.nsh Section "$(SectionWUA)" WUA SectionIn Ro ${RebootIfRequired} Call InstallWUA SectionEnd ${MementoSection} "$(SectionRootCerts)" ROOTCERTS ${RebootIfRequired} Call ConfigureCrypto ${IfNot} ${IsPostInstall} Call UpdateRoots ${EndIf} ${MementoSectionEnd} ${MementoSection} "$(SectionEnableMU)" ENABLEMU ${RebootIfRequired} LegacyUpdateNSIS::EnableMicrosoftUpdate Pop $0 ${If} $0 != 0 LegacyUpdateNSIS::MessageForHresult $0 Pop $1 ${DetailPrint} "$1 ($0)" MessageBox MB_USERICON "$(MsgBoxMUFailed)" /SD IDOK ${EndIf} !insertmacro RestartWUAUService ${MementoSectionEnd} ${MementoSection} "$(SectionActivate)" ACTIVATE ; No-op; we'll launch the activation wizard in post-install. ${MementoSectionEnd} Section - PREREQS_END SectionEnd ; Main installation ${MementoSection} "$(^Name)" LEGACYUPDATE ${RebootIfRequired} ; WUSERVER section Call MakeUninstallEntry ${If} ${AtMostWinVista} ; Check if SChannel is going to work with modern TLS ${If} ${AtLeastWinVista} ${DetailPrint} "$(StatusCheckingSSL)" !insertmacro DownloadRequest "${WSUS_SERVER_HTTPS}/ClientWebService/ping.bin" NONE \ `/TIMEOUTCONNECT 0 /TIMEOUTRECONNECT 0` Pop $0 Call DownloadWaitSilent Pop $1 Pop $0 ${VerbosePrint} "Ping result: $0 ($1)" ${Else} StrCpy $1 0 ${EndIf} ${If} $1 >= 200 ${AndIf} $1 < 300 ; HTTPS will work ${WriteRegWithBackup} Str HKLM "${REGPATH_WUPOLICY}" "WUServer" "${WSUS_SERVER_HTTPS}" ${WriteRegWithBackup} Str HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" "${WSUS_SERVER_HTTPS}" ${WriteRegWithBackup} Str HKLM "${REGPATH_WU}" "URL" "${UPDATE_URL_HTTPS}" ${Else} ; Probably not supported; use HTTP ${WriteRegWithBackup} Str HKLM "${REGPATH_WUPOLICY}" "WUServer" "${WSUS_SERVER}" ${WriteRegWithBackup} Str HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" "${WSUS_SERVER}" ${WriteRegWithBackup} Str HKLM "${REGPATH_WU}" "URL" "${UPDATE_URL}" ${EndIf} ${WriteRegWithBackup} Dword HKLM "${REGPATH_WUAUPOLICY}" "UseWUServer" 1 ; Restart service !insertmacro RestartWUAUService ${EndIf} ; Server Core does not have IE, do not install ActiveX control ${If} ${AtLeastWinVista} ${AndIf} ${IsServerOS} LegacyUpdateNSIS::IsServerCore Pop $0 ${Else} StrCpy $0 0 ${EndIf} ${If} $0 != 1 ; ACTIVEX section SetOutPath $INSTDIR ; Call MakeUninstallEntry ; 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_HKCR_CPLCLSID}" "" "${NAME}" WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}" "LocalizedString" '@"$OUTDIR\LegacyUpdate.exe",-2' WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}\DefaultIcon" "" '"$OUTDIR\LegacyUpdate.exe",-100' WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}\Shell\Open\Command" "" '"$OUTDIR\LegacyUpdate.exe"' WriteRegDword HKCR "${REGPATH_HKCR_CPLCLSID}\ShellFolder" "Attributes" 0 WriteRegDword HKCR "${REGPATH_HKCR_CPLCLSID}" "{305CA226-D286-468e-B848-2B2E8E697B74} 2" 5 WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}" "System.ApplicationName" "${CPL_APPNAME}" WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}" "System.ControlPanelCategory" "5,10" WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}" "System.Software.TasksFileUrl" '"$OUTDIR\LegacyUpdate.exe",-202' ${If} ${IsWin2000} ; Doesn't seem to support @ syntax with an exe? WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}" "InfoTip" 'Check for software and driver updates via Legacy Update.' ${Else} WriteRegStr HKCR "${REGPATH_HKCR_CPLCLSID}" "InfoTip" '@"$OUTDIR\LegacyUpdate.exe",-4' ${EndIf} WriteRegStr HKLM "${REGPATH_CPLNAMESPACE}" "" "${NAME}" ; Install DLLs ${DetailPrint} "$(StatusClosingIE)" LegacyUpdateNSIS::CloseIEWindows ; 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. File /ONAME=LegacyUpdate.dll "..\LegacyUpdate\obj\LegacyUpdate32.dll" ${If} ${IsNativeAMD64} ${If} ${FileExists} "LegacyUpdate32.dll" ${DeleteWithErrorHandling} "$OUTDIR\LegacyUpdate32.dll" ${EndIf} Rename "LegacyUpdate.dll" "LegacyUpdate32.dll" File /ONAME=LegacyUpdate.dll "..\LegacyUpdate\obj\LegacyUpdate64.dll" ${EndIf} Call CopyLauncher ; Register DLLs ExecWait '"$OUTDIR\LegacyUpdate.exe" /regserver $HWNDPARENT' $0 ${If} $0 != 0 Abort ${EndIf} ; Create shortcut ${If} ${IsWin2000} ; Doesn't seem to support @ syntax with an exe? StrCpy $0 "Check for software and driver updates via Legacy Update." ${Else} StrCpy $0 '@"$OUTDIR\LegacyUpdate.exe",-4' ${EndIf} CreateShortcut "$COMMONSTARTMENU\${NAME}.lnk" \ '"$OUTDIR\LegacyUpdate.exe"' '' \ "$OUTDIR\LegacyUpdate.exe" 0 \ SW_SHOWNORMAL "" \ "$0" ; Hide WU shortcuts ${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 HKLM "${REGPATH_ZONEDOMAINS}\${DOMAIN}" "http" 2 WriteRegDword HKLM "${REGPATH_ZONEDOMAINS}\${DOMAIN}" "https" 2 WriteRegDword HKLM "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" "http" 2 WriteRegDword HKLM "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" "https" 2 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 ; Add low rights elevation policy WriteRegDword HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" "Policy" 3 WriteRegStr HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" "AppPath" "$OUTDIR" WriteRegStr HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" "AppName" "LegacyUpdate.exe" ${If} ${RunningX64} SetRegView 32 WriteRegDword HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" "Policy" 3 WriteRegStr HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" "AppPath" "$OUTDIR" WriteRegStr HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" "AppName" "LegacyUpdate.exe" SetRegView 64 ${EndIf} ; Delete LegacyUpdate.dll in System32 from 1.0 installer ${If} ${FileExists} $WINDIR\System32\LegacyUpdate.dll ${DeleteWithErrorHandling} $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} ${EndIf} ${MementoSectionEnd} ${MementoSectionDone} ; Uninstaller Section "-un.Legacy Update Server" un.WUSERVER ; Clear WSUS server ${If} ${AtMostWinVista} ReadRegStr $0 HKLM "${REGPATH_WUPOLICY}" "WUServer" ${VerbosePrint} "WUServer: $0" ${If} $0 == "${WSUS_SERVER}" ${OrIf} $0 == "${WSUS_SERVER_HTTPS}" ${DeleteRegWithBackup} Str HKLM "${REGPATH_WUPOLICY}" "WUServer" "-" ${DeleteRegWithBackup} Dword HKLM "${REGPATH_WUAUPOLICY}" "UseWUServer" "-" ${EndIf} ReadRegStr $0 HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" ${VerbosePrint} "WUStatusServer: $0" ${If} $0 == "${WSUS_SERVER}" ${OrIf} $0 == "${WSUS_SERVER_HTTPS}" ${DeleteRegWithBackup} Str HKLM "${REGPATH_WUPOLICY}" "WUStatusServer" "-" ${DeleteRegWithBackup} Dword HKLM "${REGPATH_WUAUPOLICY}" "UseWUServer" "-" ${EndIf} ReadRegStr $0 HKLM "${REGPATH_WU}" "URL" ${VerbosePrint} "URL: $0" ${If} $0 == "${UPDATE_URL}" ${OrIf} $0 == "${UPDATE_URL_HTTPS}" ${DeleteRegWithBackup} Str HKLM "${REGPATH_WU}" "URL" "-" ${EndIf} ${EndIf} SectionEnd Section "-un.Legacy Update website" un.ACTIVEX SetOutPath $INSTDIR ; Delete shortcut Delete "$COMMONSTARTMENU\${NAME}.lnk" ; Delete Control Panel entry DeleteRegKey HKLM "${REGPATH_CPLNAMESPACE}" DeleteRegKey HKCR "${REGPATH_HKCR_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} ; Close IE ${DetailPrint} "$(StatusClosingIE)" LegacyUpdateNSIS::CloseIEWindows ; Unregister DLLs ${If} ${FileExists} "$INSTDIR\LegacyUpdate.exe" ExecWait '"$OUTDIR\LegacyUpdate.exe" /unregserver $HWNDPARENT' $0 ${If} $0 != 0 Abort ${EndIf} ${EndIf} ; Delete files ${DeleteWithErrorHandling} "$OUTDIR\LegacyUpdate.exe" ${DeleteWithErrorHandling} "$OUTDIR\LegacyUpdate.dll" ${DeleteWithErrorHandling} "$OUTDIR\LegacyUpdate32.dll" ; Remove from trusted sites DeleteRegKey HKLM "${REGPATH_ZONEDOMAINS}\${DOMAIN}" DeleteRegKey HKCU "${REGPATH_ZONEDOMAINS}\${DOMAIN}" DeleteRegKey HKLM "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" DeleteRegKey HKCU "${REGPATH_ZONEESCDOMAINS}\${DOMAIN}" ; Remove IE elevation policy DeleteRegKey HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" ${If} ${RunningX64} SetRegView 32 DeleteRegKey HKLM "${REGPATH_ELEVATIONPOLICY}\${ELEVATIONPOLICY_GUID}" SetRegView 64 ${EndIf} ; Restart service !insertmacro RestartWUAUService SectionEnd Section -Uninstall SetOutPath $INSTDIR ; Delete folders RMDir /r "$OUTDIR" RMDir /r /REBOOTOK "${RUNONCEDIR}" ; Delete uninstall entry DeleteRegKey HKLM "${REGPATH_UNINSTSUBKEY}" SectionEnd !macro DESCRIPTION_STRING section !insertmacro MUI_DESCRIPTION_TEXT ${${section}} "$(Section${section}Desc)" !macroend !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro DESCRIPTION_STRING W2KSP4 !insertmacro DESCRIPTION_STRING IE6SP1 !insertmacro DESCRIPTION_STRING XPSP3 !insertmacro DESCRIPTION_STRING XPESP3 !insertmacro DESCRIPTION_STRING WES09 !insertmacro DESCRIPTION_STRING 2003SP2 !insertmacro DESCRIPTION_STRING VISTASP2 !insertmacro DESCRIPTION_STRING VISTASSU !insertmacro DESCRIPTION_STRING VISTAESU !insertmacro DESCRIPTION_STRING VISTAIE9 !insertmacro DESCRIPTION_STRING WIN7SP1 !insertmacro DESCRIPTION_STRING WIN7CRU !insertmacro DESCRIPTION_STRING WIN7SSU !insertmacro DESCRIPTION_STRING WIN8SSU !insertmacro DESCRIPTION_STRING WIN81U1 !insertmacro DESCRIPTION_STRING WIN81SSU !insertmacro DESCRIPTION_STRING WS2008HVU !insertmacro DESCRIPTION_STRING WHS2011U4 !insertmacro DESCRIPTION_STRING WUA !insertmacro DESCRIPTION_STRING ROOTCERTS !insertmacro DESCRIPTION_STRING ENABLEMU !insertmacro DESCRIPTION_STRING ACTIVATE ; !insertmacro DESCRIPTION_STRING LEGACYUPDATE ; !insertmacro DESCRIPTION_STRING WUSERVER !insertmacro MUI_FUNCTION_DESCRIPTION_END Function OnMouseOverSection ${If} $0 == ${LEGACYUPDATE} ${If} ${AtMostWinXP2003} StrCpy $0 "$(SectionActiveX2KXPDesc)" ${ElseIf} ${AtMostWin8.1} StrCpy $0 "$(SectionActiveXVista78Desc)" ${Else} StrCpy $0 "$(SectionActiveXWin10Desc)" ${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 Function .onInit Call InitChecks ${MementoSectionRestore} SetOutPath $PLUGINSDIR File Patches.ini SetOutPath "${RUNONCEDIR}" ${If} ${IsWin2000} ; Determine whether Win2k prereqs need to be installed ${IfNot} ${NeedsPatch} W2KSP4 ${AndIfNot} ${NeedsPatch} W2KUR1 !insertmacro RemoveSection ${W2KSP4} ${EndIf} ${IfNot} ${NeedsPatch} IE6 !insertmacro RemoveSection ${IE6SP1} ${EndIf} ; Handle 2000 Datacenter Server ${If} ${IsDatacenter} !insertmacro UnselectSection ${LEGACYUPDATE} ${EndIf} ${Else} !insertmacro RemoveSection ${W2KSP4} !insertmacro RemoveSection ${IE6SP1} ${EndIf} ${If} ${IsWinXP2002} ${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} ${IfNot} ${NeedsPatch} XPESP3 !insertmacro RemoveSection ${XPESP3} ${EndIf} ${Else} ; Determine whether XP prereqs need to be installed !insertmacro RemoveSection ${XPESP3} ${IfNot} ${NeedsPatch} XPSP3 !insertmacro RemoveSection ${XPSP3} ${EndIf} ${EndIf} ${If} ${IsWinXPPOSReady} !insertmacro RemoveSection ${WES09} ${EndIf} ${Else} !insertmacro RemoveSection ${XPSP3} !insertmacro RemoveSection ${XPESP3} !insertmacro RemoveSection ${WES09} ${EndIf} ${If} ${IsWinXP2003} ; Determine whether 2003 prereqs need to be installed ${IfNot} ${NeedsPatch} 2003SP2 !insertmacro RemoveSection ${2003SP2} ${EndIf} ${Else} !insertmacro RemoveSection ${2003SP2} ${EndIf} ${If} ${IsWinVista} ; Determine whether Vista prereqs need to be installed ${IfNot} ${NeedsPatch} HyperV2008Update !insertmacro RemoveSection ${WS2008HVU} ${EndIf} ${IfNot} ${NeedsPatch} VistaSP2 !insertmacro RemoveSection ${VISTASP2} ${EndIf} ${IfNot} ${NeedsPatch} VistaPostSP2 !insertmacro RemoveSection ${VISTASSU} ${EndIf} ${IfNot} ${NeedsPatch} VistaESU !insertmacro RemoveSection ${VISTAESU} ${EndIf} ${IfNot} ${NeedsPatch} IE9 !insertmacro RemoveSection ${VISTAIE9} ${ElseIf} ${IsServerOS} LegacyUpdateNSIS::IsServerCore Pop $0 ${If} $0 == 1 !insertmacro RemoveSection ${VISTAIE9} ${EndIf} ${EndIf} ${Else} !insertmacro RemoveSection ${WS2008HVU} !insertmacro RemoveSection ${VISTASP2} !insertmacro RemoveSection ${VISTASSU} !insertmacro RemoveSection ${VISTAESU} !insertmacro RemoveSection ${VISTAIE9} ${EndIf} ${If} ${IsWin7} ; Determine whether 7 prereqs need to be installed ${IfNot} ${NeedsPatch} Win7SP1 !insertmacro RemoveSection ${WIN7SP1} ${EndIf} ${IfNot} ${IsHomeServer} ${OrIfNot} ${NeedsPatch} KB2757011 !insertmacro RemoveSection ${WHS2011U4} ${EndIf} ${IfNot} ${NeedsPatch} Win7CRU !insertmacro RemoveSection ${WIN7CRU} ${EndIf} ${IfNot} ${NeedsPatch} Win7PostSP1 !insertmacro RemoveSection ${WIN7SSU} ${EndIf} ${Else} !insertmacro RemoveSection ${WIN7SP1} !insertmacro RemoveSection ${WHS2011U4} !insertmacro RemoveSection ${WIN7CRU} !insertmacro RemoveSection ${WIN7SSU} ${EndIf} ${If} ${IsWin8} ; Determine whether 8 prereqs need to be installed ${IfNot} ${NeedsPatch} KB4598297 !insertmacro RemoveSection ${WIN8SSU} ${EndIf} ${Else} !insertmacro RemoveSection ${WIN8SSU} ${EndIf} ${If} ${IsWin8.1} ; Determine whether 8.1 prereqs need to be installed ${IfNot} ${NeedsPatch} Win81Update1 !insertmacro RemoveSection ${WIN81U1} ${EndIf} ${IfNot} ${NeedsPatch} KB3021910 !insertmacro RemoveSection ${WIN81SSU} ${EndIf} ${Else} !insertmacro RemoveSection ${WIN81U1} !insertmacro RemoveSection ${WIN81SSU} ${EndIf} ${IfNot} ${NeedsPatch} WUA !insertmacro RemoveSection ${WUA} ${EndIf} ${If} ${AtLeastWinXP2002} ${AndIf} ${AtMostWin8.1} ; Check if the OS needs activation LegacyUpdateNSIS::IsActivated Pop $0 ${If} $0 == 1 !insertmacro RemoveSection ${ACTIVATE} ${EndIf} ${Else} !insertmacro RemoveSection ${ACTIVATE} ${EndIf} ${If} ${AtLeastWin7} ${AndIf} ${AtMostWin8.1} ClearErrors EnumRegKey $0 HKLM "${REGPATH_WU_SERVICES}\${WU_MU_SERVICE_ID}" 0 ${IfNot} ${Errors} !insertmacro RemoveSection ${ENABLEMU} ${EndIf} ${Else} !insertmacro RemoveSection ${ENABLEMU} ${EndIf} ; Server Core does not have activation wizard ${If} ${AtLeastWinVista} ${AndIf} ${IsServerOS} LegacyUpdateNSIS::IsServerCore Pop $0 ${If} $0 == 1 !insertmacro RemoveSection ${ACTIVATE} ${EndIf} ${EndIf} ; ${IfNot} ${AtMostWinVista} ; !insertmacro RemoveSection ${LEGACYUPDATE} ; ${EndIf} ; Try not to be too intrusive on Windows 10 and newer, which are (for now) fine ${If} ${AtLeastWin10} !insertmacro RemoveSection ${ROOTCERTS} ${Else} LegacyUpdateNSIS::NeedsRootsUpdate Pop $0 ${If} $0 == 0 !insertmacro RemoveSection ${ROOTCERTS} ${EndIf} ${EndIf} FunctionEnd Function ComponentsPageCheck ; Skip the page if we're being launched with /runonce, /postinstall, or /passive ${If} ${IsRunOnce} ${OrIf} ${IsPostInstall} ${OrIf} ${IsPassive} Abort ${EndIf} ; Skip if installer was invoked by IE, and all prerequisites are installed ${If} ${IsActiveX} ${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} ; Skip if reboot pending ReadRegDword $0 HKLM "${REGPATH_LEGACYUPDATE_SETUP}" "RebootPending" ${If} $0 == 1 Abort ${EndIf} ; Handle 2000 Datacenter Server ${If} ${IsWin2000} ${AndIf} ${IsDatacenter} !insertmacro UnselectSection ${LEGACYUPDATE} ${EndIf} ; Handle WES09 already enabled on non-SSE2 ${If} ${IsWinXP2002} ${If} ${IsWinXPWES} ${OrIf} ${IsWinXPPOSReady} ; Check for SSE2 System::Call '${IsProcessorFeaturePresent}(${PF_XMMI64_INSTRUCTIONS_AVAILABLE}) .r0' ${If} $0 == 0 MessageBox MB_USERICON "$(MsgBoxWES09NotSSE2Pre)" /SD IDOK ${EndIf} ${EndIf} ${EndIf} FunctionEnd Function PreDownload ; Win2k ${If} ${IsWin2000} Call DownloadW2KSP4 Call DownloadW2KUR1 Call DownloadIE6 ${EndIf} ; XP 2002 ${If} ${IsWinXP2002} ${AndIf} ${SectionIsSelected} ${XPSP3} ${If} ${IsWinXPMediaCenter} ${OrIf} ${IsWinXPTabletPC} Call DownloadXPSP2 ${Else} Call DownloadXPSP1a ${EndIf} Call DownloadXPSP3 ${EndIf} ${If} ${IsWinXP2002} ${AndIf} ${SectionIsSelected} ${XPESP3} Call DownloadXPESP3 ${EndIf} ; XP 2003 ${If} ${IsWinXP2003} ${AndIf} ${SectionIsSelected} ${2003SP2} Call Download2003SP2 ${EndIf} ; Vista ${If} ${IsWinVista} ${If} ${NeedsPatch} HyperV2008Update Call DownloadKB950050 ${EndIf} Call DownloadVistaSP1 Call DownloadVistaSP2 Call DownloadKB3205638 Call DownloadKB4012583 Call DownloadKB4015195 Call DownloadKB4015380 ${If} ${SectionIsSelected} ${VISTAESU} Call DownloadKB4493730 ${EndIf} ${If} ${SectionIsSelected} ${VISTAIE9} Call DownloadKB971512 Call DownloadKB2117917 Call DownloadIE9 ${EndIf} ${EndIf} ; 7 ${If} ${IsWin7} ${If} ${IsHomeServer} Call DownloadKB2757011 ${Else} Call DownloadWin7SP1 ${EndIf} ${If} ${SectionIsSelected} ${WIN7CRU} Call DownloadKB3020369 Call DownloadKB3125574 ${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} "$INSTDIR\LegacyUpdate.exe" ${AndIfNot} ${IsRunOnce} ClearErrors 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} ${If} ${FileExists} "$INSTDIR\LegacyUpdate.exe" Exec '"$INSTDIR\LegacyUpdate.exe" /launch $0' ${ElseIf} ${AtLeastWin10} ExecShell "" "ms-settings:windowsupdate" ${ElseIf} ${AtLeastWinVista} Exec '"$WINDIR\system32\wuauclt.exe" /ShowWUAutoScan' ${EndIf} ; Launch activation wizard if requested by the user ${If} ${SectionIsSelected} ${ACTIVATE} ${DisableX64FSRedirection} ${If} ${AtLeastWinVista} Exec '"$WINDIR\system32\slui.exe"' ${Else} Exec '"$WINDIR\system32\oobe\msoobe.exe" /a' ${EndIf} ${EnableX64FSRedirection} ${EndIf} ${EndIf} FunctionEnd Function CleanUp ; Called only after all tasks have completed Call CleanUpRunOnce Call RevertTermsrvUserMode !insertmacro InhibitSleep 0 ${If} ${IsRunOnce} Call OnRunOnceDone ${Else} ${If} ${IsPostInstall} ${OrIfNot} ${RebootFlag} Call CleanUpRunOnceFinal ${EndIf} ${EndIf} FunctionEnd Function .onInstSuccess ${MementoSectionSave} Call SetLastOSVersion ; Reboot now if we need to. Nothing further in this function will be run if we do need to reboot. ${RebootIfRequired} ; If we're done, launch the update site Call PostInstall Call CleanUp FunctionEnd Function .onInstFailed ${MementoSectionSave} Call CleanUp FunctionEnd Function .onSelChange ${If} ${SectionIsSelected} ${WES09} ; Check for SSE2 System::Call '${IsProcessorFeaturePresent}(${PF_XMMI64_INSTRUCTIONS_AVAILABLE}) .r0' ${If} $0 == 0 MessageBox MB_USERICON "$(MsgBoxWES09NotSSE2Block)" /SD IDOK !insertmacro UnselectSection ${WES09} ${EndIf} ${ElseIf} ${SectionIsSelected} ${ACTIVATE} ; Make sure the service pack prerequisite is selected ${If} ${IsWinXP2002} ${AndIfNot} ${AtLeastServicePack} 3 ${AndIfNot} ${SectionIsSelected} ${XPSP3} MessageBox MB_USERICON "$(MsgBoxActivateXP2002NotSP3)" /SD IDOK !insertmacro SelectSection ${XPSP3} ${ElseIf} ${IsWinXP2003} ${AndIfNot} ${AtLeastServicePack} 2 ${AndIfNot} ${SectionIsSelected} ${2003SP2} MessageBox MB_USERICON "$(MsgBoxActivateXP2003NotSP2)" /SD IDOK !insertmacro SelectSection ${2003SP2} ${EndIf} ${ElseIf} ${SectionIsSelected} ${LEGACYUPDATE} ; Handle 2000 Datacenter Server ${If} ${IsWin2000} ${AndIf} ${IsDatacenter} MessageBox MB_USERICON "$(MsgBoxWUA2000Datacenter)" /SD IDOK !insertmacro UnselectSection ${LEGACYUPDATE} ${EndIf} ${EndIf} FunctionEnd Function un.onInit SetShellVarContext all SetAutoClose true ${If} ${IsVerbose} SetDetailsPrint both ${Else} SetDetailsPrint listonly ${EndIf} ${If} ${RunningX64} SetRegView 64 ${EndIf} FunctionEnd ================================================ FILE: setup/stdafx.h ================================================ ================================================ FILE: shared/Exec.c ================================================ #include "stdafx.h" #include "Exec.h" HRESULT Exec(LPCWSTR verb, LPCWSTR file, LPCWSTR params, LPCWSTR workingDir, int show, BOOL wait, LPDWORD exitCode) { SHELLEXECUTEINFO execInfo = {0}; execInfo.cbSize = sizeof(execInfo); execInfo.lpVerb = verb; execInfo.lpFile = file; execInfo.lpParameters = params; execInfo.lpDirectory = workingDir; execInfo.nShow = show; return ExecEx(&execInfo, wait, exitCode); } HRESULT ExecEx(LPSHELLEXECUTEINFO execInfo, BOOL wait, LPDWORD exitCode) { if (wait) { execInfo->fMask |= SEE_MASK_NOCLOSEPROCESS; } if (!ShellExecuteEx(execInfo)) { return HRESULT_FROM_WIN32(GetLastError()); } HRESULT hr = S_OK; if (wait) { if (execInfo->hProcess == NULL) { TRACE(L"ShellExecuteEx() didn't return a handle: %u", GetLastError()); hr = E_FAIL; } WaitForSingleObject(execInfo->hProcess, INFINITE); if (exitCode != NULL && GetExitCodeProcess(execInfo->hProcess, exitCode) == 0) { hr = HRESULT_FROM_WIN32(GetLastError()); TRACE(L"GetExitCodeProcess() failed: %p\n", hr); } CloseHandle(execInfo->hProcess); } else if (exitCode != NULL) { *exitCode = 0; } return hr; } ================================================ FILE: shared/Exec.h ================================================ #pragma once #include #include EXTERN_C HRESULT Exec(LPCWSTR verb, LPCWSTR file, LPCWSTR params, LPCWSTR workingDir, int show, BOOL wait, LPDWORD exitCode); EXTERN_C HRESULT ExecEx(LPSHELLEXECUTEINFO execInfo, BOOL wait, LPDWORD exitCode); ================================================ FILE: shared/HResult.c ================================================ #include "stdafx.h" #include #include "HResult.h" #include "LegacyUpdate.h" #include "VersionInfo.h" static BOOL g_loadedHModule; static HMODULE g_messagesHModule; EXTERN_C LPWSTR GetMessageForHresult(HRESULT hr) { LPWSTR message = NULL; if (HRESULT_FACILITY(hr) == FACILITY_WINDOWSUPDATE) { if (!g_loadedHModule) { g_loadedHModule = TRUE; // Load messages table from main dll LPWSTR installPath = NULL; if (GetInstallPath(&installPath)) { WCHAR path[MAX_PATH]; wsprintf(path, L"%ls\\LegacyUpdate.dll", installPath); g_messagesHModule = LoadLibrary(path); LocalFree(installPath); } if (!g_messagesHModule) { // Try the current module g_messagesHModule = OWN_MODULE; } } FormatMessage(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, g_messagesHModule, hr, LANG_NEUTRAL, (LPWSTR)&message, 0, NULL); } if (message == NULL && !FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hr, LANG_NEUTRAL, (LPWSTR)&message, 0, NULL)) { message = (LPWSTR)LocalAlloc(LPTR, 17 * sizeof(WCHAR)); wsprintf(message, L"Error 0x%08X", hr); return message; } // Truncate trailing \r\n if any int len = lstrlen(message); if (len >= 2 && message[len - 2] == '\r' && message[len - 1] == '\n') { message[len - 2] = 0; } // Remove title part in braces if (len > 1 && message[0] == '{') { LPWSTR closeBrace = wcsstr(message, L"}\r\n"); if (closeBrace) { message = closeBrace + 3; } } return message; } ================================================ FILE: shared/HResult.h ================================================ #pragma once #include EXTERN_C LPWSTR GetMessageForHresult(HRESULT hr); ================================================ FILE: shared/LegacyUpdate.c ================================================ #include "stdafx.h" #include #include "Registry.h" static LPWSTR _installPath; EXTERN_C HRESULT GetInstallPath(LPWSTR *path) { *path = (LPWSTR)LocalAlloc(LPTR, MAX_PATH * sizeof(WCHAR)); HRESULT hr = S_OK; if (!_installPath) { DWORD size = 0; hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_LEGACYUPDATE_UNINSTALL, L"InstallLocation", KEY_WOW64_64KEY, &_installPath, &size); if (SUCCEEDED(hr)) { lstrcpy(*path, _installPath); return S_OK; } // Do our best to guess where it should be LPWSTR programFiles = NULL; hr = GetRegistryString(HKEY_LOCAL_MACHINE, REGPATH_WIN, L"ProgramFilesDir", KEY_WOW64_64KEY, &programFiles, &size); if (SUCCEEDED(hr)) { _installPath = (LPWSTR)LocalAlloc(LPTR, MAX_PATH * sizeof(WCHAR)); wsprintf(_installPath, L"%ls\\Legacy Update", programFiles); LocalFree(programFiles); } } lstrcpy(*path, _installPath); return hr; } ================================================ FILE: shared/LegacyUpdate.h ================================================ #pragma once #include EXTERN_C HRESULT GetInstallPath(LPWSTR *path); ================================================ FILE: shared/LoadImage.c ================================================ #include #include #include // Adapted from https://faithlife.codes/blog/2008/09/displaying_a_splash_screen_with_c_part_i/ // 1. Get resource as an IStream // 2. Use Windows Imaging Component to load the PNG // 3. Convert the WIC bitmap to an HBITMAP // Why does loading a PNG need to be so difficult? typedef HRESULT (WINAPI *_WICConvertBitmapSource)(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst); typedef HRESULT (WINAPI *_SHCreateStreamOnFileEx)(LPCWSTR pszFile, DWORD grfMode, DWORD dwAttributes, BOOL fCreate, IStream *pstmTemplate, IStream **ppstm); static _WICConvertBitmapSource $WICConvertBitmapSource; static _SHCreateStreamOnFileEx $SHCreateStreamOnFileEx; static HGLOBAL GetRawResource(HINSTANCE hInstance, LPCWSTR name, LPCWSTR type) { HRSRC resource = FindResource(hInstance, name, type); if (!resource) { TRACE(L"FindResource failed: %d", GetLastError()); return NULL; } DWORD resourceSize = SizeofResource(hInstance, resource); HGLOBAL imageHandle = LoadResource(hInstance, resource); if (!imageHandle) { TRACE(L"LoadResource failed: %d", GetLastError()); return NULL; } LPVOID sourceResourceData = LockResource(imageHandle); if (!sourceResourceData) { TRACE(L"LockResource failed: %d", GetLastError()); return NULL; } HGLOBAL resourceDataHandle = GlobalAlloc(GMEM_MOVEABLE, resourceSize); if (!resourceDataHandle) { TRACE(L"GlobalAlloc failed: %d", GetLastError()); return NULL; } LPVOID resourceData = GlobalLock(resourceDataHandle); if (!resourceData) { TRACE(L"GlobalLock failed: %d", GetLastError()); GlobalFree(resourceDataHandle); return NULL; } CopyMemory(resourceData, sourceResourceData, resourceSize); GlobalUnlock(resourceDataHandle); return resourceDataHandle; } static IStream *GetResourceStream(HINSTANCE hInstance, LPCWSTR name, LPCWSTR type) { IStream *stream = NULL; HGLOBAL resource = GetRawResource(hInstance, name, type); if (!resource) { TRACE(L"GetResource failed: %d", GetLastError()); return NULL; } if (SUCCEEDED(CreateStreamOnHGlobal(resource, TRUE, &stream))) { return stream; } GlobalFree(resource); return NULL; } static IWICBitmapSource *GetWICBitmap(IStream *imageStream, REFCLSID rclsid) { IWICBitmapSource *bitmap = NULL; IWICBitmapDecoder *decoder = NULL; UINT frameCount = 0; IWICBitmapFrameDecode *frame = NULL; if (!SUCCEEDED(CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, &IID_IWICBitmapDecoder, (LPVOID *)&decoder))) { return NULL; } if (!SUCCEEDED(IWICBitmapDecoder_Initialize(decoder, imageStream, WICDecodeMetadataCacheOnLoad))) { goto end; } if (!SUCCEEDED(IWICBitmapDecoder_GetFrameCount(decoder, &frameCount)) || frameCount != 1) { goto end; } if (!SUCCEEDED(IWICBitmapDecoder_GetFrame(decoder, 0, &frame))) { goto end; } $WICConvertBitmapSource(&GUID_WICPixelFormat32bppPBGRA, (IWICBitmapSource *)frame, &bitmap); IWICBitmapFrameDecode_Release(frame); end: IWICBitmapDecoder_Release(decoder); return bitmap; } static HBITMAP GetHBitmapForWICBitmap(IWICBitmapSource *bitmap) { HBITMAP hBitmap = NULL; UINT width = 0, height = 0; if (!SUCCEEDED(IWICBitmapSource_GetSize(bitmap, &width, &height)) || width == 0 || height == 0) { return NULL; } BITMAPINFO bminfo = {0}; ZeroMemory(&bminfo, sizeof(bminfo)); bminfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bminfo.bmiHeader.biWidth = width; bminfo.bmiHeader.biHeight = -(LONG)height; bminfo.bmiHeader.biPlanes = 1; bminfo.bmiHeader.biBitCount = 32; bminfo.bmiHeader.biCompression = BI_RGB; void *imageBits = NULL; HDC screenDC = GetDC(NULL); hBitmap = CreateDIBSection(screenDC, &bminfo, DIB_RGB_COLORS, &imageBits, NULL, 0); ReleaseDC(NULL, screenDC); if (!hBitmap) { return NULL; } UINT stride = width * 4; UINT imageSize = stride * height; if (!SUCCEEDED(IWICBitmapSource_CopyPixels(bitmap, NULL, stride, imageSize, (BYTE*)imageBits))) { DeleteObject(hBitmap); return NULL; } return hBitmap; } HBITMAP LoadPNGResource(HINSTANCE hInstance, LPCWSTR resourceName, LPCWSTR resourceType) { if (!$WICConvertBitmapSource) { HMODULE windowscodecs = LoadLibrary(L"windowscodecs.dll"); if (windowscodecs) { $WICConvertBitmapSource = (_WICConvertBitmapSource)GetProcAddress(windowscodecs, "WICConvertBitmapSource"); } if (!$WICConvertBitmapSource) { return NULL; } } IStream *imageStream = GetResourceStream(hInstance, resourceName, resourceType); if (!imageStream) { TRACE(L"GetResourceStream failed: %d", GetLastError()); return NULL; } IWICBitmapSource *bitmap = GetWICBitmap(imageStream, &CLSID_WICPngDecoder); if (!bitmap) { TRACE(L"GetWICBitmap failed: %d", GetLastError()); IStream_Release(imageStream); return NULL; } HBITMAP result = GetHBitmapForWICBitmap(bitmap); IWICBitmapSource_Release(bitmap); IStream_Release(imageStream); return result; } HBITMAP LoadJPEGFile(LPCWSTR filePath) { if (!$WICConvertBitmapSource) { HMODULE windowscodecs = LoadLibrary(L"windowscodecs.dll"); if (windowscodecs) { $WICConvertBitmapSource = (_WICConvertBitmapSource)GetProcAddress(windowscodecs, "WICConvertBitmapSource"); } if (!$WICConvertBitmapSource) { return NULL; } } if (!$SHCreateStreamOnFileEx) { HMODULE shlwapi = LoadLibrary(L"shlwapi.dll"); if (shlwapi) { $SHCreateStreamOnFileEx = (_SHCreateStreamOnFileEx)GetProcAddress(shlwapi, "SHCreateStreamOnFileEx"); } if (!$SHCreateStreamOnFileEx) { return NULL; } } IStream *imageStream = NULL; HRESULT hr = $SHCreateStreamOnFileEx(filePath, STGM_READ, FILE_ATTRIBUTE_NORMAL, FALSE, NULL, &imageStream); if (!SUCCEEDED(hr)) { TRACE(L"SHCreateStreamOnFileEx failed: 0x%08x", hr); return NULL; } IWICBitmapSource *bitmap = GetWICBitmap(imageStream, &CLSID_WICJpegDecoder); if (!bitmap) { TRACE(L"GetWICBitmap failed: %d", GetLastError()); IStream_Release(imageStream); return NULL; } HBITMAP result = GetHBitmapForWICBitmap(bitmap); IWICBitmapSource_Release(bitmap); IStream_Release(imageStream); return result; } BOOL ScaleAndWriteToBMP(HBITMAP hBitmap, DWORD width, DWORD height, LPCWSTR outputPath) { BOOL result = FALSE; if (!hBitmap) { TRACE(L"Null bitmap"); return FALSE; } HDC hdc = GetDC(NULL); HDC hdcMem = CreateCompatibleDC(hdc); HDC hdcMemScaled = NULL; HGLOBAL handle = NULL; HANDLE file = INVALID_HANDLE_VALUE; HBITMAP oldBitmap = NULL; HBITMAP oldScaledBitmap = NULL; HBITMAP scaledBitmap = CreateCompatibleBitmap(hdc, width, height); if (!scaledBitmap) { TRACE(L"CreateCompatibleBitmap failed: %d", GetLastError()); goto end; } BITMAP bmp = {0}; if (!GetObject(hBitmap, sizeof(BITMAP), &bmp)) { TRACE(L"GetObject failed: %d", GetLastError()); goto end; } hdcMemScaled = CreateCompatibleDC(hdc); SetStretchBltMode(hdcMemScaled, HALFTONE); oldBitmap = SelectObject(hdcMem, hBitmap); oldScaledBitmap = SelectObject(hdcMemScaled, scaledBitmap); if (!StretchBlt(hdcMemScaled, 0, 0, width, height, hdcMem, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY)) { TRACE(L"StretchBlt failed: %d", GetLastError()); goto end; } BITMAPINFOHEADER bmih = {0}; bmih.biSize = sizeof(BITMAPINFOHEADER); bmih.biWidth = width; bmih.biHeight = height; bmih.biPlanes = 1; bmih.biBitCount = bmp.bmBitsPixel; bmih.biCompression = BI_RGB; bmih.biSizeImage = ((width * bmp.bmBitsPixel + 31) / 32) * 4 * height; BITMAPFILEHEADER bmfh = {0}; bmfh.bfType = 0x4D42; bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); bmfh.bfSize = bmfh.bfOffBits + bmih.biSizeImage; handle = GlobalAlloc(GMEM_MOVEABLE, bmih.biSizeImage); if (!handle) { TRACE(L"GlobalAlloc failed: %d", GetLastError()); goto end; } BYTE *bitmapData = (BYTE *)GlobalLock(handle); if (!bitmapData) { TRACE(L"GlobalLock failed: %d", GetLastError()); goto end; } if (!GetDIBits(hdcMemScaled, scaledBitmap, 0, height, bitmapData, (BITMAPINFO *)&bmih, DIB_RGB_COLORS)) { TRACE(L"GetDIBits failed: %d", GetLastError()); goto end; } file = CreateFile(outputPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (file == INVALID_HANDLE_VALUE) { TRACE(L"CreateFile failed: %d", GetLastError()); goto end; } DWORD written = 0; if (!WriteFile(file, &bmfh, sizeof(BITMAPFILEHEADER), &written, NULL) || !WriteFile(file, &bmih, sizeof(BITMAPINFOHEADER), &written, NULL) || !WriteFile(file, bitmapData, bmih.biSizeImage, &written, NULL)) { TRACE(L"WriteFile failed: %d", GetLastError()); goto end; } result = TRUE; end: if (hdcMem && oldBitmap) { SelectObject(hdcMem, oldBitmap); } if (hdcMemScaled && oldScaledBitmap) { SelectObject(hdcMemScaled, oldScaledBitmap); } if (file != INVALID_HANDLE_VALUE) { CloseHandle(file); } if (scaledBitmap) { DeleteObject(scaledBitmap); } if (handle) { GlobalUnlock(handle); GlobalFree(handle); } if (hdc) { ReleaseDC(NULL, hdc); } if (hdcMem) { DeleteDC(hdcMem); } if (hdcMemScaled) { DeleteDC(hdcMemScaled); } return result; } ================================================ FILE: shared/LoadImage.h ================================================ #pragma once #include HBITMAP LoadPNGResource(HINSTANCE hInstance, LPCWSTR resourceName, LPCWSTR resourceType); HBITMAP LoadJPEGFile(LPCWSTR filePath); BOOL ScaleAndWriteToBMP(HBITMAP hBitmap, DWORD width, DWORD height, LPCWSTR outputPath); ================================================ FILE: shared/Log.c ================================================ #include "stdafx.h" #include "Log.h" #include "Version.h" #include "VersionInfo.h" #include "User.h" #include "Wow64.h" static const struct { DWORD arch; LPCWSTR name; } archNames[] = { {PROCESSOR_ARCHITECTURE_INTEL, L"x86"}, {PROCESSOR_ARCHITECTURE_ARM, L"ARM"}, {PROCESSOR_ARCHITECTURE_IA64, L"IA64"}, {PROCESSOR_ARCHITECTURE_AMD64, L"x64"}, {PROCESSOR_ARCHITECTURE_ARM64, L"ARM64"} }; static const struct { DWORD rid; LPCWSTR name; } integrityLevels[] = { {SECURITY_MANDATORY_UNTRUSTED_RID, L"untrusted"}, {SECURITY_MANDATORY_LOW_RID, L"low"}, {SECURITY_MANDATORY_MEDIUM_RID, L"medium"}, {SECURITY_MANDATORY_HIGH_RID, L"high"}, {SECURITY_MANDATORY_SYSTEM_RID, L"system"}, {SECURITY_MANDATORY_PROTECTED_PROCESS_RID, L"protected process"}, {MAXDWORD, L"n/a"} }; static BOOL g_logInitialized = FALSE; static HANDLE g_hLogFile = INVALID_HANDLE_VALUE; void LogInternal(LPCWSTR text) { if (g_hLogFile == INVALID_HANDLE_VALUE || text == NULL || wcslen(text) > LOG_LINE_MAXLEN) { return; } SYSTEMTIME time; GetLocalTime(&time); WCHAR line[LOG_LINE_MAXLEN + 39]; int length = wsprintf(line, L"%04d-%02d-%02d %02d:%02d:%02d\t%ls[%d]\t%ls\r\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond, L"" LOG_NAME, GetCurrentProcessId(), text); DWORD written = 0; WriteFile(g_hLogFile, line, length * sizeof(WCHAR), &written, NULL); FlushFileBuffers(g_hLogFile); } static void WriteLogBanner() { // Divider WCHAR divider[41]; for (size_t i = 0; i < ARRAYSIZE(divider) - 1; i++) { divider[i] = L'='; } divider[ARRAYSIZE(divider) - 1] = L'\0'; LogInternal(divider); // App version LogInternal(L"Legacy Update " VERSION_STRING); // OS info LPCWSTR archName = L"?"; SYSTEM_INFO sysInfo; OurGetNativeSystemInfo(&sysInfo); for (size_t i = 0; i < ARRAYSIZE(archNames); i++) { if (sysInfo.wProcessorArchitecture == archNames[i].arch) { archName = archNames[i].name; break; } } OSVERSIONINFOEX *versionInfo = GetVersionInfo(); LPCWSTR productType = versionInfo->wProductType == VER_NT_WORKSTATION ? L"Workstation" : L"Server"; LOG(L"OS: %d.%d.%d%ls%ls %ls (%ls, Suite: %05x)", versionInfo->dwMajorVersion, versionInfo->dwMinorVersion, versionInfo->dwBuildNumber, versionInfo->szCSDVersion == NULL || lstrlen(versionInfo->szCSDVersion) == 0 ? L"" : L" ", versionInfo->szCSDVersion, archName, productType, versionInfo->wSuiteMask); // Launch info LOG(L"Command line: %ls", GetCommandLine()); // Integrity DWORD integrity = GetTokenIntegrity(); LPCWSTR integrityName = L"?"; for (size_t i = 0; i < ARRAYSIZE(integrityLevels); i++) { if (integrity <= integrityLevels[i].rid) { integrityName = integrityLevels[i].name; break; } } LOG(L"%ls, %ls integrity", IsUserAdmin() ? L"Admin" : L"Non-admin", integrityName); } HRESULT OpenLog() { if (g_logInitialized) { return S_OK; } g_logInitialized = TRUE; // Get system log path WCHAR logPath[MAX_PATH]; GetWindowsDirectory(logPath, ARRAYSIZE(logPath)); lstrcat(logPath, AtLeastWinVista() ? L"\\Logs\\LegacyUpdate.log" : L"\\Temp\\LegacyUpdate.log"); SECURITY_ATTRIBUTES sa = {0}; sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = FALSE; // Try to open in the preferred location g_hLogFile = CreateFile(logPath, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (g_hLogFile == INVALID_HANDLE_VALUE) { // Access denied? Use user temp instead GetTempPath(ARRAYSIZE(logPath), logPath); lstrcat(logPath, L"LegacyUpdate.log"); g_hLogFile = CreateFile(logPath, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); } HRESULT hr = HRESULT_FROM_WIN32(GetLastError()); if (hr == HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)) { // Continue previous log file SetFilePointer(g_hLogFile, 0, NULL, FILE_END); } else { CHECK_HR_OR_RETURN(L"OpenLog"); // Write UTF-16LE BOM to make Notepad happy DWORD bom = 0xFEFF; DWORD written = 0; WriteFile(g_hLogFile, &bom, sizeof(WCHAR), &written, NULL); } WriteLogBanner(); return S_OK; } void CloseLog(void) { if (g_hLogFile != INVALID_HANDLE_VALUE) { CloseHandle(g_hLogFile); g_hLogFile = INVALID_HANDLE_VALUE; } } ================================================ FILE: shared/Log.h ================================================ #pragma once #include // Same as NSIS_MAX_STRLEN #define LOG_LINE_MAXLEN 4096 EXTERN_C HRESULT OpenLog(); EXTERN_C void CloseLog(void); EXTERN_C void LogInternal(LPCWSTR text); #define LOG(...) { \ LPWSTR _logMsg = (LPWSTR)LocalAlloc(LPTR, LOG_LINE_MAXLEN * sizeof(WCHAR)); \ wsprintf(_logMsg, __VA_ARGS__); \ LogInternal(_logMsg); \ LocalFree(_logMsg); \ } ================================================ FILE: shared/ProductInfo.c ================================================ #include typedef BOOL (WINAPI *_GetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD); static BOOL productInfoLoaded = FALSE; static _GetProductInfo $GetProductInfo; BOOL GetVistaProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType) { if (!productInfoLoaded) { productInfoLoaded = TRUE; $GetProductInfo = (_GetProductInfo)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "GetProductInfo"); } if ($GetProductInfo) { return $GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion, dwSpMinorVersion, pdwReturnedProductType); } *pdwReturnedProductType = PRODUCT_UNDEFINED; return FALSE; } ================================================ FILE: shared/ProductInfo.h ================================================ #pragma once #include BOOL GetVistaProductInfo(DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType); ================================================ FILE: shared/Registry.c ================================================ #include "stdafx.h" #include "Registry.h" #include "VersionInfo.h" #include LPVOID DELETE_KEY = (LPVOID)INT_MIN; LPVOID DELETE_VALUE = (LPVOID)(INT_MIN + 1); HRESULT GetRegistryString(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, REGSAM options, LPWSTR *data, LPDWORD size) { if (data == NULL) { return E_POINTER; } HKEY subkey = NULL; HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(key, subkeyPath, 0, GetRegistryWow64Flag(KEY_READ | options), &subkey)); if (!SUCCEEDED(hr)) { goto end; } if (data) { DWORD length = 0; hr = HRESULT_FROM_WIN32(RegQueryValueEx(subkey, valueName, NULL, NULL, NULL, &length)); if (!SUCCEEDED(hr)) { goto end; } LPWSTR buffer = (LPWSTR)LocalAlloc(LPTR, length + sizeof(WCHAR)); if (!buffer) { hr = E_OUTOFMEMORY; goto end; } hr = HRESULT_FROM_WIN32(RegQueryValueEx(subkey, valueName, NULL, NULL, (BYTE *)buffer, &length)); if (!SUCCEEDED(hr)) { LocalFree(buffer); goto end; } DWORD ourSize = length / sizeof(WCHAR); buffer[ourSize] = L'\0'; *data = buffer; if (size) { *size = ourSize; } } end: if (subkey) { RegCloseKey(subkey); } if (!SUCCEEDED(hr)) { *data = NULL; if (size) { *size = 0; } } return hr; } HRESULT GetRegistryDword(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, REGSAM options, LPDWORD data) { HKEY subkey = NULL; HRESULT hr = HRESULT_FROM_WIN32(RegOpenKeyEx(key, subkeyPath, 0, GetRegistryWow64Flag(KEY_READ | options), &subkey)); if (!SUCCEEDED(hr)) { goto end; } if (data) { DWORD length = sizeof(DWORD); hr = HRESULT_FROM_WIN32(RegQueryValueEx(subkey, valueName, NULL, NULL, (LPBYTE)data, &length)); } end: if (subkey) { RegCloseKey(subkey); } return hr; } HRESULT SetRegistryEntries(RegistryEntry entries[]) { for (DWORD i = 0; entries[i].hKey != NULL; i++) { RegistryEntry entry = entries[i]; LPWSTR expandedSubKey = NULL, expandedData = NULL; if (entry.lpSubKey) { DWORD length = ExpandEnvironmentStrings((LPCWSTR)entry.lpSubKey, NULL, 0); expandedSubKey = (LPWSTR)LocalAlloc(LPTR, length * sizeof(WCHAR)); ExpandEnvironmentStrings((LPCWSTR)entry.lpSubKey, expandedSubKey, length); entry.lpSubKey = expandedSubKey; } HRESULT hr; if (entry.uData.lpData == DELETE_KEY) { #if WINVER < _WIN32_WINNT_WIN2K hr = E_NOTIMPL; #else hr = HRESULT_FROM_WIN32(SHDeleteKey(entry.hKey, entry.lpSubKey)); #endif if (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) { hr = S_OK; } if (!SUCCEEDED(hr)) { TRACE(L"Delete %ls failed: %08x", entry.lpSubKey, hr); if (expandedSubKey) { LocalFree(expandedSubKey); } } } else { HKEY key; hr = HRESULT_FROM_WIN32(RegCreateKeyEx(entry.hKey, entry.lpSubKey, 0, NULL, 0, GetRegistryWow64Flag(KEY_WRITE | entry.samDesired), NULL, &key, NULL)); if (!SUCCEEDED(hr)) { TRACE(L"Create %ls failed: %08x", entry.lpSubKey, hr); if (expandedSubKey) { LocalFree(expandedSubKey); } return hr; } if (entry.uData.lpData == DELETE_VALUE) { hr = HRESULT_FROM_WIN32(RegDeleteValue(key, entry.lpValueName)); if (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) { hr = S_OK; } } else if (entry.uData.lpData != NULL) { if (entry.dwType == REG_SZ) { if (entry.uData.lpData) { DWORD length = ExpandEnvironmentStrings((LPCWSTR)entry.uData.lpData, NULL, 0); expandedData = (LPWSTR)LocalAlloc(LPTR, length * sizeof(WCHAR)); ExpandEnvironmentStrings((LPCWSTR)entry.uData.lpData, expandedData, length); entry.uData.lpData = expandedData; entry.dataSize = (DWORD)(lstrlen((LPCWSTR)entry.uData.lpData) + 1) * sizeof(WCHAR); } else { entry.dataSize = 0; } hr = HRESULT_FROM_WIN32(RegSetValueEx(key, entry.lpValueName, 0, entry.dwType, (const BYTE *)entry.uData.lpData, entry.dataSize)); } else if (entry.dwType == REG_DWORD) { hr = HRESULT_FROM_WIN32(RegSetValueEx(key, entry.lpValueName, 0, entry.dwType, (const BYTE *)&entry.uData.dwData, sizeof(entry.uData.dwData))); } } if (!SUCCEEDED(hr)) { TRACE(L"Set %ls -> %ls failed: %08x", entry.lpSubKey, entry.lpValueName, hr); } if (expandedSubKey) { LocalFree(expandedSubKey); } if (expandedData) { LocalFree(expandedData); } RegCloseKey(key); } if (!SUCCEEDED(hr)) { return hr; } } return S_OK; } ================================================ FILE: shared/Registry.h ================================================ #pragma once #include #define REGPATH_SETUP L"System\\Setup" #define REGPATH_CPL_DESKTOP L"Control Panel\\Desktop" #define REGPATH_WIN L"Software\\Microsoft\\Windows\\CurrentVersion" #define REGPATH_WIN_PERSONALIZE REGPATH_WIN L"\\Themes\\Personalize" #define REGPATH_WINNT L"Software\\Microsoft\\Windows NT\\CurrentVersion" #define REGPATH_WINNT_SERVERLEVELS REGPATH_WINNT L"\\Server\\ServerLevels" #define REGPATH_WU L"Software\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate" #define REGPATH_WU_REBOOTREQUIRED REGPATH_WU L"\\Auto Update\\RebootRequired" #define REGPATH_POLICIES_WINDOWS L"Software\\Policies\\Microsoft\\Windows" #define REGPATH_POLICIES_EXPLORER REGPATH_POLICIES_WINDOWS L"\\Explorer" #define REGPATH_POLICIES_WU REGPATH_POLICIES_WINDOWS L"\\WindowsUpdate" #define REGPATH_POLICIES_WU_AU REGPATH_POLICIES_WU L"\\AU" #define REGPATH_LEGACYUPDATE L"Software\\Hashbang Productions\\Legacy Update" #define REGPATH_LEGACYUPDATE_SETUP REGPATH_LEGACYUPDATE L"\\Setup" #define REGPATH_LEGACYUPDATE_UNINSTALL REGPATH_WIN L"\\Uninstall\\Legacy Update" // Filter out WOW64 keys that are not supported on Windows 2000 #ifdef _WIN64 #define GetRegistryWow64Flag(options) (options) #else #define GetRegistryWow64Flag(options) ((options) & ~(AtLeastWinXP2002() ? 0 : KEY_WOW64_64KEY | KEY_WOW64_32KEY)) #endif EXTERN_C LPVOID DELETE_KEY; EXTERN_C LPVOID DELETE_VALUE; typedef struct { HKEY hKey; LPCTSTR lpSubKey; LPCWSTR lpValueName; DWORD dwType; union { LPVOID lpData; DWORD dwData; } uData; DWORD dataSize; REGSAM samDesired; } RegistryEntry; EXTERN_C HRESULT GetRegistryString(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, REGSAM options, LPWSTR *data, LPDWORD size); EXTERN_C HRESULT GetRegistryDword(HKEY key, LPCWSTR subkeyPath, LPCWSTR valueName, REGSAM options, LPDWORD data); EXTERN_C HRESULT SetRegistryEntries(RegistryEntry entries[]); ================================================ FILE: shared/Startup.h ================================================ #pragma once #include typedef void (WINAPI *_SetDefaultDllDirectories)(DWORD DirectoryFlags); typedef BOOL (WINAPI *_SetDllDirectoryW)(LPWSTR); static inline void HardenDllSearchPaths(void) { // Try our best to secure DLL search paths to just system32 WCHAR windir[MAX_PATH]; WCHAR sysdir[MAX_PATH]; GetWindowsDirectory(windir, ARRAYSIZE(windir)); GetSystemDirectory(sysdir, ARRAYSIZE(sysdir)); // Reset %windir% and %SystemRoot% SetEnvironmentVariable(L"WINDIR", windir); SetEnvironmentVariable(L"SystemRoot", windir); // Reset %PATH% to just system32 WCHAR path[MAX_PATH]; wsprintf(path, L"%ls;%ls", sysdir, windir); SetEnvironmentVariable(L"PATH", path); wcscat(sysdir, L"\\kernel32.dll"); HMODULE kernel32 = GetModuleHandle(windir); if (!kernel32) { return; } // Windows Vista SP2+/7 SP1+ with KB2533623 _SetDefaultDllDirectories $SetDefaultDllDirectories = (_SetDefaultDllDirectories)GetProcAddress(kernel32, "SetDefaultDllDirectories"); if ($SetDefaultDllDirectories) { $SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32); return; } // Windows XP SP1+ _SetDllDirectoryW $SetDllDirectoryW = (_SetDllDirectoryW)GetProcAddress(kernel32, "SetDllDirectoryW"); if ($SetDllDirectoryW) { $SetDllDirectoryW(L""); return; } } static inline void Startup(void) { HardenDllSearchPaths(); } ================================================ FILE: shared/Trace.h ================================================ #pragma once #include "Log.h" #ifdef _DEBUG // Yeah, sue me lol #define TRACE(...) { \ LPWSTR __traceMsg = (LPWSTR)LocalAlloc(LPTR, 4096 * sizeof(WCHAR)); \ wsprintf(__traceMsg, L"%hs(%d): %hs: ", __FILE__, __LINE__, __func__); \ wsprintf(__traceMsg + wcslen(__traceMsg), __VA_ARGS__); \ MessageBox(NULL, __traceMsg, L"Debug", MB_OK); \ LocalFree(__traceMsg); \ LOG(__VA_ARGS__); \ } #else #define TRACE(...) LOG(__VA_ARGS__) #endif #define CHECK_HR_OR_RETURN(thing) \ if (!SUCCEEDED(hr)) { \ TRACE(thing L" failed: %08x", hr); \ return hr; \ } #define CHECK_HR_OR_GOTO_END(thing) \ if (!SUCCEEDED(hr)) { \ TRACE(thing L" failed: %08x", hr); \ goto end; \ } ================================================ FILE: shared/User.h ================================================ #pragma once #include static inline BOOL IsUserAdmin(void) { SID_IDENTIFIER_AUTHORITY authority = SECURITY_NT_AUTHORITY; PSID adminsSid = NULL; BOOL result = FALSE; if (!AllocateAndInitializeSid(&authority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &adminsSid)) { return FALSE; } if (!CheckTokenMembership(NULL, adminsSid, &result)) { result = FALSE; } FreeSid(adminsSid); return result; } static inline BOOL IsElevated(void) { HANDLE hToken = NULL; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) { return FALSE; } TOKEN_ELEVATION elevation; DWORD size = sizeof(elevation); if (!GetTokenInformation(hToken, TokenElevation, &elevation, sizeof(elevation), &size)) { return FALSE; } BOOL result = elevation.TokenIsElevated; CloseHandle(hToken); return result; } static inline DWORD GetTokenIntegrity(void) { #if WINVER < _WIN32_WINNT_WIN2K return MAXDWORD; #else HANDLE hToken = NULL; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) { return MAXDWORD; } BYTE buffer[sizeof(TOKEN_MANDATORY_LABEL) + SECURITY_MAX_SID_SIZE]; DWORD size = sizeof(buffer); if (!GetTokenInformation(hToken, TokenIntegrityLevel, buffer, size, &size)) { CloseHandle(hToken); return MAXDWORD; } CloseHandle(hToken); TOKEN_MANDATORY_LABEL *tokenLabel = (TOKEN_MANDATORY_LABEL *)buffer; return *GetSidSubAuthority(tokenLabel->Label.Sid, *GetSidSubAuthorityCount(tokenLabel->Label.Sid) - 1); #endif } ================================================ FILE: shared/Version.h ================================================ #pragma once #define VERSION 1,13,0,0 #define VERSION_STRING "1.13" ================================================ FILE: shared/VersionInfo.h ================================================ #pragma once #include #include "stdafx.h" // Windows 11 Copper (22H2). "WIN10" typo is from the original sdkddkvers.h #ifndef NTDDI_WIN10_CU #define NTDDI_WIN10_CU 0x0A00000D #endif #define BUILD_WIN10_1507 10240 #define BUILD_WIN10_1511 10586 #define BUILD_WIN10_1607 14393 #define BUILD_WIN10_1703 15063 #define BUILD_WIN10_1709 16299 #define BUILD_WIN10_1803 17134 #define BUILD_WIN10_1809 17763 #define BUILD_WIN10_1903 18362 #define BUILD_WIN10_1909 18363 #define BUILD_WIN10_2004 19041 #define BUILD_WIN10_20H2 19042 #define BUILD_WIN10_21H1 19043 #define BUILD_WIN10_21H2 19044 #define BUILD_WIN10_22H2 19045 #define BUILD_WIN11_21H1 22000 #define BUILD_WIN11_22H2 22621 #define BUILD_WIN11_23H2 22631 #define BUILD_WIN11_24H2 26100 // Undocumented IsOS() flags #define OS_STARTER 38 // Starter Edition #define OS_STORAGESERVER 40 // Windows Storage Server 2003 #define OS_COMPUTECLUSTER 41 // Windows Compute Cluster 2003 #define OS_SERVERR2 42 // Windows Server 2003 R2 (in combination with edition) #define OS_EMBPOS 43 // Windows Embedded for Point of Service #define OS_HOMESERVER 43 // Windows Home Server (2007) #define OS_WINFLP 44 // Windows Fundamentals for Legacy PCs #define OS_EMBSTD2009 45 // Windows Embedded Standard 2009 #define OS_EMBPOS2009 46 // Windows Embedded POSReady 2009 EXTERN_C IMAGE_DOS_HEADER __ImageBase; #define OWN_MODULE ((HMODULE)&__ImageBase) static OSVERSIONINFOEX _versionInfo; static ALWAYS_INLINE OSVERSIONINFOEX *GetVersionInfo(void) { if (_versionInfo.dwOSVersionInfoSize == 0) { ZeroMemory(&_versionInfo, sizeof(OSVERSIONINFOEX)); _versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); GetVersionEx((LPOSVERSIONINFO)&_versionInfo); } return &_versionInfo; } static ALWAYS_INLINE WORD GetWinVer(void) { return __builtin_bswap16(LOWORD(GetVersion())); } static ALWAYS_INLINE WORD GetWinBuild(void) { return HIWORD(GetVersion()); } #define _IS_OS_MACRO(name, ver) \ static ALWAYS_INLINE BOOL IsWin ## name(void) { \ return GetWinVer() == ver; \ } \ static ALWAYS_INLINE BOOL AtLeastWin ## name(void) { \ return GetWinVer() >= ver; \ } \ static ALWAYS_INLINE BOOL AtMostWin ## name(void) { \ return GetWinVer() <= ver; \ } _IS_OS_MACRO(NT4, 0x0400) _IS_OS_MACRO(2000, 0x0500) _IS_OS_MACRO(XP2002, 0x0501) _IS_OS_MACRO(XP2003, 0x0502) _IS_OS_MACRO(Vista, 0x0600) _IS_OS_MACRO(7, 0x0601) _IS_OS_MACRO(8, 0x0602) _IS_OS_MACRO(8_1, 0x0603) _IS_OS_MACRO(10, 0x0A00) #undef _IS_OS_MACRO #define _IS_BUILD_MACRO(ver) \ static ALWAYS_INLINE BOOL IsWin ## ver(void) { \ return GetWinBuild() == BUILD_WIN ## ver; \ } \ static ALWAYS_INLINE BOOL AtLeastWin ## ver(void) { \ return GetWinBuild() >= BUILD_WIN ## ver; \ } \ static ALWAYS_INLINE BOOL AtMostWin ## ver(void) { \ return GetWinBuild() <= BUILD_WIN ## ver; \ } _IS_BUILD_MACRO(10_1507) _IS_BUILD_MACRO(10_1511) _IS_BUILD_MACRO(10_1607) _IS_BUILD_MACRO(10_1703) _IS_BUILD_MACRO(10_1709) _IS_BUILD_MACRO(10_1803) _IS_BUILD_MACRO(10_1809) _IS_BUILD_MACRO(10_1903) _IS_BUILD_MACRO(10_1909) _IS_BUILD_MACRO(10_2004) _IS_BUILD_MACRO(10_20H2) _IS_BUILD_MACRO(10_21H1) _IS_BUILD_MACRO(10_21H2) _IS_BUILD_MACRO(10_22H2) _IS_BUILD_MACRO(11_21H1) _IS_BUILD_MACRO(11_22H2) _IS_BUILD_MACRO(11_23H2) _IS_BUILD_MACRO(11_24H2) #undef _IS_BUILD_MACRO static ALWAYS_INLINE HRESULT GetOwnFileName(LPWSTR *filename) { *filename = (LPWSTR)LocalAlloc(LPTR, MAX_PATH * sizeof(WCHAR)); if (GetModuleFileName(OWN_MODULE, *filename, MAX_PATH) == 0) { HRESULT hr = HRESULT_FROM_WIN32(GetLastError()); LocalFree(*filename); *filename = NULL; return hr; } return S_OK; } ================================================ FILE: shared/ViewLog.c ================================================ #include "ViewLog.h" HRESULT ViewLog(LogAction log, int nCmdShow, BOOL showErrors) { if (log < 0 || log > LogActionWindowsUpdate) { return E_INVALIDARG; } WCHAR workDir[MAX_PATH]; switch (log) { case LogActionSystem: { LPCWSTR logsPath = AtLeastWinVista() ? L"%SystemRoot%\\Logs" : L"%SystemRoot%\\Temp"; ExpandEnvironmentStrings(logsPath, workDir, ARRAYSIZE(workDir)); break; } case LogActionLocal: { GetTempPath(ARRAYSIZE(workDir), workDir); break; } case LogActionLocalLow: { if (!AtLeastWinVista()) { return HRESULT_FROM_WIN32(ERROR_OLD_WIN_VERSION); } if (AtLeastWin7()) { // AppData\Low\Temp typedef HRESULT (*_SHGetKnownFolderPath)(const KNOWNFOLDERID *rfid, DWORD dwFlags, HANDLE hToken, PWSTR *ppszPath); _SHGetKnownFolderPath $SHGetKnownFolderPath = (_SHGetKnownFolderPath)GetProcAddress(GetModuleHandle(L"shell32.dll"), "SHGetKnownFolderPath"); if ($SHGetKnownFolderPath == NULL) { return HRESULT_FROM_WIN32(ERROR_OLD_WIN_VERSION); } LPWSTR localLow; HRESULT hr = $SHGetKnownFolderPath(&FOLDERID_LocalAppDataLow, CSIDL_FLAG_CREATE, NULL, &localLow); CHECK_HR_OR_RETURN(L"SHGetKnownFolderPath"); wsprintf(workDir, L"%ls\\Temp", localLow); LocalFree(localLow); } else { // AppData\Local\Temp\Low WCHAR localTemp[MAX_PATH]; GetTempPath(ARRAYSIZE(localTemp), localTemp); wsprintf(workDir, L"%ls\\Low", localTemp); } break; } case LogActionWindowsUpdate: { HRESULT hr = SHGetFolderPath(0, CSIDL_WINDOWS, NULL, 0, workDir); CHECK_HR_OR_RETURN(L"SHGetFolderPath"); if (AtLeastWin10()) { // Windows 10 moves WU/USO logs to ETW. The ETW logs can be converted back to a plain-text .log using a cmdlet. WCHAR powershell[MAX_PATH]; ExpandEnvironmentStrings(L"%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", powershell, ARRAYSIZE(powershell)); DWORD code = 0; hr = Exec(NULL, powershell, L"-NoProfile -Command Get-WindowsUpdateLog", workDir, nCmdShow, TRUE, &code); CHECK_HR_OR_RETURN(L"Exec"); if (code != 0) { return E_FAIL; } // On success, the log is written to Desktop\WindowsUpdate.log. hr = SHGetFolderPath(0, CSIDL_DESKTOP, NULL, 0, workDir); CHECK_HR_OR_RETURN(L"SHGetFolderPath"); } break; } } LPCWSTR logFileName = log == LogActionWindowsUpdate ? L"WindowsUpdate.log" : L"LegacyUpdate.log"; WCHAR finalPath[MAX_PATH]; wsprintf(finalPath, L"%ls\\%ls", workDir, logFileName); SHELLEXECUTEINFO execInfo = {0}; execInfo.cbSize = sizeof(execInfo); execInfo.lpVerb = L"open"; execInfo.lpFile = finalPath; execInfo.nShow = nCmdShow; execInfo.fMask = showErrors ? 0 : SEE_MASK_FLAG_NO_UI; HRESULT hr = ExecEx(&execInfo, FALSE, NULL); return hr; } ================================================ FILE: shared/ViewLog.h ================================================ #pragma once #include "stdafx.h" #include #include #include #include "Exec.h" #include "HResult.h" #include "VersionInfo.h" typedef enum LogAction { LogActionSystem, LogActionLocal, LogActionLocalLow, LogActionWindowsUpdate } LogAction; HRESULT ViewLog(LogAction log, int nCmdShow, BOOL showErrors); ================================================ FILE: shared/WMI.c ================================================ #include "stdafx.h" #include "WMI.h" #include #ifdef CINTERFACE #define our_CLSID_WbemLocator &CLSID_WbemLocator #define our_IID_IWbemLocator &IID_IWbemLocator #else #define our_CLSID_WbemLocator CLSID_WbemLocator #define our_IID_IWbemLocator IID_IWbemLocator #define IWbemLocator_ConnectServer(obj, ...) obj->ConnectServer(__VA_ARGS__) #define IWbemServices_ExecQuery(obj, ...) obj->ExecQuery(__VA_ARGS__) #define IEnumWbemClassObject_Next(obj, ...) obj->Next(__VA_ARGS__) #define IWbemClassObject_Get(obj, ...) obj->Get(__VA_ARGS__) #define IWbemClassObject_Release(obj) obj->Release() #define IEnumWbemClassObject_Release(obj) obj->Release() #define IWbemServices_Release(obj) obj->Release() #define IWbemLocator_Release(obj) obj->Release() #endif HRESULT QueryWMIProperty(LPCWSTR query, LPCWSTR property, LPVARIANT value) { IWbemLocator *locator = NULL; IWbemServices *services = NULL; IEnumWbemClassObject *enumerator = NULL; IWbemClassObject *object = NULL; BSTR server, wql, queryBstr, propBstr; ULONG uReturn = 0; HRESULT hr = CoCreateInstance(our_CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, our_IID_IWbemLocator, (void **)&locator); CHECK_HR_OR_GOTO_END(L"CoCreateInstance"); server = SysAllocString(L"ROOT\\CIMV2"); hr = IWbemLocator_ConnectServer(locator, server, NULL, NULL, NULL, 0, NULL, NULL, &services); SysFreeString(server); CHECK_HR_OR_GOTO_END(L"ConnectServer"); hr = CoSetProxyBlanket((IUnknown *)services, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE); CHECK_HR_OR_GOTO_END(L"CoSetProxyBlanket"); wql = SysAllocString(L"WQL"); queryBstr = SysAllocString(query); hr = IWbemServices_ExecQuery(services, wql, queryBstr, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &enumerator); SysFreeString(wql); SysFreeString(queryBstr); CHECK_HR_OR_GOTO_END(L"ExecQuery"); uReturn = 0; hr = IEnumWbemClassObject_Next(enumerator, (LONG)WBEM_INFINITE, 1, &object, &uReturn); CHECK_HR_OR_GOTO_END(L"Next"); propBstr = SysAllocString(property); hr = IWbemClassObject_Get(object, propBstr, 0, value, NULL, NULL); SysFreeString(propBstr); CHECK_HR_OR_GOTO_END(L"Get"); end: if (object) { IWbemClassObject_Release(object); } if (enumerator) { IEnumWbemClassObject_Release(enumerator); } if (services) { IWbemServices_Release(services); } if (locator) { IWbemLocator_Release(locator); } return hr; } ================================================ FILE: shared/WMI.h ================================================ #pragma once #include #include EXTERN_C HRESULT QueryWMIProperty(LPCWSTR query, LPCWSTR property, LPVARIANT value); ================================================ FILE: shared/Wow64.c ================================================ #include "stdafx.h" #include "Wow64.h" #if !_WIN64 typedef void (WINAPI *_GetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo); typedef BOOL (WINAPI *_Wow64DisableWow64FsRedirection)(PVOID *OldValue); typedef BOOL (WINAPI *_Wow64RevertWow64FsRedirection)(PVOID OldValue); static BOOL _loadedWow64; static _GetNativeSystemInfo $GetNativeSystemInfo = NULL; static _Wow64DisableWow64FsRedirection $Wow64DisableWow64FsRedirection; static _Wow64RevertWow64FsRedirection $Wow64RevertWow64FsRedirection; static void LoadWow64Symbols(void) { if (!_loadedWow64) { _loadedWow64 = TRUE; HMODULE kernel32 = GetModuleHandle(L"kernel32.dll"); $GetNativeSystemInfo = (_GetNativeSystemInfo)GetProcAddress(kernel32, "GetNativeSystemInfo"); $Wow64DisableWow64FsRedirection = (_Wow64DisableWow64FsRedirection)GetProcAddress(kernel32, "Wow64DisableWow64FsRedirection"); $Wow64RevertWow64FsRedirection = (_Wow64RevertWow64FsRedirection)GetProcAddress(kernel32, "Wow64RevertWow64FsRedirection"); } } void OurGetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo) { LoadWow64Symbols(); if ($GetNativeSystemInfo) { $GetNativeSystemInfo(lpSystemInfo); return; } GetSystemInfo(lpSystemInfo); } BOOL DisableWow64FsRedirection(PVOID *OldValue) { LoadWow64Symbols(); if ($Wow64DisableWow64FsRedirection) { return $Wow64DisableWow64FsRedirection(OldValue); } return TRUE; } BOOL RevertWow64FsRedirection(PVOID OldValue) { LoadWow64Symbols(); if ($Wow64RevertWow64FsRedirection) { return $Wow64RevertWow64FsRedirection(OldValue); } return TRUE; } #endif ================================================ FILE: shared/Wow64.h ================================================ #pragma once #include #if _WIN64 #define OurGetNativeSystemInfo(lpSystemInfo) GetNativeSystemInfo(lpSystemInfo) #define DisableWow64FsRedirection(OldValue) TRUE #define RevertWow64FsRedirection(OldValue) TRUE #else EXTERN_C void OurGetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo); EXTERN_C BOOL DisableWow64FsRedirection(PVOID *OldValue); EXTERN_C BOOL RevertWow64FsRedirection(PVOID OldValue); #endif ================================================ FILE: shared/stdafx.h ================================================ #define ALWAYS_INLINE inline __attribute__((__always_inline__))