What is 3021 (0x00000BCD)

 
Previous Next
ERROR_PRINT_JOB_RESTART_REQUIRED ERROR_PRINTER_NOT_SHAREABLE

ERROR_INVALID_PRINTER_DRIVER_MANIFEST

A print driver package may contain two kinds of manifest:

  • Application manifests are required for all Windows Vista drivers as a security feature. For more information on application manifests, see Guidelines for Writing Device Installation Applications.
  • Theme manifests are an option for print drivers for controlling the appearance of the print application UI (problem with this manifest cause ERROR_INVALID_PRINTER_DRIVER_MANIFEST).

Printer driver manifest & error ERROR_INVALID_PRINTER_DRIVER_MANIFEST (3021)If you add a theme manifest to your print driver for Windows XP, you can ensure that user interface elements in your driver match the Windows XP visual style.

The visual style in Windows XP is the result of changes in the Shell Common Controls (Comctl32.dll, version 6.0). This version is almost fully backward compatible with version 5.0. However, some problems can occur with drivers that were written for version 5.0 when they run under version 6.0. To avoid such problems, the print system does not force drivers to use Comctl32.dll version 6.0. For a sample theme manifest, see \src\print\oemdll\ThemeUI\ThemeUI.Manifest in the WDK.

If you add a theme manifest to your driver that specifies dependency on version 6 of Comctl32.dll, it will work properly on Windows XP and later operating system versions, as well as on Windows 2000. Windows 2000 ignores the manifest; therefore any use of the activation context fails gracefully. Note that because Comctl32.dll version 5.0 is not contained in the global assembly cache (GAC), a manifest that specifies a dependency on this version of the DLL breaks the component. In this case, the call to the Win32 API LoadLibrary fails while trying to load Comctl32.dll (ERROR_INVALID_PRINTER_DRIVER_MANIFEST).

An application can have a global (or application) manifest. If this global manifest contains a redirection to use Comctl32.dll version 6.0, this forces all of the UI that the application creates to use the same theme. One result of this is that printer drivers launched from an application with a global manifest might be forced to use Comctl32.dll version 6.0, regardless of any Comctl32.dll redirection in the driver manifest.

For more information about manifests and assemblies, activation contexts, isolated applications and side-by-side assembly sharing, see the Microsoft Windows SDK documentation.

V4 Driver Manifest

The v4 print driver manifest is a text file that contains all the printer-specific setup directives. A v4 print driver manifest is used in conjunction with a v4 print driver INF file, as part of the set up for a printer-specific v4 print driver.

The directives in a manifest are organized into sections:

  • DriverConfig Section
  • BidiFiles Section
  • DriverRender Section
  • FileSave Section
  • PrinterExtensions Section
  • Related topics

Sample of a v4 print driver manifest

The following is a sample of a v4 print driver manifest.

[DriverConfig]
DataFile=FAPDL.xml
RequiredFiles=UNIRES.DLL,STDNAMES.GPD,STDDTYPE.GDL,STDSCHEM.GDL,STDSCHMX.GDL,XPSSVCS.DLL,MSXPSINC.GPD,PWGRRenderFilter.DLL
ResourceFile=FARC.dll
PropertyBag=FAProperty.dpb
PrinterDriverID={GUID}
DriverCategory=PrintFax.Printer
ConstraintScript=faconst.js
EventFile=faevents.xml
PrinterExtensionUrl="https://www.fabrikam.com/download.asp?uiapp=120"
UserPropertyBagScope=Manufacturer
DataFileType="application/vnd.ms-PrintDeviceCapabilities+xml"
RetrievePrintDeviceCapabilitiesFromDevice=true

[BidiFiles]
BidiSPMFile=FABidiSPM.xml
BidiWSDFile=FABidiWSD.xml
BidiUSBFile=FaBidiUSB.xml
BidiUSBJSFile=FABidiUSBJS.js

[DriverRender]
PageOutputQuality.Draft=MxdcImageType.JPEGHigh
PageOutputQuality.Normal=MxdcImageType.JPEGMedium
PageOutputQuality.High=MxdcImageType.PNG
OutputFormat="image/pwg-raster"

[PrinterExtensions]
DriverEvent=FAapp.exe,{GUID}
PrintPreferences=FAapp.exe,{GUID2}