summaryrefslogtreecommitdiff
path: root/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI
diff options
context:
space:
mode:
Diffstat (limited to 'print/OEM Printer Customization Plug-in Samples/C++/ThemeUI')
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/OEMUI.rc169
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUI.Manifest22
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj1120
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj.Filters327
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/debug.h82
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.cpp187
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.h55
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/dllentry.cpp66
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.cpp118
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.h18
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.cpp29
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.h21
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.cpp575
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.h179
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oem.h22
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.cpp756
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.h45
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precomp.h61
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precompsrc.cpp1
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/resource.h24
-rw-r--r--print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/themeuismpl.def3
21 files changed, 3880 insertions, 0 deletions
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/OEMUI.rc b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/OEMUI.rc
new file mode 100644
index 00000000..a6491905
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/OEMUI.rc
@@ -0,0 +1,169 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "Comments", "Written by Windows Printing & Imaging Team"
+ VALUE "CompanyName", "Microsoft Corp."
+ VALUE "FileDescription", "OEM UI Test Module."
+ VALUE "FileVersion", "1, 0, 0, 1"
+ VALUE "InternalName", "OEMUI"
+ VALUE "LegalCopyright", "Copyright � 1998 - 2003 Microsoft Corp."
+ VALUE "LegalTrademarks", "Microsoft� is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation"
+ VALUE "OriginalFilename", "OEMUI.dll"
+ VALUE "ProductName", "Microsoft OEMUI"
+ VALUE "ProductVersion", "1.1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_DEVICE_PROPPAGE DIALOG 0, 0, 179, 113
+STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
+CAPTION "Device Property Page"
+FONT 8, "MS Shell Dialog"
+BEGIN
+ LTEXT "OEM UI Added Page",IDC_STATIC,55,14,68,11
+ PUSHBUTTON "Calibrate",IDC_CALIBRATE,61,34,50,14
+END
+
+IDD_DOC_PROPPAGE DIALOG 0, 0, 210, 154
+STYLE DS_SETFONT | WS_CHILD | WS_DISABLED | WS_CAPTION
+CAPTION "Document Property Page"
+FONT 8, "MS Shell Dialog"
+BEGIN
+ LTEXT "OEM UI Document Property Page",IDC_STATIC,60,73,108,8
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_DEVICE_PROPPAGE, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 172
+ TOPMARGIN, 8
+ BOTTOMMARGIN, 106
+ END
+
+ IDD_DOC_PROPPAGE, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 203
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 147
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_SECTION "OEM UI Added Item"
+ IDS_CALIBRATED "Printer has been calibrated."
+ IDS_NAME "OEM UI Customization DLL"
+ IDS_DEV_SECTION "Device Settings OEM UI Added Item"
+ IDS_ADV_SECTION "Advanced OEM UI Added Item"
+END
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUI.Manifest b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUI.Manifest
new file mode 100644
index 00000000..bb48af65
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUI.Manifest
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version=SXS_ASSEMBLY_VERSION
+ processorArchitecture=SXS_PROCESSOR_ARCHITECTURE
+ name=SXS_ASSEMBLY_NAME
+ type="win32"
+/>
+<description>Your app description here</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture=SXS_PROCESSOR_ARCHITECTURE
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly>
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj
new file mode 100644
index 00000000..4abfd7bb
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj
@@ -0,0 +1,1120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Win10 Debug|ARM64">
+ <Configuration>Win10 Debug</Configuration>
+ <Platform>ARM64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win10 Debug|Win32">
+ <Configuration>Win10 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win10 Debug|x64">
+ <Configuration>Win10 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win10 Release|ARM64">
+ <Configuration>Win10 Release</Configuration>
+ <Platform>ARM64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win10 Release|Win32">
+ <Configuration>Win10 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win10 Release|x64">
+ <Configuration>Win10 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Debug|Win32">
+ <Configuration>Win8.1 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Debug|Win32">
+ <Configuration>Win8 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Debug|Win32">
+ <Configuration>Win7 Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Release|Win32">
+ <Configuration>Win8.1 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Release|Win32">
+ <Configuration>Win8 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Release|Win32">
+ <Configuration>Win7 Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Debug|x64">
+ <Configuration>Win8.1 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Debug|x64">
+ <Configuration>Win8 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Debug|x64">
+ <Configuration>Win7 Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8.1 Release|x64">
+ <Configuration>Win8.1 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win8 Release|x64">
+ <Configuration>Win8 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Win7 Release|x64">
+ <Configuration>Win7 Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{EA206DEA-26E6-4FD4-BF68-23F222C5E211}</ProjectGuid>
+ <RootNamespace>$(MSBuildProjectName)</RootNamespace>
+ <Configuration Condition="'$(Configuration)' == ''">Win10 Debug</Configuration>
+ <Platform Condition="'$(Platform)' == ''">Win32</Platform>
+ <SampleGuid>{7ABB810D-F51B-46DA-8A6C-6883AF316932}</SampleGuid>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <TargetVersion>Win7</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <TargetVersion>Win8</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'" Label="Configuration">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'" Label="Configuration">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <TargetVersion>Win7</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <TargetVersion>Win8</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'" Label="Configuration">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'" Label="Configuration">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <TargetVersion>Win7</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <TargetVersion>Win8</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'" Label="Configuration">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>False</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <TargetVersion>Win7</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <TargetVersion>Win8</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <TargetVersion>WindowsV6.3</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers8.1</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'" Label="Configuration">
+ <TargetVersion>Windows10</TargetVersion>
+ <UseDebugLibraries>True</UseDebugLibraries>
+ <DriverType />
+ <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <PropertyGroup>
+ <OutDir>$(IntDir)</OutDir>
+ </PropertyGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+ </ImportGroup>
+ <ItemGroup Label="WrappedTaskItems" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'">
+ <TargetName>ThemeUISmpl</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'">
+ <ClCompile>
+ <TreatWarningAsError>true</TreatWarningAsError>
+ <WarningLevel>Level4</WarningLevel>
+ </ClCompile>
+ <Link>
+ <EntryPointSymbol Condition="'$(Platform)'=='win32'">_DllMainCRTStartup@12</EntryPointSymbol>
+ <EntryPointSymbol Condition="'$(Platform)'!='win32'">_DllMainCRTStartup</EntryPointSymbol>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'">
+ <Link>
+ <AdditionalOptions>%(AdditionalOptions) -ignore:4049,4217</AdditionalOptions>
+ <AdditionalDependencies>%(AdditionalDependencies);kernel32.lib;user32.lib;winspool.lib;ole32.lib;advapi32.lib;uuid.lib</AdditionalDependencies>
+ </Link>
+ <ClCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ClCompile>
+ <Midl>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </Midl>
+ <ResourceCompile>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);USERMODE_DRIVER;_UNICODE;UNICODE;ISOLATION_AWARE_ENABLED</PreprocessorDefinitions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions);MANIFEST_RESOURCE=2</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'">
+ <WIN32_WINNT_VERSION>0x0A00</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x0A000000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'">
+ <WIN32_WINNT_VERSION>0x0A00</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x0A000000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'">
+ <WIN32_WINNT_VERSION>0x0A00</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x0A000000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'">
+ <WIN32_WINNT_VERSION>0x0A00</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x0A000000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'">
+ <WIN32_WINNT_VERSION>0x0A00</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x0A000000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <WIN32_WINNT_VERSION>0x0603</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x06030000</NTDDI_VERSION>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'">
+ <WIN32_WINNT_VERSION>0x0A00</WIN32_WINNT_VERSION>
+ <NTDDI_VERSION>0x0A000000</NTDDI_VERSION>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|ARM64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|x64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|ARM64'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Release|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win10 Debug|Win32'">
+ <Link>
+ <ModuleDefinitionFile>ThemeUISmpl.def</ModuleDefinitionFile>
+ </Link>
+ <ClCompile>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="devmode.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Use</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ClCompile Include="dllentry.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Use</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ClCompile Include="fusutils.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Use</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ClCompile Include="globals.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Use</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ClCompile Include="intrface.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Use</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ClCompile Include="OEMUI.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Use</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ClCompile Include="precompsrc.cpp">
+ <AdditionalIncludeDirectories>;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreCompiledHeaderFile>precomp.h</PreCompiledHeaderFile>
+ <PreCompiledHeader>Create</PreCompiledHeader>
+ <PreCompiledHeaderOutputFile>$(IntDir)\precomp.h.pch</PreCompiledHeaderOutputFile>
+ </ClCompile>
+ <ResourceCompile Include="OEMUI.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <Inf Exclude="@(Inf)" Include="*.inf" />
+ <FilesToPackage Include="$(TargetPath)" Condition="'$(ConfigurationType)'=='Driver' or '$(ConfigurationType)'=='DynamicLibrary'" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Exclude="@(None)" Include="*.txt;*.htm;*.html" />
+ <None Exclude="@(None)" Include="*.ico;*.cur;*.bmp;*.dlg;*.rct;*.gif;*.jpg;*.jpeg;*.wav;*.jpe;*.tiff;*.tif;*.png;*.rc2" />
+ <None Exclude="@(None)" Include="*.def;*.bat;*.hpj;*.asmx" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Exclude="@(ClInclude)" Include="*.h;*.hpp;*.hxx;*.hm;*.inl;*.xsd" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+</Project> \ No newline at end of file
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj.Filters b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj.Filters
new file mode 100644
index 00000000..d8206354
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/ThemeUISmpl.vcxproj.Filters
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx;*</Extensions>
+ <UniqueIdentifier>{18CF118F-704E-4B55-9621-B0D2F73CBFBE}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Header Files">
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ <UniqueIdentifier>{44047F2E-3DA5-4847-BAE3-6573B04506AF}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Resource Files">
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms;man;xml</Extensions>
+ <UniqueIdentifier>{695ECF76-7AFF-4B2D-A4E5-2138B4CC5B5A}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="devmode.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="dllentry.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="fusutils.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="globals.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="intrface.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="OEMUI.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="precompsrc.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="debug.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="devmode.h" />
+ <ClInclude Include="fusutils.h" />
+ <ClInclude Include="globals.h" />
+ <ClInclude Include="intrface.h" />
+ <ClInclude Include="oem.h" />
+ <ClInclude Include="oemui.h" />
+ <ClInclude Include="precomp.h" />
+ <ClInclude Include="resource.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="OEMUI.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="themeuismpl.def">
+ <Filter>Source Files</Filter>
+ </None>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/debug.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/debug.h
new file mode 100644
index 00000000..0414569c
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/debug.h
@@ -0,0 +1,82 @@
+// 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.
+//
+// Copyright 1996 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Debug.H
+//
+// PURPOSE: Define common data types, and external function prototypes
+// for debugging functions. Also defines the various debug macros.
+//
+//
+
+#pragma once
+
+/////////////////////////////////////////////////////////
+// Macros
+/////////////////////////////////////////////////////////
+//
+// These macros are used for debugging purposes. They expand
+// to white spaces on a free build. Here is a brief description
+// of what they do and how they are used:
+//
+// giDebugLevel
+// Global variable which set the current debug level to control
+// the amount of debug messages emitted.
+//
+// WARNING(msg)
+// Display a message if the current debug level is <= DBG_WARNING.
+// The message format is: WRN filename (linenumber): message
+//
+// ERR(msg)
+// Similiar to WARNING macro above - displays a message
+// if the current debug level is <= DBG_ERROR.
+//
+// ASSERT(cond)
+// Verify a condition is true. If not, force a breakpoint.
+//
+// RIP(msg)
+// Display a message and force a breakpoint.
+//
+// Usage:
+// WARNING("App passed NULL pointer, ignoring...\n");
+//
+
+#define DBG_VERBOSE 0
+#define DBG_WARNING 1
+#define DBG_ERROR 2
+#define DBG_NONE 3
+
+// VC and Build use different debug defines.
+#if defined (DBG) || defined (_DEBUG)
+
+ // __declspec(selectany) ensures that even if this is defined in multiple compilation
+ // modules, they will all resolve to the same symbol in the linked DLL
+ __declspec(selectany) INT giDebugLevel = 2;
+
+ #define STRINGIZE(x) #x
+ #define QUOTE(x) STRINGIZE(x)
+ #define FILE_AND_LINE __FILE__ "@" QUOTE(__LINE__)
+
+ #define VERBOSE(msg) { if(giDebugLevel <= DBG_VERBOSE) OutputDebugStringA( FILE_AND_LINE ": " msg); }
+ #define WARNING(msg) { if(giDebugLevel <= DBG_WARNING) OutputDebugStringA( FILE_AND_LINE ": Warning: " msg); }
+ #define ERR(msg) { if(giDebugLevel <= DBG_ERROR) OutputDebugStringA(FILE_AND_LINE ": Error:" msg); }
+ #define ASSERT(cond) { if (!(cond)) RIP("\n"); }
+ #define RIP(msg) { OutputDebugStringA(FILE_AND_LINE ": Error (not recoverable): " msg); DebugBreak(); }
+
+#else // !DBG
+
+ #define VERBOSE(msg)
+ #define WARNING(msg)
+ #define ERR(msg)
+ #define ASSERT(cond)
+ #define RIP(msg)
+
+#endif
+
+
+
+
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.cpp
new file mode 100644
index 00000000..15234361
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.cpp
@@ -0,0 +1,187 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Devmode.cpp
+//
+//
+// PURPOSE: Implementation of Devmode functions shared with OEM UI and OEM rendering modules.
+//
+
+
+#include "precomp.h"
+#include "oemui.h"
+#include "debug.h"
+#include "devmode.h"
+
+
+// This indicates to Prefast that this is a usermode driver file.
+_Analysis_mode_(_Analysis_code_type_user_driver_);
+
+//
+//Performs operation on UI Plugins Private DevMode Members.
+//Called via IOemUI::DevMode
+//
+
+HRESULT hrOEMDevMode(DWORD dwMode, POEMDMPARAM pOemDMParam)
+{
+ POEMDEV pOEMDevIn;
+ POEMDEV pOEMDevOut;
+
+
+ // Verify parameters.
+ if( (NULL == pOemDMParam)
+ ||
+ ( (OEMDM_SIZE != dwMode)
+ &&
+ (OEMDM_DEFAULT != dwMode)
+ &&
+ (OEMDM_CONVERT != dwMode)
+ &&
+ (OEMDM_MERGE != dwMode)
+ )
+ )
+ {
+ ERR(DLLTEXT("DevMode() ERROR_INVALID_PARAMETER.\r\n"));
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return E_FAIL;
+ }
+
+ // Cast generic (i.e. PVOID) to OEM private devomode pointer type.
+ pOEMDevIn = (POEMDEV) pOemDMParam->pOEMDMIn;
+ pOEMDevOut = (POEMDEV) pOemDMParam->pOEMDMOut;
+
+ switch(dwMode)
+ {
+ //
+ //The Method should return the size of the memory allocation needed to store the UI plugin Private DEVMODE.
+ //
+ case OEMDM_SIZE:
+ pOemDMParam->cbBufSize = sizeof(OEMDEV);
+ break;
+
+ //
+ //Should fill the Private DEVMODE with the default values.
+ //
+ case OEMDM_DEFAULT:
+ //
+ //OEM_DMEXTRAHEADER Members
+ //
+ pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV);
+ pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE;
+ pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION;
+
+ //
+ //Private members
+ //
+ pOEMDevOut->dwDriverData = 0;
+ pOEMDevOut->dwAdvancedData = 0;
+
+ VERBOSE(DLLTEXT("pOEMDevOut after setting default values:\r\n"));
+ break;
+
+ //
+ //The method should convert private DEVMODE members to the current version, if necessary.
+ //
+ case OEMDM_CONVERT:
+ ConvertOEMDevmode(pOEMDevIn, pOEMDevOut);
+ break;
+
+ //
+ //The method should validate the information contained in private DEVMODE members and merge validated values into a private DEVMODE structure containing default values
+ //
+ case OEMDM_MERGE:
+ ConvertOEMDevmode(pOEMDevIn, pOEMDevOut);
+ MakeOEMDevmodeValid(pOEMDevOut);
+ break;
+ }
+
+ return S_OK;
+}
+
+
+BOOL ConvertOEMDevmode(PCOEMDEV pOEMDevIn, POEMDEV pOEMDevOut)
+{
+ if( (NULL == pOEMDevIn)
+ ||
+ (NULL == pOEMDevOut)
+ )
+ {
+ ERR(DLLTEXT("ConvertOEMDevmode() invalid parameters.\r\n"));
+ return FALSE;
+ }
+
+ // Check OEM Signature, if it doesn't match ours,
+ // then just assume DMIn is bad and use defaults.
+ if(pOEMDevIn->dmOEMExtra.dwSignature == pOEMDevOut->dmOEMExtra.dwSignature)
+ {
+ VERBOSE(DLLTEXT("Converting private OEM Devmode.\r\n"));
+ VERBOSE(DLLTEXT("pOEMDevIn:\r\n"));
+
+ // Set the devmode defaults so that anything the isn't copied over will
+ // be set to the default value.
+ pOEMDevOut->dwDriverData = 0;
+ pOEMDevOut->dwAdvancedData = 0;
+
+ // Copy the old structure in to the new using which ever size is the smaller.
+ // Devmode maybe from newer Devmode (not likely since there is only one), or
+ // Devmode maybe a newer Devmode, in which case it maybe larger,
+ // but the first part of the structure should be the same.
+
+ // DESIGN ASSUMPTION: the private DEVMODE structure only gets added to;
+ // the fields that are in the DEVMODE never change only new fields get added to the end.
+
+ memcpy(pOEMDevOut, pOEMDevIn, __min(pOEMDevOut->dmOEMExtra.dwSize, pOEMDevIn->dmOEMExtra.dwSize));
+
+ // Re-fill in the size and version fields to indicated
+ // that the DEVMODE is the current private DEVMODE version.
+ pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV);
+ pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION;
+ }
+ else
+ {
+ WARNING(DLLTEXT("Unknown DEVMODE signature, pOEMDMIn ignored.\r\n"));
+
+ // Don't know what the input DEVMODE is, so just use defaults.
+ pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV);
+ pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE;
+ pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION;
+ pOEMDevOut->dwDriverData = 0;
+ pOEMDevOut->dwAdvancedData = 0;
+ }
+
+ return TRUE;
+}
+
+
+BOOL MakeOEMDevmodeValid(POEMDEV pOEMDevmode)
+{
+ if(NULL == pOEMDevmode)
+ {
+ return FALSE;
+ }
+
+ // ASSUMPTION: pOEMDevmode is large enough to contain OEMDEV structure.
+
+ // Make sure that dmOEMExtra indicates the current OEMDEV structure.
+ pOEMDevmode->dmOEMExtra.dwSize = sizeof(OEMDEV);
+ pOEMDevmode->dmOEMExtra.dwSignature = OEM_SIGNATURE;
+ pOEMDevmode->dmOEMExtra.dwVersion = OEM_VERSION;
+
+ // Set driver data, if not valid.
+ if(pOEMDevmode->dwDriverData > 100)
+ {
+ pOEMDevmode->dwDriverData = 0;
+ }
+
+ // Set Advanced driver data, if not valid.
+ if(pOEMDevmode->dwAdvancedData > 100)
+ {
+ pOEMDevmode->dwAdvancedData = 0;
+ }
+
+ return TRUE;
+}
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.h
new file mode 100644
index 00000000..b55fb016
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/devmode.h
@@ -0,0 +1,55 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Devmode.h
+//
+//
+// PURPOSE: Define common data types, and external function prototypes
+// for devmode functions.
+//
+#pragma once
+
+////////////////////////////////////////////////////////
+// OEM Devmode Defines
+////////////////////////////////////////////////////////
+
+
+
+
+////////////////////////////////////////////////////////
+// OEM Devmode Type Definitions
+////////////////////////////////////////////////////////
+
+//
+//Can add info to the private devmode bellow here.
+//Note :
+// This structure must be prefixed by OEM_DMEXTRAHEADER
+// Your plug-in must implement the IPrintOemUI::DevMode method
+//
+typedef struct tagOEMDEV
+{
+ OEM_DMEXTRAHEADER dmOEMExtra;
+ DWORD dwDriverData;
+ DWORD dwAdvancedData;
+
+ //
+ //Private DevMode Members
+ //
+
+} OEMDEV, *POEMDEV;
+
+typedef const OEMDEV *PCOEMDEV;
+
+
+
+/////////////////////////////////////////////////////////
+// ProtoTypes
+/////////////////////////////////////////////////////////
+
+HRESULT hrOEMDevMode(DWORD dwMode, POEMDMPARAM pOemDMParam);
+BOOL ConvertOEMDevmode(PCOEMDEV pOEMDevIn, POEMDEV pOEMDevOut);
+BOOL MakeOEMDevmodeValid(POEMDEV pOEMDevmode);
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/dllentry.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/dllentry.cpp
new file mode 100644
index 00000000..a7c846b7
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/dllentry.cpp
@@ -0,0 +1,66 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: dllentry.cpp
+//
+//
+// PURPOSE: Source module for DLL entry function(s).
+//
+
+#include "precomp.h"
+#include "oemui.h"
+#include "fusutils.h"
+#include "debug.h"
+
+// This indicates to Prefast that this is a usermode driver file.
+_Analysis_mode_(_Analysis_code_type_user_driver_);
+
+///////////////////////////////////////////////////////////
+//
+// DLL entry point
+//
+BOOL WINAPI DllMain(HINSTANCE hInst, WORD wReason, LPVOID lpReserved)
+{
+ UNREFERENCED_PARAMETER(lpReserved);
+
+ switch(wReason)
+ {
+ case DLL_PROCESS_ATTACH:
+ VERBOSE(DLLTEXT("Process attach.\r\n"));
+
+ // Store the module handle in case we need it later.
+ ghInstance = hInst;
+
+ // NOTE: We don't create an Activation Context on module load,
+ // but on need of an Avtivation Context; the first time
+ // GetMyActivationContext() or CreateMyActivationContext() is called.
+ break;
+
+ case DLL_THREAD_ATTACH:
+ VERBOSE(DLLTEXT("Thread attach.\r\n"));
+ break;
+
+ case DLL_PROCESS_DETACH:
+ VERBOSE(DLLTEXT("Process detach.\r\n"));
+
+ // Release the Activation Context if we created one somewhere
+ // by calling GetMyActivationContext() or CreateMyActivationContext();
+ if(INVALID_HANDLE_VALUE != ghActCtx)
+ {
+ ReleaseActCtx(ghActCtx);
+ ghActCtx = INVALID_HANDLE_VALUE;
+ }
+ break;
+
+ case DLL_THREAD_DETACH:
+ VERBOSE(DLLTEXT("Thread detach.\r\n"));
+ break;
+ }
+
+ return TRUE;
+}
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.cpp
new file mode 100644
index 00000000..0f9bf2c3
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.cpp
@@ -0,0 +1,118 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: fsutils.h
+//
+//
+// PURPOSE: Fusion utilities
+//
+
+#include "precomp.h"
+#include "globals.h"
+#include "fusutils.h"
+
+#define MAX_LOOP 10
+
+// This indicates to Prefast that this is a usermode driver file.
+_Analysis_mode_(_Analysis_code_type_user_driver_);
+
+
+HANDLE GetMyActivationContext()
+{
+ // Make sure we've created our activation context.
+ CreateMyActivationContext();
+
+ // Return the global.
+ return ghActCtx;
+}
+
+
+BOOL CreateMyActivationContext()
+{
+ if(INVALID_HANDLE_VALUE != ghActCtx)
+ {
+ return TRUE;
+ }
+
+ ghActCtx = CreateActivationContextFromResource(ghInstance, MAKEINTRESOURCE(MANIFEST_RESOURCE));
+
+ return (INVALID_HANDLE_VALUE != ghActCtx);
+}
+
+
+
+HANDLE CreateActivationContextFromResource(HMODULE hModule, LPCTSTR pszResourceName)
+{
+ DWORD dwSize = MAX_PATH;
+ DWORD dwUsed = 0;
+ DWORD dwLoop;
+ PTSTR pszModuleName = NULL;
+ ACTCTX act;
+ HANDLE hActCtx = INVALID_HANDLE_VALUE;
+
+
+ // Get the name for the module that contains the manifest resource
+ // to create the Activation Context from.
+ dwLoop = 0;
+ do
+ {
+ // May need to allocate or re-alloc buffer for module name.
+ if(NULL != pszModuleName)
+ {
+ // Need to re-alloc bigger buffer.
+
+ // First, delete old buffer.
+ delete[] pszModuleName;
+
+ // Second, increase buffer alloc size.
+ dwSize <<= 1;
+ }
+ pszModuleName = new TCHAR[dwSize];
+ if(NULL == pszModuleName)
+ {
+ goto Exit;
+ }
+
+ // Try to get the module name.
+ dwUsed = GetModuleFileName(hModule, pszModuleName, dwSize);
+
+ // Check to see if it failed.
+ if(0 == dwUsed)
+ {
+ goto Exit;
+ }
+
+ // If dwUsed is equla to dwSize or larger,
+ // the buffer passed in wasn't big enough.
+ } while ( (dwUsed >= dwSize) && (++dwLoop < MAX_LOOP) );
+
+ // Now let's try to create an activation context
+ // from manifest resource.
+ ::ZeroMemory(&act, sizeof(act));
+ act.cbSize = sizeof(act);
+ act.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID;
+ act.lpResourceName = pszResourceName;
+ act.lpSource = pszModuleName;
+
+ hActCtx = CreateActCtx(&act);
+
+
+Exit:
+
+ //
+ // Clean up.
+ //
+
+ if(NULL != pszModuleName)
+ {
+ delete[] pszModuleName;
+ }
+
+ return hActCtx;
+}
+
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.h
new file mode 100644
index 00000000..2f79c522
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/fusutils.h
@@ -0,0 +1,18 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: fsutils.h
+//
+//
+// PURPOSE: Fusion utilities
+//
+#pragma once
+
+HANDLE GetMyActivationContext();
+BOOL CreateMyActivationContext();
+HANDLE CreateActivationContextFromResource(HMODULE hModule, LPCTSTR pszResourceName);
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.cpp
new file mode 100644
index 00000000..d2af1b8b
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.cpp
@@ -0,0 +1,29 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Globals.cpp
+//
+//
+// PURPOSE: File that contains all the globals.
+//
+
+#include "precomp.h"
+#include "globals.h"
+
+// This indicates to Prefast that this is a usermode driver file.
+_Analysis_mode_(_Analysis_code_type_user_driver_);
+
+///////////////////////////////////////
+// Globals
+///////////////////////////////////////
+
+
+// Module's Instance handle from DLLEntry of process.
+HINSTANCE ghInstance = NULL;
+
+// Module's Activation Context from DLLEntry of process.
+HANDLE ghActCtx = INVALID_HANDLE_VALUE;
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.h
new file mode 100644
index 00000000..a5a58cb8
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/globals.h
@@ -0,0 +1,21 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Globals.h
+//
+//
+// PURPOSE: Lists of globals declared in Globals.cpp.
+//
+#pragma once
+
+///////////////////////////////////////
+// Globals
+///////////////////////////////////////
+
+extern HINSTANCE ghInstance; // Module's Instance handle from DLLEntry of process.
+extern HANDLE ghActCtx; // Module's Activation Context from DLLEntry of process.
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.cpp
new file mode 100644
index 00000000..3b966a58
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.cpp
@@ -0,0 +1,575 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Intrface.cpp
+//
+//
+// PURPOSE: Implementation of interface for PScript4, PScript5, Unidrv4,
+// Unidrv5 UI plug-ins.
+//
+
+#include "precomp.h"
+
+#include "oemui.h"
+#include "debug.h"
+#include "intrface.h"
+
+// This indicates to Prefast that this is a usermode driver file.
+_Analysis_mode_(_Analysis_code_type_user_driver_);
+
+
+////////////////////////////////////////////////////////
+// Internal Globals
+////////////////////////////////////////////////////////
+
+static long g_cComponents = 0 ; // Count of active components
+static long g_cServerLocks = 0 ; // Count of locks
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// IOemUI body
+//
+IOemUI::~IOemUI()
+{
+ // Make sure that helper interface is released.
+ if(NULL != m_pOEMHelp)
+ {
+ m_pOEMHelp->Release();
+ m_pOEMHelp = NULL;
+ }
+
+ // If this instance of the object is being deleted, then the reference
+ // count should be zero.
+ assert(0 == m_cRef);
+}
+
+HRESULT __stdcall IOemUI::QueryInterface(const IID& iid, void** ppv)
+{
+ VERBOSE(DLLTEXT("IOemUI:QueryInterface entry.\r\n\r\n"));
+ if (iid == IID_IUnknown)
+ {
+ *ppv = static_cast<IUnknown*>(this);
+ VERBOSE(DLLTEXT("IOemUI:Return pointer to IUnknown.\r\n\r\n"));
+ }
+ else if (iid == IID_IPrintOemUI)
+ {
+ *ppv = static_cast<IPrintOemUI*>(this) ;
+ VERBOSE(DLLTEXT("IOemUI:Return pointer to IPrintOemUI.\r\n"));
+ }
+ else
+ {
+ VERBOSE(DLLTEXT("IOemUI::QueryInterface interface not supported.\r\n"));
+ *ppv = NULL ;
+ return E_NOINTERFACE ;
+ }
+ reinterpret_cast<IUnknown*>(*ppv)->AddRef() ;
+ return S_OK ;
+}
+
+ULONG __stdcall IOemUI::AddRef()
+{
+ VERBOSE(DLLTEXT("IOemUI:AddRef entry.\r\n"));
+ return InterlockedIncrement(&m_cRef) ;
+}
+
+_At_(this, __drv_freesMem(object))
+ULONG __stdcall IOemUI::Release()
+{
+ VERBOSE(DLLTEXT("IOemUI:Release entry.\r\n"));
+ ASSERT( 0 != m_cRef);
+ ULONG cRef = InterlockedDecrement(&m_cRef);
+ if (0 == cRef)
+ {
+ delete this;
+
+ }
+ return cRef;
+}
+
+HRESULT __stdcall IOemUI::PublishDriverInterface(
+ IUnknown *pIUnknown)
+{
+ VERBOSE(DLLTEXT("IOemUI:PublishDriverInterface entry.\r\n"));
+
+ // Need to store pointer to Driver Helper functions, if we already haven't.
+ if (m_pOEMHelp == NULL)
+ {
+ HRESULT hResult;
+
+
+ // Get Interface to Helper Functions.
+ hResult = pIUnknown->QueryInterface(IID_IPrintOemDriverUI, (void** ) &(m_pOEMHelp));
+
+ if(!SUCCEEDED(hResult))
+ {
+ // Make sure that interface pointer reflects interface query failure.
+ m_pOEMHelp = NULL;
+
+ return E_FAIL;
+ }
+ }
+
+ return S_OK;
+}
+
+HRESULT __stdcall IOemUI::GetInfo(
+ DWORD dwMode,
+ PVOID pBuffer,
+ DWORD cbSize,
+ PDWORD pcbNeeded)
+{
+ VERBOSE(DLLTEXT("IOemUI::GetInfo entry.\r\r\n"));
+
+ // Validate parameters.
+ if( (NULL == pcbNeeded)
+ ||
+ ( (OEMGI_GETSIGNATURE != dwMode)
+ &&
+ (OEMGI_GETVERSION != dwMode)
+ &&
+ (OEMGI_GETPUBLISHERINFO != dwMode)
+ )
+ )
+ {
+ WARNING(DLLTEXT("IOemUI::GetInfo() exit pcbNeeded is NULL! ERROR_INVALID_PARAMETER\r\r\n"));
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return E_FAIL;
+ }
+
+ // Set expected buffer size and number of bytes written.
+ *pcbNeeded = sizeof(DWORD);
+
+ // Check buffer size is sufficient.
+ if((cbSize < *pcbNeeded) || (NULL == pBuffer))
+ {
+ WARNING(DLLTEXT("IOemUI::GetInfo() exit insufficient buffer!\r\r\n"));
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return E_FAIL;
+ }
+
+ switch(dwMode)
+ {
+ // OEM DLL Signature
+ case OEMGI_GETSIGNATURE:
+ *(PDWORD)pBuffer = OEM_SIGNATURE;
+ break;
+
+ // OEM DLL version
+ case OEMGI_GETVERSION:
+ *(PDWORD)pBuffer = OEM_VERSION;
+ break;
+
+ // dwMode not supported.
+ default:
+ // Set written bytes to zero since nothing was written.
+ WARNING(DLLTEXT("IOemUI::GetInfo() exit mode not supported.\r\r\n"));
+ *pcbNeeded = 0;
+ SetLastError(ERROR_NOT_SUPPORTED);
+ return E_FAIL;
+ }
+
+ VERBOSE(DLLTEXT("IOemUI::GetInfo() exit S_OK.\r\r\n"));
+ return S_OK;
+}
+
+HRESULT __stdcall IOemUI::DevMode(
+ DWORD dwMode,
+ POEMDMPARAM pOemDMParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:DevMode entry.\r\n"));
+
+ return hrOEMDevMode(dwMode, pOemDMParam);
+}
+
+HRESULT __stdcall IOemUI::CommonUIProp(
+ DWORD dwMode,
+ POEMCUIPPARAM pOemCUIPParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:CommonUIProp entry.\r\n"));
+
+ return hrOEMPropertyPage(dwMode, pOemCUIPParam);
+}
+
+
+HRESULT __stdcall IOemUI::DocumentPropertySheets(
+ PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:DocumentPropertySheets entry.\r\n"));
+
+ return hrOEMDocumentPropertySheets(pPSUIInfo, lParam, m_pOEMHelp);
+}
+
+HRESULT __stdcall IOemUI::DevicePropertySheets(
+ PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:DevicePropertySheets entry.\r\n"));
+
+ return hrOEMDevicePropertySheets(pPSUIInfo, lParam);
+}
+
+HRESULT __stdcall IOemUI::DeviceCapabilities(
+ POEMUIOBJ poemuiobj,
+ HANDLE hPrinter,
+ _In_ PWSTR pDeviceName,
+ WORD wCapability,
+ PVOID pOutput,
+ PDEVMODE pPublicDM,
+ PVOID pOEMDM,
+ DWORD dwOld,
+ DWORD *dwResult)
+{
+ VERBOSE(DLLTEXT("IOemUI:DeviceCapabilities entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(poemuiobj);
+ UNREFERENCED_PARAMETER(hPrinter);
+ UNREFERENCED_PARAMETER(pDeviceName);
+ UNREFERENCED_PARAMETER(wCapability);
+ UNREFERENCED_PARAMETER(pOutput);
+ UNREFERENCED_PARAMETER(pPublicDM);
+ UNREFERENCED_PARAMETER(pOEMDM);
+ UNREFERENCED_PARAMETER(dwOld);
+ UNREFERENCED_PARAMETER(dwResult);
+
+ return E_NOTIMPL;
+}
+
+HRESULT __stdcall IOemUI::DevQueryPrintEx(
+ POEMUIOBJ poemuiobj,
+ PDEVQUERYPRINT_INFO pDQPInfo,
+ PDEVMODE pPublicDM,
+ PVOID pOEMDM)
+{
+ VERBOSE(DLLTEXT("IOemUI:DevQueryPrintEx entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(poemuiobj);
+ UNREFERENCED_PARAMETER(pDQPInfo);
+ UNREFERENCED_PARAMETER(pPublicDM);
+ UNREFERENCED_PARAMETER(pOEMDM);
+
+ return E_NOTIMPL;
+}
+
+HRESULT __stdcall IOemUI::UpgradePrinter(
+ DWORD dwLevel,
+ PBYTE pDriverUpgradeInfo)
+{
+ VERBOSE(DLLTEXT("IOemUI:UpgradePrinter entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(dwLevel);
+ UNREFERENCED_PARAMETER(pDriverUpgradeInfo);
+
+ return E_NOTIMPL;
+}
+
+HRESULT __stdcall IOemUI::PrinterEvent(
+ _In_ PWSTR pPrinterName,
+ INT iDriverEvent,
+ DWORD dwFlags,
+ LPARAM lParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:PrinterEvent entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(pPrinterName);
+ UNREFERENCED_PARAMETER(iDriverEvent);
+ UNREFERENCED_PARAMETER(dwFlags);
+ UNREFERENCED_PARAMETER(lParam);
+
+ return E_NOTIMPL;
+}
+
+HRESULT __stdcall IOemUI::DriverEvent(
+ DWORD dwDriverEvent,
+ DWORD dwLevel,
+ LPBYTE pDriverInfo,
+ LPARAM lParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:DriverEvent entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(dwDriverEvent);
+ UNREFERENCED_PARAMETER(dwLevel);
+ UNREFERENCED_PARAMETER(pDriverInfo);
+ UNREFERENCED_PARAMETER(lParam);
+
+ return E_NOTIMPL;
+};
+
+
+#define PROFILE_NAME L"OEMPROFILE.icm\0"
+
+HRESULT __stdcall IOemUI::QueryColorProfile(
+ HANDLE hPrinter,
+ POEMUIOBJ poemuiobj,
+ PDEVMODE pPublicDM,
+ PVOID pOEMDM,
+ ULONG ulQueryMode,
+ VOID *pvProfileData,
+ ULONG *pcbProfileData,
+ FLONG *pflProfileData)
+{
+ HRESULT Result = E_FAIL;
+
+
+ VERBOSE(DLLTEXT("IOemUI:QueryColorProfile entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(hPrinter);
+ UNREFERENCED_PARAMETER(poemuiobj);
+ UNREFERENCED_PARAMETER(pPublicDM);
+ UNREFERENCED_PARAMETER(pOEMDM);
+
+ if(QCP_DEVICEPROFILE == ulQueryMode)
+ {
+ if(NULL == pvProfileData)
+ {
+ *pcbProfileData = sizeof(PROFILE_NAME);
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ }
+ else
+ {
+ if(*pcbProfileData < sizeof(PROFILE_NAME))
+ {
+ *pcbProfileData = sizeof(PROFILE_NAME);
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ }
+ else
+ {
+ Result = StringCbCopy((LPWSTR)pvProfileData, *pcbProfileData, PROFILE_NAME);
+ *pcbProfileData = sizeof(PROFILE_NAME);
+ *pflProfileData = QCP_PROFILEDISK;
+
+ if(FAILED(Result))
+ {
+ SetLastError(Result);
+ }
+ }
+ }
+ }
+
+ return Result;
+};
+
+HRESULT __stdcall IOemUI::FontInstallerDlgProc(
+ HWND hWnd,
+ UINT usMsg,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ VERBOSE(DLLTEXT("IOemUI:FontInstallerDlgProc entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(hWnd);
+ UNREFERENCED_PARAMETER(usMsg);
+ UNREFERENCED_PARAMETER(wParam);
+ UNREFERENCED_PARAMETER(lParam);
+
+ return E_NOTIMPL;
+};
+
+HRESULT __stdcall IOemUI::UpdateExternalFonts(
+ HANDLE hPrinter,
+ HANDLE hHeap,
+ _In_ PWSTR pwstrCartridges)
+{
+ VERBOSE(DLLTEXT("IOemUI:UpdateExternalFonts entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(hPrinter);
+ UNREFERENCED_PARAMETER(hHeap);
+ UNREFERENCED_PARAMETER(pwstrCartridges);
+
+ return E_NOTIMPL;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// oem class factory
+//
+class IOemCF : public IClassFactory
+{
+public:
+ // *** IUnknown methods ***
+
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj);
+
+ STDMETHOD_(ULONG,AddRef) (THIS);
+
+ // the _At_ tag here tells prefast that once release
+ // is called, the memory should not be considered leaked
+ _At_(this, __drv_freesMem(object))
+ STDMETHOD_(ULONG,Release) (THIS);
+
+ // *** IClassFactory methods ***
+ STDMETHOD(CreateInstance) (THIS_
+ LPUNKNOWN pUnkOuter,
+ REFIID riid,
+ LPVOID FAR* ppvObject);
+ STDMETHOD(LockServer) (THIS_ BOOL bLock);
+
+
+ // Constructor
+ IOemCF(): m_cRef(1) { };
+ ~IOemCF() { };
+
+protected:
+ LONG m_cRef;
+
+};
+
+///////////////////////////////////////////////////////////
+//
+// Class factory body
+//
+HRESULT __stdcall IOemCF::QueryInterface(const IID& iid, void** ppv)
+{
+ if ((iid == IID_IUnknown) || (iid == IID_IClassFactory))
+ {
+ *ppv = static_cast<IOemCF*>(this) ;
+ }
+ else
+ {
+ WARNING(DLLTEXT("IOemCF::QueryInterface interface not supported.\r\n"));
+ *ppv = NULL ;
+ return E_NOINTERFACE ;
+ }
+ reinterpret_cast<IUnknown*>(*ppv)->AddRef() ;
+ return S_OK ;
+}
+
+ULONG __stdcall IOemCF::AddRef()
+{
+ return InterlockedIncrement(&m_cRef) ;
+}
+
+_At_(this, __drv_freesMem(object))
+ULONG __stdcall IOemCF::Release()
+{
+ ASSERT( 0 != m_cRef);
+ ULONG cRef = InterlockedDecrement(&m_cRef);
+ if (0 == cRef)
+ {
+ delete this;
+
+ }
+ return cRef;
+}
+
+// IClassFactory implementation
+HRESULT __stdcall IOemCF::CreateInstance(IUnknown* pUnknownOuter,
+ const IID& iid,
+ void** ppv)
+{
+ //DbgPrint(DLLTEXT("Class factory:\t\tCreate component.")) ;
+
+ if (ppv == NULL)
+ {
+ return E_POINTER;
+ }
+ *ppv = NULL;
+
+ // Cannot aggregate.
+ if (pUnknownOuter != NULL)
+ {
+ return CLASS_E_NOAGGREGATION ;
+ }
+
+ // Create component.
+ IOemUI* pOemCB = new IOemUI ;
+ if (pOemCB == NULL)
+ {
+ return E_OUTOFMEMORY ;
+ }
+ // Get the requested interface.
+ HRESULT hr = pOemCB->QueryInterface(iid, ppv) ;
+
+ // Release the IUnknown pointer.
+ // (If QueryInterface failed, component will delete itself.)
+ pOemCB->Release() ;
+ return hr ;
+}
+
+// LockServer
+HRESULT __stdcall IOemCF::LockServer(BOOL bLock)
+{
+ if (bLock)
+ {
+ InterlockedIncrement(&g_cServerLocks) ;
+ }
+ else
+ {
+ InterlockedDecrement(&g_cServerLocks) ;
+ }
+ return S_OK ;
+}
+
+///////////////////////////////////////////////////////////
+//
+// Exported functions
+//
+
+
+// Can DLL unload now?
+//
+STDAPI DllCanUnloadNow()
+{
+ //
+ // To avoid leaving OEM DLL still in memory when Unidrv or Pscript drivers
+ // are unloaded, Unidrv and Pscript driver ignore the return value of
+ // DllCanUnloadNow of the OEM DLL, and always call FreeLibrary on the OEMDLL.
+ //
+ // If OEM DLL spins off a working thread that also uses the OEM DLL, the
+ // thread needs to call LoadLibrary and FreeLibraryAndExitThread, otherwise
+ // it may crash after Unidrv or Pscript calls FreeLibrary.
+ //
+
+ if ((g_cComponents == 0) && (g_cServerLocks == 0))
+ {
+ return S_OK ;
+ }
+ else
+ {
+ return S_FALSE;
+ }
+}
+
+//
+// Get class factory
+//
+STDAPI DllGetClassObject(
+ _In_ REFCLSID clsid,
+ _In_ REFIID iid,
+ _Outptr_ LPVOID* ppv)
+{
+ VERBOSE(DLLTEXT("DllGetClassObject:Create class factory.\r\n"));
+
+ if (ppv == NULL)
+ {
+ return E_POINTER;
+ }
+ *ppv = NULL;
+
+ // Can we create this component?
+ if (clsid != CLSID_OEMUI)
+ {
+ return CLASS_E_CLASSNOTAVAILABLE ;
+ }
+
+ // Create class factory.
+ IOemCF* pFontCF = new IOemCF ; // Reference count set to 1
+ // in constructor
+ if (pFontCF == NULL)
+ {
+ return E_OUTOFMEMORY ;
+ }
+
+ // Get requested interface.
+ HRESULT hr = pFontCF->QueryInterface(iid, ppv) ;
+ pFontCF->Release() ;
+
+ return hr ;
+}
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.h
new file mode 100644
index 00000000..d9bdf3a2
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/intrface.h
@@ -0,0 +1,179 @@
+// 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.
+//
+// Copyright 1998 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: Intrface.h
+//
+//
+// PURPOSE: Header of interface for PScript5 and Unidrv5 UI plug-in.
+//
+#pragma once
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// IOemUI
+//
+class IOemUI: public IPrintOemUI
+{
+public:
+ // *** IUnknown methods ***
+
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj);
+
+ STDMETHOD_(ULONG,AddRef) (THIS);
+
+ // the _At_ tag here tells prefast that once release
+ // is called, the memory should not be considered leaked
+ _At_(this, __drv_freesMem(object))
+ STDMETHOD_(ULONG,Release) (THIS);
+
+ //
+ // Method for publishing Driver interface.
+ //
+ STDMETHOD(PublishDriverInterface)(THIS_ IUnknown *pIUnknown);
+
+ //
+ // Get OEM dll related information
+ //
+
+ STDMETHOD(GetInfo) (THIS_ DWORD dwMode, PVOID pBuffer, DWORD cbSize,
+ PDWORD pcbNeeded);
+
+ //
+ // OEMDevMode
+ //
+
+ STDMETHOD(DevMode) (THIS_ DWORD dwMode, POEMDMPARAM pOemDMParam) ;
+
+ //
+ // OEMCommonUIProp
+ //
+
+ STDMETHOD(CommonUIProp) (THIS_
+ DWORD dwMode,
+ POEMCUIPPARAM pOemCUIPParam
+ );
+
+ //
+ // OEMDocumentPropertySheets
+ //
+
+ STDMETHOD(DocumentPropertySheets) (THIS_
+ PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam
+ );
+
+ //
+ // OEMDevicePropertySheets
+ //
+
+ STDMETHOD(DevicePropertySheets) (THIS_
+ PPROPSHEETUI_INFO pPSUIInfo,
+ LPARAM lParam
+ );
+
+
+ //
+ // OEMDevQueryPrintEx
+ //
+
+ STDMETHOD(DevQueryPrintEx) (THIS_
+ POEMUIOBJ poemuiobj,
+ PDEVQUERYPRINT_INFO pDQPInfo,
+ PDEVMODE pPublicDM,
+ PVOID pOEMDM
+ );
+
+ //
+ // OEMDeviceCapabilities
+ //
+
+ STDMETHOD(DeviceCapabilities) (THIS_
+ POEMUIOBJ poemuiobj,
+ HANDLE hPrinter,
+ _In_ PWSTR pDeviceName,
+ WORD wCapability,
+ PVOID pOutput,
+ PDEVMODE pPublicDM,
+ PVOID pOEMDM,
+ DWORD dwOld,
+ DWORD *dwResult
+ );
+
+ //
+ // OEMUpgradePrinter
+ //
+
+ STDMETHOD(UpgradePrinter) (THIS_
+ DWORD dwLevel,
+ PBYTE pDriverUpgradeInfo
+ );
+
+ //
+ // OEMPrinterEvent
+ //
+
+ STDMETHOD(PrinterEvent) (THIS_
+ _In_ PWSTR pPrinterName,
+ INT iDriverEvent,
+ DWORD dwFlags,
+ LPARAM lParam
+ );
+
+ //
+ // OEMDriverEvent
+ //
+
+ STDMETHOD(DriverEvent)(THIS_
+ DWORD dwDriverEvent,
+ DWORD dwLevel,
+ LPBYTE pDriverInfo,
+ LPARAM lParam
+ );
+
+ //
+ // OEMQueryColorProfile
+ //
+
+ STDMETHOD(QueryColorProfile) (THIS_
+ HANDLE hPrinter,
+ POEMUIOBJ poemuiobj,
+ PDEVMODE pPublicDM,
+ PVOID pOEMDM,
+ ULONG ulReserved,
+ VOID *pvProfileData,
+ ULONG *pcbProfileData,
+ FLONG *pflProfileData);
+
+ //
+ // OEMFontInstallerDlgProc
+ //
+
+ STDMETHOD(FontInstallerDlgProc) (THIS_
+ HWND hWnd,
+ UINT usMsg,
+ WPARAM wParam,
+ LPARAM lParam
+ );
+ //
+ // UpdateExternalFonts
+ //
+
+ STDMETHOD(UpdateExternalFonts) (THIS_
+ HANDLE hPrinter,
+ HANDLE hHeap,
+ _In_ PWSTR pwstrCartridges
+ );
+
+
+ IOemUI() { m_cRef = 1; m_pOEMHelp = NULL; };
+ ~IOemUI();
+
+protected:
+ LONG m_cRef;
+ IPrintOemDriverUI* m_pOEMHelp;
+};
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oem.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oem.h
new file mode 100644
index 00000000..bf3d75f9
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oem.h
@@ -0,0 +1,22 @@
+// 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.
+//
+// Copyright 1997 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: oem.h
+//
+//
+// PURPOSE: Define common data types, and external function prototypes
+// for debug.cpp.
+//
+#pragma once
+
+////////////////////////////////////////////////////////
+// OEM Defines
+////////////////////////////////////////////////////////
+
+#define OEM_SIGNATURE 'MSFT'
+#define OEM_VERSION 0x00000001L
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.cpp
new file mode 100644
index 00000000..61f3d378
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.cpp
@@ -0,0 +1,756 @@
+// 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.
+//
+// Copyright 1997 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: OEMUI.cpp
+//
+//
+// PURPOSE: Main file for OEM UI test module.
+//
+//
+
+#include "precomp.h"
+#include "resource.h"
+#include "debug.h"
+#include "fusutils.h"
+#include "oemui.h"
+
+// This indicates to Prefast that this is a usermode driver file.
+_Analysis_mode_(_Analysis_code_type_user_driver_);
+
+////////////////////////////////////////////////////////
+// INTERNAL MACROS and DEFINES
+////////////////////////////////////////////////////////
+
+typedef struct _tagCBUserData
+{
+ HANDLE hComPropSheet;
+ HANDLE hPropPage;
+ POEMUIPSPARAM pOEMUIParam;
+ PFNCOMPROPSHEET pfnComPropSheet;
+
+} CBUSERDATA, *PCBUSERDATA;
+
+
+
+////////////////////////////////////////////////////////
+// INTERNAL PROTOTYPES
+////////////////////////////////////////////////////////
+
+static HRESULT hrDocumentPropertyPage(DWORD dwMode, POEMCUIPPARAM pOEMUIParam);
+static HRESULT hrPrinterPropertyPage(DWORD dwMode, POEMCUIPPARAM pOEMUIParam);
+LONG APIENTRY OEMPrinterUICallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam);
+LONG APIENTRY OEMDocUICallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam);
+LONG APIENTRY OEMDocUICallBack2(PCPSUICBPARAM pCallbackParam);
+INT_PTR CALLBACK DevicePropPageProc(HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam);
+static POPTITEM CreateOptItems(HANDLE hHeap, DWORD dwOptItems);
+static void InitOptItems(POPTITEM pOptItems, DWORD dwOptItems);
+static POPTTYPE CreateOptType(HANDLE hHeap, WORD wOptParams);
+static PTSTR GetStringResource(HANDLE hHeap, HANDLE hModule, UINT uResource);
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Initializes OptItems to display OEM device or document property UI.
+//
+HRESULT hrOEMPropertyPage(DWORD dwMode, POEMCUIPPARAM pOEMUIParam)
+{
+ HRESULT hResult = S_OK;
+
+
+ VERBOSE(DLLTEXT("hrOEMPropertyPage entry.\r\n"));
+
+ // Validate parameters.
+ if( (OEMCUIP_DOCPROP != dwMode)
+ &&
+ (OEMCUIP_PRNPROP != dwMode)
+ )
+ {
+ ERR(DLLTEXT("hrOEMPropertyPage() ERROR_INVALID_PARAMETER.\r\n"));
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return E_FAIL;
+ }
+
+ switch(dwMode)
+ {
+ case OEMCUIP_DOCPROP:
+ hResult = hrDocumentPropertyPage(dwMode, pOEMUIParam);
+ break;
+
+ case OEMCUIP_PRNPROP:
+ hResult = hrPrinterPropertyPage(dwMode, pOEMUIParam);
+ break;
+
+ default:
+ // Should never reach this!
+ ERR(DLLTEXT("hrOEMPropertyPage() Invalid dwMode"));
+ SetLastError(ERROR_INVALID_PARAMETER);
+ hResult = E_FAIL;
+ break;
+ }
+
+ return hResult;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Initializes OptItems to display OEM document property UI.
+//
+static HRESULT hrDocumentPropertyPage(DWORD dwMode, POEMCUIPPARAM pOEMUIParam)
+{
+ UNREFERENCED_PARAMETER(dwMode);
+
+ if(NULL == pOEMUIParam->pOEMOptItems)
+ {
+ // Fill in the number of OptItems to create for OEM document property UI.
+ pOEMUIParam->cOEMOptItems = 1;
+
+ VERBOSE(DLLTEXT("hrDocumentPropertyPage() requesting items.\r\n"));
+ }
+ else
+ {
+ POEMDEV pOEMDev = (POEMDEV) pOEMUIParam->pOEMDM;
+
+
+ VERBOSE(DLLTEXT("hrDocumentPropertyPage() fill out items.\r\n"));
+
+ // Init UI Callback reference.
+ pOEMUIParam->OEMCUIPCallback = OEMDocUICallBack;
+
+ // Init OEMOptItmes.
+ InitOptItems(pOEMUIParam->pOEMOptItems, pOEMUIParam->cOEMOptItems);
+
+ // Fill out tree view items.
+
+ // New section.
+ pOEMUIParam->pOEMOptItems[0].Level = 1;
+ pOEMUIParam->pOEMOptItems[0].Flags = OPTIF_COLLAPSE;
+ pOEMUIParam->pOEMOptItems[0].pName = GetStringResource(pOEMUIParam->hOEMHeap, pOEMUIParam->hModule, IDS_ADV_SECTION);
+ pOEMUIParam->pOEMOptItems[0].Sel = pOEMDev->dwAdvancedData;
+
+ pOEMUIParam->pOEMOptItems[0].pOptType = CreateOptType(pOEMUIParam->hOEMHeap, 2);
+
+ pOEMUIParam->pOEMOptItems[0].pOptType->Type = TVOT_UDARROW;
+ pOEMUIParam->pOEMOptItems[0].pOptType->pOptParam[1].IconID = 0;
+ pOEMUIParam->pOEMOptItems[0].pOptType->pOptParam[1].lParam = 100;
+ }
+
+ return S_OK;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Initializes OptItems to display OEM printer property UI.
+//
+static HRESULT hrPrinterPropertyPage(DWORD dwMode, POEMCUIPPARAM pOEMUIParam)
+{
+ UNREFERENCED_PARAMETER(dwMode);
+
+ if(NULL == pOEMUIParam->pOEMOptItems)
+ {
+ // Fill in the number of OptItems to create for OEM printer property UI.
+ pOEMUIParam->cOEMOptItems = 1;
+
+ VERBOSE(DLLTEXT("hrPrinterPropertyPage() requesting items.\r\n"));
+ }
+ else
+ {
+ DWORD dwError;
+ DWORD dwDeviceValue;
+ DWORD dwType;
+ DWORD dwNeeded;
+
+
+ VERBOSE(DLLTEXT("hrPrinterPropertyPage() fill out items.\r\n"));
+
+ // Get device settings value from printer.
+ dwError = GetPrinterData(pOEMUIParam->hPrinter, OEMUI_VALUE, &dwType, (PBYTE) &dwDeviceValue,
+ sizeof(dwDeviceValue), &dwNeeded);
+ if( (ERROR_SUCCESS != dwError)
+ ||
+ (dwDeviceValue > 100)
+ )
+ {
+ // Failed to get the device value or value is invalid, just use the default.
+ dwDeviceValue = 0;
+ }
+
+ // Init UI Callback reference.
+ pOEMUIParam->OEMCUIPCallback = OEMPrinterUICallBack;
+
+ // Init OEMOptItmes.
+ InitOptItems(pOEMUIParam->pOEMOptItems, pOEMUIParam->cOEMOptItems);
+
+ // Fill out tree view items.
+
+ // New section.
+ pOEMUIParam->pOEMOptItems[0].Level = 1;
+ pOEMUIParam->pOEMOptItems[0].Flags = OPTIF_COLLAPSE;
+ pOEMUIParam->pOEMOptItems[0].pName = GetStringResource(pOEMUIParam->hOEMHeap, pOEMUIParam->hModule, IDS_DEV_SECTION);
+ pOEMUIParam->pOEMOptItems[0].Sel = dwDeviceValue;
+
+ pOEMUIParam->pOEMOptItems[0].pOptType = CreateOptType(pOEMUIParam->hOEMHeap, 2);
+
+ pOEMUIParam->pOEMOptItems[0].pOptType->Type = TVOT_UDARROW;
+ pOEMUIParam->pOEMOptItems[0].pOptType->pOptParam[1].IconID = 0;
+ pOEMUIParam->pOEMOptItems[0].pOptType->pOptParam[1].lParam = 100;
+ }
+
+ return S_OK;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Adds property page to Document property sheet.
+//
+HRESULT hrOEMDocumentPropertySheets(PPROPSHEETUI_INFO pPSUIInfo, LPARAM lParam,
+ IPrintOemDriverUI* pOEMHelp)
+{
+ LONG_PTR lResult = 0;
+ HRESULT hrResult = S_OK;
+
+ VERBOSE(DLLTEXT("hrOEMDocumentPropertySheets() entry.\r\n"));
+
+ UNREFERENCED_PARAMETER(pOEMHelp);
+
+ // Validate parameters.
+ if( (NULL == pPSUIInfo)
+ ||
+ (PROPSHEETUI_INFO_VERSION != pPSUIInfo->Version)
+ )
+ {
+ ERR(DLLTEXT("hrOEMDocumentPropertySheets() ERROR_INVALID_PARAMETER.\r\n"));
+
+ // Return invalid parameter error.
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return E_FAIL;
+ }
+
+ // Do action.
+ switch(pPSUIInfo->Reason)
+ {
+ case PROPSHEETUI_REASON_INIT:
+ {
+ DWORD dwSheets = 0;
+ PCBUSERDATA pUserData;
+ POEMUIPSPARAM pOEMUIParam = (POEMUIPSPARAM) pPSUIInfo->lParamInit;
+ HANDLE hHeap = pOEMUIParam->hOEMHeap;
+ POEMDEV pOEMDev = (POEMDEV) pOEMUIParam->pOEMDM;
+ COMPROPSHEETUI Sheet;
+
+
+ // Init property page.
+ memset(&Sheet, 0, sizeof(COMPROPSHEETUI));
+ Sheet.cbSize = sizeof(COMPROPSHEETUI);
+ Sheet.Flags = CPSUIF_UPDATE_PERMISSION;
+ Sheet.hInstCaller = ghInstance;
+ Sheet.pCallerName = GetStringResource(hHeap, ghInstance, IDS_NAME);
+ Sheet.pHelpFile = NULL;
+ Sheet.pfnCallBack = OEMDocUICallBack2;
+ Sheet.pDlgPage = CPSUI_PDLGPAGE_TREEVIEWONLY;
+ Sheet.cOptItem = 1;
+ Sheet.IconID = IDI_CPSUI_PRINTER;
+ Sheet.pOptItemName = GetStringResource(hHeap, ghInstance, IDS_SECTION);
+ Sheet.CallerVersion = 0x100;
+ Sheet.OptItemVersion = 0x100;
+
+ // Init user data.
+ pUserData = (PCBUSERDATA) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, sizeof(CBUSERDATA));
+ if (NULL == pUserData)
+ {
+ ERR(DLLTEXT("hrOEMDocumentPropertySheets() failed to allocate user data.\r\n"));
+
+ hrResult = E_OUTOFMEMORY;
+ goto Exit;
+ }
+
+ pUserData->hComPropSheet = pPSUIInfo->hComPropSheet;
+ pUserData->pfnComPropSheet = pPSUIInfo->pfnComPropSheet;
+ pUserData->pOEMUIParam = pOEMUIParam;
+ Sheet.UserData = (ULONG_PTR) pUserData;
+
+ // Create OptItems for page.
+ Sheet.pOptItem = CreateOptItems(hHeap, Sheet.cOptItem);
+ if (NULL == Sheet.pOptItem)
+ {
+ ERR(DLLTEXT("hrOEMDocumentPropertySheets() failed to allocate OPTITEMs.\r\n"));
+
+ hrResult = E_OUTOFMEMORY;
+ goto Exit;
+ }
+
+ // Initialize OptItems
+ Sheet.pOptItem[0].Level = 1;
+ Sheet.pOptItem[0].Flags = OPTIF_COLLAPSE;
+ Sheet.pOptItem[0].pName = GetStringResource(hHeap, ghInstance, IDS_SECTION);
+ Sheet.pOptItem[0].Sel = pOEMDev->dwDriverData;
+
+ Sheet.pOptItem[0].pOptType = CreateOptType(hHeap, 2);
+ if (NULL == Sheet.pOptItem[0].pOptType)
+ {
+ ERR(DLLTEXT("hrOEMDocumentPropertySheets() failed to allocate OPTTYPE.\r\n"));
+
+ hrResult = E_OUTOFMEMORY;
+ goto Exit;
+ }
+
+ Sheet.pOptItem[0].pOptType->Type = TVOT_UDARROW;
+ Sheet.pOptItem[0].pOptType->pOptParam[1].IconID = 0;
+ Sheet.pOptItem[0].pOptType->pOptParam[1].lParam = 100;
+
+ // NOTE: Don't need to do anything with Activation Contexts
+ // to get Themed UI, since Compstui will create this
+ // page using it's Activation Context which specifies
+ // comctl v6.
+
+ // Add property sheets.
+ lResult = pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet, CPSFUNC_ADD_PCOMPROPSHEETUI,
+ (LPARAM)&Sheet, (LPARAM)&dwSheets);
+ }
+ break;
+
+ case PROPSHEETUI_REASON_GET_INFO_HEADER:
+ {
+ PPROPSHEETUI_INFO_HEADER pHeader = (PPROPSHEETUI_INFO_HEADER) lParam;
+
+ pHeader->pTitle = (LPTSTR)PROP_TITLE;
+ lResult = TRUE;
+ }
+ break;
+
+ case PROPSHEETUI_REASON_GET_ICON:
+ // No icon
+ lResult = 0;
+ break;
+
+ case PROPSHEETUI_REASON_SET_RESULT:
+ {
+ PSETRESULT_INFO pInfo = (PSETRESULT_INFO) lParam;
+
+ lResult = pInfo->Result;
+ }
+ break;
+
+ case PROPSHEETUI_REASON_DESTROY:
+ lResult = TRUE;
+ break;
+ }
+
+Exit:
+
+ pPSUIInfo->Result = lResult;
+ return hrResult;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Adds property page to printer property sheet.
+//
+HRESULT hrOEMDevicePropertySheets(PPROPSHEETUI_INFO pPSUIInfo, LPARAM lParam)
+{
+ LONG_PTR lResult = 0;
+
+
+ VERBOSE(DLLTEXT("hrOEMDevicePropertySheets entry\r\n"));
+
+ // Validate parameters.
+ if( (NULL == pPSUIInfo)
+ ||
+ (PROPSHEETUI_INFO_VERSION != pPSUIInfo->Version)
+ )
+ {
+ ERR(DLLTEXT("hrOEMDevicePropertySheets() ERROR_INVALID_PARAMETER.\r\n"));
+
+ // Return invalid parameter error.
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return E_FAIL;
+ }
+
+ // Do action.
+ switch(pPSUIInfo->Reason)
+ {
+ case PROPSHEETUI_REASON_INIT:
+ {
+ PROPSHEETPAGE Page;
+
+ // Init property page.
+ memset(&Page, 0, sizeof(PROPSHEETPAGE));
+ Page.dwSize = sizeof(PROPSHEETPAGE);
+ Page.dwFlags = PSP_DEFAULT;
+ Page.hInstance = ghInstance;
+ Page.pszTemplate = MAKEINTRESOURCE(IDD_DEVICE_PROPPAGE);
+ Page.pfnDlgProc = DevicePropPageProc;
+ Page.hActCtx = GetMyActivationContext();
+
+ // Set the flag to indicate that our PROPSHEETPAGE
+ // has an Activation Context.
+ // The Activation Context indicates with version of
+ // comctl for Compstui to create our PROPSHEETPAGE
+ // with. To get Themed UI we need to specify comctl v6.
+ if( (NULL != Page.hActCtx) && (INVALID_HANDLE_VALUE != Page.hActCtx))
+ {
+ Page.dwFlags |= PSP_USEFUSIONCONTEXT;
+ }
+
+ // Add property sheets.
+ lResult = pPSUIInfo->pfnComPropSheet(pPSUIInfo->hComPropSheet, CPSFUNC_ADD_PROPSHEETPAGE, (LPARAM)&Page, 0);
+
+ // NOTE: The Activation Context is released when the DLL is unloaded
+ // during DLL_PROCESS_DETACH.
+ }
+ break;
+
+ case PROPSHEETUI_REASON_GET_INFO_HEADER:
+ {
+ PPROPSHEETUI_INFO_HEADER pHeader = (PPROPSHEETUI_INFO_HEADER) lParam;
+
+ pHeader->pTitle = (LPTSTR)PROP_TITLE;
+ lResult = TRUE;
+ }
+ break;
+
+ case PROPSHEETUI_REASON_GET_ICON:
+ // No icon
+ lResult = 0;
+ break;
+
+ case PROPSHEETUI_REASON_SET_RESULT:
+ {
+ PSETRESULT_INFO pInfo = (PSETRESULT_INFO) lParam;
+
+ lResult = pInfo->Result;
+ }
+ break;
+
+ case PROPSHEETUI_REASON_DESTROY:
+ lResult = TRUE;
+ break;
+ }
+
+ pPSUIInfo->Result = lResult;
+ return S_OK;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// OptItems call back for OEM printer property UI.
+//
+LONG APIENTRY OEMPrinterUICallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam)
+{
+ LONG lReturn = CPSUICB_ACTION_NONE;
+
+ VERBOSE(DLLTEXT("OEMPrinterUICallBack() entry.\r\n"));
+
+ switch(pCallbackParam->Reason)
+ {
+ case CPSUICB_REASON_APPLYNOW:
+ {
+ DWORD dwDriverValue = pOEMUIParam->pOEMOptItems[0].Sel;
+
+ // Store OptItems state in printer data.
+ SetPrinterData(pOEMUIParam->hPrinter, OEMUI_VALUE, REG_DWORD, (PBYTE) &dwDriverValue, sizeof(DWORD));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return lReturn;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Call back for OEM device property UI.
+//
+#pragma warning(push)
+#pragma warning(disable:6262) // this method exceeds the default threshold for stack usage by a few bytes.
+INT_PTR CALLBACK DevicePropPageProc(HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch (uiMsg)
+ {
+ case WM_COMMAND:
+ switch(HIWORD(wParam))
+ {
+ case BN_CLICKED:
+ switch(LOWORD(wParam))
+ {
+ case IDC_CALIBRATE:
+ // Just display a message that the printer is calibrated,
+ // since we don't acutally calibrate anything.
+ {
+ TCHAR szName[MAX_PATH];
+ TCHAR szCalibrated[MAX_PATH];
+
+
+ LoadString(ghInstance, IDS_NAME, szName, sizeof(szName)/sizeof(szName[0]));
+ LoadString(ghInstance, IDS_CALIBRATED, szCalibrated, sizeof(szCalibrated)/sizeof(szCalibrated[0]));
+ MessageBox(hDlg, szCalibrated, szName, MB_OK);
+ }
+ break;
+ }
+ break;
+
+ default:
+ return FALSE;
+ }
+ return TRUE;
+
+ case WM_NOTIFY:
+ {
+ switch (((LPNMHDR)lParam)->code) // type of notification message
+ {
+ case PSN_SETACTIVE:
+ break;
+
+ case PSN_KILLACTIVE:
+ break;
+
+ case PSN_APPLY:
+ break;
+
+ case PSN_RESET:
+ break;
+ }
+ }
+ break;
+ }
+
+ return FALSE;
+}
+#pragma warning(pop)
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// OptItems call back for OEM document property UI.
+//
+LONG APIENTRY OEMDocUICallBack(PCPSUICBPARAM pCallbackParam, POEMCUIPPARAM pOEMUIParam)
+{
+ LONG lReturn = CPSUICB_ACTION_NONE;
+ POEMDEV pOEMDev = (POEMDEV) pOEMUIParam->pOEMDM;
+
+ VERBOSE(DLLTEXT("OEMDocUICallBack() entry.\r\n"));
+
+ switch(pCallbackParam->Reason)
+ {
+ case CPSUICB_REASON_APPLYNOW:
+ // Store OptItems state in DEVMODE.
+ pOEMDev->dwAdvancedData = pOEMUIParam->pOEMOptItems[0].Sel;
+ break;
+
+ case CPSUICB_REASON_KILLACTIVE:
+ pOEMDev->dwAdvancedData = pOEMUIParam->pOEMOptItems[0].Sel;
+ break;
+
+ case CPSUICB_REASON_SETACTIVE:
+ if((DWORD)(pOEMUIParam->pOEMOptItems[0].Sel) != pOEMDev->dwAdvancedData)
+ {
+ pOEMUIParam->pOEMOptItems[0].Sel = pOEMDev->dwAdvancedData;
+ pOEMUIParam->pOEMOptItems[0].Flags |= OPTIF_CHANGED;
+ lReturn = CPSUICB_ACTION_OPTIF_CHANGED;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return lReturn;
+}
+
+
+LONG APIENTRY OEMDocUICallBack2(PCPSUICBPARAM pCallbackParam)
+{
+ LONG lReturn = CPSUICB_ACTION_NONE;
+ PCBUSERDATA pUserData = (PCBUSERDATA) pCallbackParam->UserData;
+ POEMDEV pOEMDev = (POEMDEV) pUserData->pOEMUIParam->pOEMDM;
+
+
+ VERBOSE(DLLTEXT("OEMDocUICallBack2() entry.\r\n"));
+
+ switch(pCallbackParam->Reason)
+ {
+ case CPSUICB_REASON_APPLYNOW:
+ pOEMDev->dwDriverData = pCallbackParam->pOptItem[0].Sel;
+ pUserData->pfnComPropSheet(pUserData->hComPropSheet, CPSFUNC_SET_RESULT,
+ (LPARAM)pUserData->hPropPage,
+ (LPARAM)CPSUI_OK);
+ break;
+
+ case CPSUICB_REASON_KILLACTIVE:
+ pOEMDev->dwDriverData = pCallbackParam->pOptItem[0].Sel;
+ break;
+
+ case CPSUICB_REASON_SETACTIVE:
+ if((DWORD)(pCallbackParam->pOptItem[0].Sel) != pOEMDev->dwDriverData)
+ {
+ pCallbackParam->pOptItem[0].Sel = pOEMDev->dwDriverData;
+ pCallbackParam->pOptItem[0].Flags |= OPTIF_CHANGED;
+ lReturn = CPSUICB_ACTION_OPTIF_CHANGED;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return lReturn;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Creates and Initializes OptItems.
+//
+static POPTITEM CreateOptItems(HANDLE hHeap, DWORD dwOptItems)
+{
+ POPTITEM pOptItems = NULL;
+ SIZE_T sizeOfOptItems = 0;
+
+ // Compute the size of memory needed for the OptItems:
+ if (SUCCEEDED(SIZETMult(sizeof(OPTITEM), (SIZE_T)dwOptItems, &sizeOfOptItems)))
+ {
+ // Allocate memory for OptItems;
+ pOptItems = (POPTITEM) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, sizeOfOptItems);
+ if(NULL != pOptItems)
+ {
+ InitOptItems(pOptItems, dwOptItems);
+ }
+ else
+ {
+ ERR(DLLTEXT("CreateOptItems() failed to allocate memory for OPTITEMs!\r\n"));
+ }
+ }
+ else
+ {
+ ERR(DLLTEXT("CreateOptItems() failed to compute necessary memory size for OPTITEMs!\r\n"));
+ }
+
+ return pOptItems;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Initializes OptItems.
+//
+static void InitOptItems(POPTITEM pOptItems, DWORD dwOptItems)
+{
+ VERBOSE(DLLTEXT("InitOptItems() entry.\r\n"));
+
+ // Zero out memory.
+ memset(pOptItems, 0, sizeof(OPTITEM) * dwOptItems);
+
+ // Set each OptItem's size, and Public DM ID.
+ for(DWORD dwCount = 0; dwCount < dwOptItems; dwCount++)
+ {
+ pOptItems[dwCount].cbSize = sizeof(OPTITEM);
+ pOptItems[dwCount].DMPubID = DMPUB_NONE;
+ }
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Allocates and initializes OptType for OptItem.
+//
+static POPTTYPE CreateOptType(HANDLE hHeap, WORD wOptParams)
+{
+ POPTTYPE pOptType = NULL;
+
+
+ VERBOSE(DLLTEXT("CreateOptType() entry.\r\n"));
+
+ // Allocate memory from the heap for the OPTTYPE; the driver will take care of clean up.
+ pOptType = (POPTTYPE) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, sizeof(OPTTYPE));
+ if(NULL != pOptType)
+ {
+ // Initialize OPTTYPE.
+ pOptType->cbSize = sizeof(OPTTYPE);
+ pOptType->Count = wOptParams;
+
+ // Allocate memory from the heap for the OPTPARAMs for the OPTTYPE.
+ pOptType->pOptParam = (POPTPARAM) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, wOptParams * sizeof(OPTPARAM));
+ if(NULL != pOptType->pOptParam)
+ {
+ // Initialize the OPTPARAMs.
+ for(WORD wCount = 0; wCount < wOptParams; wCount++)
+ {
+ pOptType->pOptParam[wCount].cbSize = sizeof(OPTPARAM);
+ }
+ }
+ else
+ {
+ ERR(DLLTEXT("CreateOptType() failed to allocated memory for OPTPARAMs!\r\n"));
+
+ // Free allocated memory and return NULL.
+ HeapFree(hHeap, 0, pOptType);
+ pOptType = NULL;
+ }
+ }
+ else
+ {
+ ERR(DLLTEXT("CreateOptType() failed to allocated memory for OPTTYPE!\r\n"));
+ }
+
+ return pOptType;
+}
+
+////////////////////////////////////////////////////////////////////////////////////
+//
+// Retrieves pointer to a String resource.
+//
+static PTSTR GetStringResource(HANDLE hHeap, HANDLE hModule, UINT uResource)
+{
+ int nResult;
+ DWORD dwSize = MAX_PATH;
+ PTSTR pszString = NULL;
+
+
+ VERBOSE(DLLTEXT("GetStringResource entered.\r\n"));
+
+ // Allocate buffer for string resource from heap; let the driver clean it up.
+ pszString = (PTSTR) HeapAlloc(hHeap, HEAP_ZERO_MEMORY, dwSize * sizeof(TCHAR));
+ if(NULL != pszString)
+ {
+ // Load string resource; resize after loading so as not to waste memory.
+ nResult = LoadString((HMODULE)hModule, uResource, pszString, dwSize);
+ if(nResult > 0)
+ {
+ PTSTR pszTemp;
+
+ pszTemp = (PTSTR) HeapReAlloc(hHeap, HEAP_ZERO_MEMORY, pszString, (nResult + 1) * sizeof(TCHAR));
+ if(NULL != pszTemp)
+ {
+ pszString = pszTemp;
+ }
+ else
+ {
+ ERR(DLLTEXT("GetStringResource() HeapReAlloc() of string retrieved failed!\r\n"));
+ }
+ }
+ else
+ {
+ ERR(DLLTEXT("GetStringResource() failed to load string resource!\r\n"));
+
+ pszString = NULL;
+ }
+ }
+ else
+ {
+ ERR(DLLTEXT("GetStringResource() failed to allocate string buffer!\r\n"));
+ }
+
+ return pszString;
+}
+
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.h
new file mode 100644
index 00000000..0f392cc5
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/oemui.h
@@ -0,0 +1,45 @@
+// 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.
+//
+// Copyright 1997 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: OEMUI.H
+//
+//
+// PURPOSE: Define common data types, and external function prototypes
+// for OEMUI Test Module.
+//
+
+#pragma once
+
+#include "OEM.H"
+#include "DEVMODE.H"
+#include "globals.h"
+
+
+////////////////////////////////////////////////////////
+// OEM UI Defines
+////////////////////////////////////////////////////////
+
+
+// OEM Signature and version.
+#define PROP_TITLE L"OEM UI Page"
+#define DLLTEXT(s) "ThemeUI: " s
+
+
+// Printer registry keys where OEM data is stored.
+#define OEMUI_VALUE TEXT("OEMUI_VALUE")
+#define OEMUI_DEVICE_VALUE TEXT("OEMUI_DEVICE_VALUE")
+
+
+
+////////////////////////////////////////////////////////
+// Prototypes
+////////////////////////////////////////////////////////
+
+HRESULT hrOEMPropertyPage(DWORD dwMode, POEMCUIPPARAM pOEMUIParam);
+HRESULT hrOEMDocumentPropertySheets(PPROPSHEETUI_INFO pPSUIInfo, LPARAM lParam, IPrintOemDriverUI* pOEMHelp);
+HRESULT hrOEMDevicePropertySheets(PPROPSHEETUI_INFO pPSUIInfo, LPARAM lParam);
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precomp.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precomp.h
new file mode 100644
index 00000000..0607fe55
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precomp.h
@@ -0,0 +1,61 @@
+// 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.
+//
+// Copyright 1997 - 2003 Microsoft Corporation. All Rights Reserved.
+//
+// FILE: precomp.H
+//
+//
+// PURPOSE: Common headers that don't change often
+//
+
+#pragma once
+
+// Necessary for compiling under VC.
+#if(!defined(WINVER) || (WINVER < 0x0500))
+ #undef WINVER
+ #define WINVER 0x0500
+#endif
+#if(!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500))
+ #undef _WIN32_WINNT
+ #define _WIN32_WINNT 0x0500
+#endif
+
+// Isolation define for using ComCtrl v6.
+#ifndef ISOLATION_AWARE_ENABLED
+ #define ISOLATION_AWARE_ENABLED
+#endif
+
+
+// Required header files that shouldn't change often.
+
+#include <STDDEF.H>
+#include <STDLIB.H>
+#include <OBJBASE.H>
+#include <STDARG.H>
+#include <STDIO.H>
+#include <WINDEF.H>
+#include <WINERROR.H>
+#include <WINBASE.H>
+#include <WINGDI.H>
+#include <WINDDI.H>
+#include <WINSPOOL.H>
+#include <TCHAR.H>
+#include <EXCPT.H>
+#include <ASSERT.H>
+#include <PRSHT.H>
+#include "COMPSTUI.H"
+#include <WINDDIUI.H>
+#include <PRINTOEM.H>
+#include <COMMCTRL.H>
+#include <INITGUID.H>
+#include <PRCOMOEM.H>
+
+// Safe character string functions to detect buffer overrun conditions:
+#include <strsafe.h>
+
+// Safe integer functions to detect integer overflow/underflow conditions:
+#include <intsafe.h>
+
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precompsrc.cpp b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precompsrc.cpp
new file mode 100644
index 00000000..5944cf51
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/precompsrc.cpp
@@ -0,0 +1 @@
+#include "precomp.h" \ No newline at end of file
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/resource.h b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/resource.h
new file mode 100644
index 00000000..71d3d3d6
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/resource.h
@@ -0,0 +1,24 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by OEMUI.rc
+//
+#define IDS_SECTION 1
+#define IDS_CALIBRATED 2
+#define IDS_NAME 3
+#define IDS_DEV_SECTION 4
+#define IDS_DEVICE_SECTION 4
+#define IDS_ADV_SECTION 10
+#define IDD_DEVICE_PROPPAGE 106
+#define IDD_DOC_PROPPAGE 107
+#define IDC_CALIBRATE 1001
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 103
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1002
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/themeuismpl.def b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/themeuismpl.def
new file mode 100644
index 00000000..8e60b60d
--- /dev/null
+++ b/print/OEM Printer Customization Plug-in Samples/C++/ThemeUI/themeuismpl.def
@@ -0,0 +1,3 @@
+LIBRARY ThemeUISmpl
+EXPORTS DllGetClassObject PRIVATE
+ DllCanUnloadNow PRIVATE