Export (0) Print
Expand All

7 Appendix B: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include released service packs:

  • Windows NT 3.1 operating system

  • Windows NT 3.5 operating system

  • Windows NT 3.51 operating system

  • Windows NT 4.0 operating system

  • Microsoft Windows 98 operating system

  • Windows 2000 operating system

  • Windows Millennium Edition operating system

  • Windows XP operating system

  • Windows Server 2003 operating system

  • Windows Vista operating system

  • Windows Server 2008 operating system

  • Windows 7 operating system

  • Windows Server 2008 R2 operating system

  • Windows 8 operating system

  • Windows Server 2012 operating system

  • Windows 8.1 operating system

  • Windows Server 2012 R2 operating system

Exceptions, if any, are noted below. If a service pack or Quick Fix Engineering (QFE) number appears with the product version, behavior changed in that service pack or QFE. The new behavior also applies to subsequent service packs of the product unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms SHOULD or SHOULD NOT implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term MAY implies that the product does not follow the prescription.

<1> Section 1.4: In Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, print servers can publish printers to the Active Directory, and print clients can search the Active Directory for printers. In Windows NT 3.51 and Windows NT 4.0, print clients and servers do not interact with the directory.

<2> Section 1.7: The dwBuildNumber value for OSVERSIONINFO and OSVERSIONINFOEX (section 2.2.3.10.2) for specific versions of Windows is shown in the table that follows.

Version

dwBuildNumber value

Windows 8.1 and Windows Server 2012 R2

>= 9431

Windows 8 and Windows Server 2012

>= 9200

Windows 7 and Windows Server 2008 R2

>= 7007

Windows Vista SP1 and Windows Server 2008

>= 6001

Windows Vista and Windows Server 2008

>= 6000

Windows XP SP1

>= 2196

Windows XP and Windows Server 2003

>= 2196

Windows 2000

>= 1382

Windows NT 4.0

>= 1381

<3> Section 2.1: The Windows server impersonates the client when processing a method, and it registers security providers as follows:

<4> Section 2.2.1.2.7: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<5> Section 2.2.1.2.8: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<6> Section 2.2.1.2.10: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<7> Section 2.2.1.2.11: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<8> Section 2.2.1.2.12: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<9> Section 2.2.1.2.14: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<10> Section 2.2.1.2.15: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<11> Section 2.2.1.2.16: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<12> Section 2.2.1.2.17: The RPC_BranchOfficeJobDataContainer (section 2.2.1.2.17) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<13> Section 2.2.1.3.1: The Windows operating system uses the following values to indicate printer drivers on different OS versions:

Value

Meaning

0x00000000

The printer driver for Windows 95, Windows 98, and Windows Millennium Edition.

0x00000001

The printer driver for Windows NT 3.51.

0x00000002

Kernel-mode printer driver for Windows NT 4.0.

0x00000003

User-mode printer driver for Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2.

0x00000004

User-mode printer driver for Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<14> Section 2.2.1.3.1: In Windows, a language monitor is specified for printers capable of bidirectional communication. The name is specific to a printer manufacturer. For example, the name of a language monitor could be "PJL monitor".

<15> Section 2.2.1.3.1: Windows print servers use this ordering for pDependentFiles members of returned DRIVER_INFO (section 2.2.1.5) and DRIVER_INFO and RPC_DRIVER_INFO Members (section 2.2.1.3.1) structures on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<16> Section 2.2.1.3.1: Windows operating systems use a combination of the OS major and minor numbers, the build number, and the revision. For example, the printer driver version number 0x000500020ECE0726 represents:

  • OS Major Version: 0x0005

  • OS Minor Version: 0x0002

  • Build number: 0x0ECE (3790)

  • Revision: 0x0726 (1830)

Windows clients use this value to check the versions of server printer driver, and when a version does not match, the user is prompted to update the driver.

<17> Section 2.2.1.3.6: In Windows, if non-NULL, the string length must be less than or equal to 1,041 characters.

<18> Section 2.2.1.3.6: In Windows, if non-NULL, the string length must be less than or equal to 256 characters.

<19> Section 2.2.1.3.7: The Windows implementation uses the following major version values.

Value

Meaning

0x00000004

The operating system is Windows 95, Windows NT 4.0, Windows 98, or Windows Millennium Edition.

0x00000005

The operating system is Windows 2000, Windows XP, or Windows Server 2003.

0x00000006

The operating system is Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7, Windows 8, Windows Server 2012, Windows 8.1, or Windows Server 2012 R2.

<20> Section 2.2.1.3.7: The Windows implementation uses the following minor version values.

Value

Meaning

0x00000000

The operating system is Windows 95, Windows NT 4.0, Windows 2000, Windows Vista, Windows Server 2008, Windows 8, Windows Server 2012, Windows 8.1, or Windows Server 2012 R2.

0x00000001

The operating system is Windows XP, Windows 7, Windows Server 2008, Windows 8, Windows Server 2012, Windows 8.1, or Windows Server 2012 R2.

0x00000002

The operating system is Windows XP Professional x64 Edition or Windows Server 2003.

0x0000000A

The operating system is Windows 98.

0x0000005A

The operating system is Windows Millennium Edition.

<21> Section 2.2.1.3.7: The Windows implementation uses the following processor architecture values:

Name/Value

Meaning

PROCESSOR_ARCHITECTURE_INTEL

0x0000

x86 architecture

PROCESSOR_ARCHITECTURE_IA64

0x0006

Itanium architecture

PROCESSOR_ARCHITECTURE_AMD64

0x0009

AMD64 architecture

PROCESSOR_ARCHITECTURE_ARM

0x0005

ARM architecture

<22> Section 2.2.1.4: In Windows the default job name is "No Document Name".

<23> Section 2.2.1.5.3: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<24> Section 2.2.1.5.4: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<25> Section 2.2.1.5.5: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<26> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<27> Section 2.2.1.5.6: Windows uses INF files to define the printer driver configuration.

<28> Section 2.2.1.5.6: This flag was introduced with Windows Vista.

<29> Section 2.2.1.5.6: Windows print servers determine that a printer driver supports the Microsoft XML Paper Specification (XPS) format described in [MSFT-XMLPAPER] if and only if the list of dependent files associated with that printer driver contains the file "PipelineConfig.xml".

This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<30> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<31> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<32> Section 2.2.1.5.6: This flag is supported on Windows 7 and Windows Server 2008 R2.

<33> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<34> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<35> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<36> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<37> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<38> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<39> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<40> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<41> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<42> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<43> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<44> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<45> Section 2.2.1.5.6: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<46> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<47> Section 2.2.1.5.6: When the print queue is associated with a printer port corresponding to a USB printer, Windows print servers use the USB soft reset mechanism described in [USBPRINT] section 4.2.3. This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<48> Section 2.2.1.5.6: This flag is supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<49> Section 2.2.1.5.6: 3D printers are supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<50> Section 2.2.1.5.6: This flag is supported on Windows 8.1 and Windows Server 2012 R2.

<51> Section 2.2.1.5.6: The concepts of core printer driver and core driver dependencies are Windows–specific implementation details.

<52> Section 2.2.1.5.6: In Windows, this member applies to only package-aware printer driver.

<53> Section 2.2.1.5.6: Windows reads this value from the printer driverINF file.

<54> Section 2.2.1.6.2: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<55> Section 2.2.1.6.2: Printer drivers generate an implementation-specific unique identifier. Windows print servers generate a unique GUID.

<56> Section 2.2.1.6.2: Windows provides Multilingual User Interface (MUI) DLLs that contain localized string resources for inbox printer drivers. For third-party printer drivers, whether to localize strings is an implementation decision.

<57> Section 2.2.1.7.3: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<58> Section 2.2.1.7.4: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<59> Section 2.2.1.9.2: Windows specifies a descriptive name for the port monitor. For example: "Standard TCP/IP Port", "Fax Monitor Port", or "Local Port".

<60> Section 2.2.1.9.3: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<61> Section 2.2.1.9.4: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<62> Section 2.2.1.10.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<63> Section 2.2.1.10.1: Windows calculates the version by storing the build version in the high-order 16 bits, and the operation system release number in the low-order 16 bits. For example, 0x0A280005 corresponds to XP build 2600.

<64> Section 2.2.1.10.1: The Windows debugging build of the print server sets fFreeBuild to 0, and the release build of the print server sets fFreeBuild to 1.

<65> Section 2.2.1.10.1: Windows uses the following values:

Value Meaning

PROCESSOR_INTEL_386
0x00000182

Intel 80386 compatible

PROCESSOR_INTEL_486
0x000001E6

Intel 80486 compatible

PROCESSOR_INTEL_PENTIUM
0x0000024A

Intel Pentium compatible

PROCESSOR_INTEL_IA64
0x00000898

Intel Itanium-based compatible

PROCESSOR_AMD_X8664
0x000022A0

AMD x64 compatible

PROCESSOR_ARM
0x00000000

ARM compatible

<66> Section 2.2.1.10.1: Windows returns a nonzero Win32 error code to indicate failure ([MS-ERREF] section 2.2).

<67> Section 2.2.1.10.1: Windows uses the following values:

Value Meaning

PROCESSOR_ARCHITECTURE_INTEL
0x0000

x86 architecture

PROCESSOR_ARCHITECTURE_IA64
0x0006

Itanium architecture

PROCESSOR_ARCHITECTURE_AMD64
0x0009

AMD64 architecture

PROCESSOR_ARCHITECTURE_ARM
0x0005

ARM architecture

<68> Section 2.2.1.10.1: Windows uses the value of 1 for PROCESSOR_ARCHITECTURE_IA64 and PROCESSOR_ARCHITECTURE_AMD64.

For PROCESSOR_ARCHITECTURE_INTEL and PROCESSOR_ARCHITECTURE_ARM, Windows uses the value defined by the CPU vendor.

<69> Section 2.2.1.10.3: Windows servers select the first data type in the list of data types obtained from the print processor. This list is obtained by the same mechanism as in RpcEnumPrintProcessorDatatypes (section 3.1.4.8.5).

<70> Section 2.2.1.10.5: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<71> Section 2.2.1.10.6: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<72> Section 2.2.1.10.7: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<73> Section 2.2.1.10.8: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<74> Section 2.2.1.10.9: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<75> Section 2.2.1.10.10: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<76> Section 2.2.1.11.1: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<77> Section 2.2.1.11.3: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<78> Section 2.2.1.12.1: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<79> Section 2.2.1.12.1: The bidirectional communications schema is a hierarchy of printer attributes, some of which are properties, with the rest being values or value entries. Bidirectional communications interfaces are implemented by printer-specific components. A detailed description of printer drivers and the bidirectional communications schema can be found in the Windows Device Driver Kit. See [MSDN-MPD] and [MSDN-BIDI] for further information.

<80> Section 2.2.1.12.2: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<81> Section 2.2.1.12.2: Windows returns a nonzero error code to indicate failure, as specified in [MS-ERREF].

<82> Section 2.2.1.12.2: The bidirectional communications schema is a hierarchy of printer attributes, some of which are properties, with the rest being values or value entries. Bidirectional communications interfaces are implemented by printer-specific components. A detailed description of printer drivers and the bidirectional communications schema can be found in the Windows Device Driver Kit.

<83> Section 2.2.1.12.3: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<84> Section 2.2.1.13.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<85> Section 2.2.1.13.2: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<86> Section 2.2.1.13.2: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<87> Section 2.2.1.13.3: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<88> Section 2.2.1.13.4: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<89> Section 2.2.1.13.5: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<90> Section 2.2.1.13.6: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<91> Section 2.2.1.14.1: The RPC_PrintPropertyValue structure is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<92> Section 2.2.1.14.2: The RPC_PrintNamedProperty structure is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<93> Section 2.2.1.14.3: The RPC_EPrintPropertyType enumeration is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<94> Section 2.2.1.14.4: The Job Named Property with the name defined by the SPL_FILE_CONTENT_TYPE_PROP_NAME constant is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<95> Section 2.2.1.15.1: The EBranchOfficeJobEventType (section 2.2.1.15.1) enumeration is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<96> Section 2.2.1.15.2: The RPC_BranchOfficeJobData (section 2.2.1.15.2) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<97> Section 2.2.1.15.3: The RPC_BranchOfficeJobDataError (section 2.2.1.15.3) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<98> Section 2.2.1.15.4: The RPC_BranchOfficeJobDataPipelineFailed (section 2.2.1.15.4) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<99> Section 2.2.1.15.5: The RPC_BranchOfficeJobDataPrinted (section 2.2.1.15.5) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<100> Section 2.2.1.15.6: The RPC_BranchOfficeJobDataRendered (section 2.2.1.15.6) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<101> Section 2.2.1.15.7: The RPC_BranchOfficeLogOfflineFileFull (section 2.2.1.15.7) structure is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<102> Section 2.2.1.15.7: The maximum allowed size is determined by the implementation. On Windows, the default value is 10 MB.

<103> Section 2.2.2: The 64-bit Edition of the following Windows versions do not correctly handle custom-marshaled INFO structures where the unused space is not between the end of the last Fixed_Portion block and the beginning of the first Variable_Data field.

  • Windows XP

  • Windows Server 2003

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<104> Section 2.2.2.1: Versions of initialization data specifications correspond to versions of Windows operating systems as follows.

Value Meaning

0x0320

Windows NT 3.1, Windows NT 3.5, and Windows NT 3.51.

0x0400

Windows 95, Windows 98, and Windows Millennium Edition.

0x0401

Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<105> Section 2.2.2.1: Versions of printer drivers correspond to versions of Windows operating systems as follows.

Value Meaning

0x0301 — 0x03FF

Windows NT 3.1, Windows NT 3.5, and Windows NT 3.51 user-mode printer drivers, and Windows NT 4.0 kernel-mode printer drivers.

0x0500 — 0x05FF

Windows 2000, Windows XP, and Windows Server 2003 user-mode printer drivers.

0x0600 — 0x06FF

Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 printer drivers.

<106> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<107> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<108> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<109> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<110> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<111> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<112> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<113> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<114> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<115> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<116> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<117> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<118> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<119> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<120> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<121> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<122> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<123> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<124> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<125> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<126> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<127> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<128> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<129> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<130> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<131> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<132> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<133> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<134> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<135> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<136> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<137> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<138> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<139> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<140> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<141> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<142> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<143> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<144> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<145> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<146> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<147> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<148> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<149> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<150> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<151> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<152> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<153> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<154> Section 2.2.2.1: Supported on Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2. .

<155> Section 2.2.2.1: Supported on Windows 95, Windows NT 4.0, Windows 98, Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<156> Section 2.2.2.1: The value of this field is set by printer manufacturers, depending on the requirements of the printer driver.

<157> Section 2.2.2.1.1: PSCRIPT is the Windows PostScriptcore printer driver. It stores the private data that is required in the _DEVMODEdmDriverExtraData field with the following structures.

The dmDriverExtraData field contains one of the PSDRVEXTRA structures, immediately followed by zero or one JTEXP (section 2.2.2.1.4) structures, followed by zero or more OEM_DMEXTRA (section 2.2.2.1.3) structures.

These structures are not part of the protocol defined in this specification, and they are subject to change without notice. Implementations of compatible drivers must check the structure version and discard any data they do not handle.

PSDRVEXTRA351: Defined by the PSCRIPT driver released with Windows NT 3.51. This structure is used for dmDriverExtraData if the dmDriverVersion of the _DEVMODE structure is 0x0350.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSignature

dwFlags

wchEPSFile

...

...

...

...

...

...

...

(wchEPSFile cont'd for 12 rows)

caSize

caFlags

caIlluminantIndex

caRedGamma

caGreenGamma

caBlueGamma

caReferenceBlack

caReferenceWhite

caContrast

caBrightness

caColorfulness

caRedGreenTint

PSDRVEXTRA400: Defined by the PSCRIPT driver released with Windows NT 4.0. This structure is used for dmDriverExtraData if the dmDriverVersion of the _DEVMODE structure is 0x0400.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSignature

dwFlags

wchEPSFile

...

...

...

...

...

...

...

(wchEPSFile cont'd for 12 rows)

caSize

caFlags

caIlluminantIndex

caRedGamma

caGreenGamma

caBlueGamma

caReferenceBlack

caReferenceWhite

caContrast

caBrightness

caColorfulness

caRedGreenTint

wChecksum

wOptions

aubOptions

...

...

...

...

...

...

...

(aubOptions cont'd for 8 rows)

wChecksum: The value of this field is a checksum of the aubOptions array.

wOptions: The value of this field is the number of entries in the aubOptions array that are initialized.

aubOptions: This field is an array of 64 bytes in length and contains user interface selections. Unused fields should be initialized to zero. The meaning of the entries in this array differs for each supported printer model. Upon receipt, the checksum of this array is computed and compared to wChecksum. The array is used only if the checksums match.

PSDRVEXTRA500: Defined by the PSCRIPT driver released with Windows 2000 and Windows XP. This structure is used for dmDriverExtraData if the dmDriverVersion of the _DEVMODE structure is 0x0501.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSignature

dwFlags

wchEPSFile

...

...

...

...

...

...

...

(wchEPSFile cont'd for 12 rows)

caSize

caFlags

caIlluminantIndex

caRedGamma

caGreenGamma

caBlueGamma

caReferenceBlack

caReferenceWhite

caContrast

caBrightness

caColorfulness

caRedGreenTint

wReserved1

wSize

fxScrFreq

fxScrAngle

iDialect

iTTDLFmt

bReversePrint

iLayout

iPSLevel

dwReserved2

wOEMExtra

wVer

dwX

dwY

dwWidthOffset

dwHeightOffset

wFeedDirection

wCutSheet

dwReserved3

...

...

...

dwChecksum32

dwOptions

aOptions[0]

...

(aOptions array cont'd for 126 elements)

wReserved1: The value of this field should be set to zero when sent and must be ignored on receipt.

wSize: This field is the same as wCoreFullSize in PSDRVEXTRA.

PSDRVEXTRA: Defined by the PSCRIPT driver released with Windows Vista, Windows Server 2008, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2. This structure is used for dmDriverExtraData if the dmDriverVersion of the _DEVMODE structure is 0x0600.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSignature

dwFlags

wchEPSFile

...

...

...

...

...

...

...

(wchEPSFile cont'd for 12 rows)

caSize

caFlags

caIlluminantIndex

caRedGamma

caGreenGamma

caBlueGamma

caReferenceBlack

caReferenceWhite

caContrast

caBrightness

caColorfulness

caRedGreenTint

wCoreJTExpSize

wCoreFullSize

fxScrFreq

fxScrAngle

iDialect

iTTDLFmt

bReversePrint

iLayout

iPSLevel

dwReserved2

wOEMExtra

wVer

dwX

dwY

dwWidthOffset

dwHeightOffset

wFeedDirection

wCutSheet

dwReserved3

...

...

...

dwChecksum32

dwOptions

aOptions[0]

...

(aOptions array cont'd for 126 elements)

dwNupDirection

dwNupBorderFlags

dwBookletFlags

dwPadding

wCoreJTExpSize: The value of this field specifies the size of the JTEXP structure if one is present, following directly after this structure.

wCoreFullSize: The value of this field specifies the size of the PSDRVEXTRA structure plus the value of wCoreJTExpSize.

dwNupDirection: This field is used only if N-Up printing is selected, and the value of this field must be one of the following.

Value

Meaning

0x00000001

Print N-Up pages left-to-right, top-to-bottom.

0x00000002

Print N-Up pages top-to-bottom, left-to-right.

0x00000004

Print N-Up pages right-to-left, top-to-bottom.

0x00000008

Print N-Up pages top-to-bottom, right-to-left.

dwNupBorderFlags: This field is used only if N-Up printing is selected, and the value of this field must be one of the following.

Value

Meaning

0x00000000

Print borders around N-Up pages.

0x00000001

Do not print borders around N-Up pages.

dwBookletFlags: This field is used only if booklet printing is selected, and the value of this field must be one of the following.

Value

Meaning

0x00000000

Print booklet so that pages flip to the left (western style).

0x00000001

Print booklet so that pages flip to the right.

dwPadding: The value of this field should be set to zero when sent and must be ignored on receipt.

Description of common members for PSDRVEXTRA structures:

dwSignature: The value of this field must be 0x56495250.

dwFlags: The value of this field must be the result of the bitwise OR of zero or more of the following values.

Value

Meaning

0x00000002

Send PostScript driver error handler code.

0x00000004

Print mirror image.

0x00000010

Print negative image of page.

0x00000040

Compress bitmaps.

0x00000200

If _DEVMODE field dmOrientation is set to 2 (LANDSCAPE), rotate page by an additional 180 degrees.

0x00002000

If driver is initialized by GDI, inform GDI that metafile spooling is requested.

wchEPSFile: This field is not used.

caSize: The value of this field must be 24.

caFlags: This field is not used.

caIlluminantIndex: This field is not used.

caRedGamma: This field is not used.

caGreenGamma: This field is not used.

caBlueGamma: This field is not used.

caReferenceBlack: This field is not used.

caReferenceWhite: This field is not used.

caContrast: This field is not used.

caBrightness: This field is not used.

caColorfulness: This field is not used.

caRedGreenTint: This field is not used.

fxScrFreq: This field is not used.

fxScrAngle: This field is not used.

iDialect: The value of this field must be one of the following.

Value

Meaning

0x00000000

Optimize generated PostScript for speed.

0x00000001

Optimize generated PostScript for portability.

0x00000002

Optimize generated PostScript for EPS use.

0x00000003

Optimize generated PostScript for archival.

iTTDLFmt: The value of this field must be one of the following.

Value

Meaning

0x00000000

Download fonts in default format, pick the best suited format for font.

0x00000001

Download fonts as Type 1 outlines.

0x00000002

Download fonts as Type 3 bitmaps.

0x00000003

Download fonts as Type 42 fonts.

0x00000004

Same as 0x00000000.

0x00000005

Same as 0x00000000.

bReversePrint: If the value of this field is nonzero, print pages in reverse order; otherwise, print pages in normal order.

iLayout: The value of this field must be one of the following.

Value

Meaning

0x00000000

N-Up printing disabled.

0x00000001

Print 2-Up.

0x00000002

Print 4-Up.

0x00000003

Print 6-Up.

0x00000004

Print 9-Up.

0x00000005

Print 16-Up.

0x00000006

Print as a booklet.

iPSLevel: The value of this field must be one of the following.

Value

Meaning

0x00000001

Use only PostScript level 1 features.

0x00000002

Use only PostScript level 1 and level 2 features.

0x00000003

Use all PostScript features available for level 1, level 2, and level 3.

dwReserved2: The value of this field should be set to zero when sent and MUST be ignored on receipt.

wOEMExtra: The value of this field must be the total size of the private data that is used by the vendor-supplied driver plug-in. This data immediately follows this structure.

wVer: The value of this field must be 0x0010.

dwX: The value of this field specifies the width, in 1/1000th millimeter units, of the custom paper size. Used only if the dmPaperSize field of _DEVMODE is set to 0x7FFF.

dwY: The value of this field specifies the height, in 1/1000th millimeter units, of the custom paper size. Used only if the dmPaperSize field of _DEVMODE is set to 0x7FFF.

dwWidthOffset: The value of this field specifies the left unprintable margin, in 1/1000th of a millimeter, of the custom paper size. Used only if the dmPaperSize field of _DEVMODE is set to 0x7FFF.

dwHeightOffset: The value of this field specifies the top unprintable margin, in 1/1000th of a millimeter, of the custom paper size. Used only if the dmPaperSize field of _DEVMODE is set to 0x7FFF.

wFeedDirection: The value of this field must be one of the following.

Value

Meaning

0x0000

The paper is physically fed into the print mechanism with its long edge first.

0x0001

The paper is physically fed into the print mechanism with its short edge first.

0x0002

The paper is physically fed into the print mechanism with its long edge first, but upside down.

0x0003

The paper is physically fed into the print mechanism with its long edge first, but upside down.

wCutSheet: The value of this field is zero for roll-fed custom paper sizes and nonzero for cut sheet custom paper. This field is used only if the dmPaperSize field of _DEVMODE is set to 0x7FFF.

dwReserved3: The value of this field should be set to zero when sent and MUST be ignored on receipt.

dwChecksum32: The value of this field is the checksum of the names of the vendor-defined features and feature options that are supported by the printer model, as provided by the printer driver. The checksum is calculated using the 32-bit cyclic redundancy check (CRC) function defined in section 3.2.9 of [IEEE802.3-2008]. For each feature, the checksum is calculated on the null-terminated ASCII string representations of the feature name and each of the feature options in order. The checksum is accumulated in this manner over all of the features supported by the printer model.

dwOptions: The value of this field specifies the number of entries in the aOptions array.

aOptions: This field is an array that is 512 bytes long and contains the options selected by the user for each vendor-defined feature. Unused fields should be initialized to zero. The meaning of the entries differs for each supported printer model.

<158> Section 2.2.2.1.2: UNIDRV is the generic Windows core printer driver for all printers that do not use PostScript. It stores its private data in the _DEVMODEdmDriverExtraData area using the following structures.

The dmDriverExtraData field contains one of the UNIDRVEXTRA structures, immediately followed by zero or one JTEXP (section 2.2.2.1.4) structure, followed by zero or more OEM_DMEXTRA (section 2.2.2.1.3) structures.

These structures are not part of the protocol defined in this specification, and they are subject to change without notice. Implementations of compatible drivers must check the structure version and discard any data they do not handle.

UNIDRVEXTRA3_4: defined by the UNIDRV driver released with Windows NT 3.5 and Windows NT 4.0. This structure is used for dmDriverExtraData if the dmDriverVersion field of the _DEVMODE structure is 0x0301.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

wReserved[0]

...

...

(repeats for total of 56 reserved words)

wReserved: This field is no longer used by UNIDRV.

UNIDRVEXTRA500: defined by the UNIDRV driver released with Windows 2000 and Windows XP. This structure is used for dmDriverExtraData if the dmDriverVersion field of the DEVMODE structure is 0x0500.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSignature

wVer

sPadding

wSize

wOEMExtra

dwChecksum32

dwFlags

bReversePrint

iLayout

iQuality

wReserved

...

...

...

...

...

dwOptions

aOptions[0]

...

(repeats for a total of 128 aOptions array elements)

aOptions[127]

sPadding: The value of this field SHOULD be set to zero when sent and MUST be ignored on receipt.

wSize: This field is the same as wCoreFullSize in UNIDRVEXTRA.

UNIDRVEXTRA: defined by the UNIDRV driver released with Windows Vista, Windows Server 2008, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2. This structure is used for dmDriverExtraData if the dmDriverVersion field of the DEVMODE structure is 0x0600.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSignature

wVer

wCoreJTExpSize

wCoreFullSize

wOEMExtra

dwChecksum32

dwFlags

bReversePrint

iLayout

iQuality

wReserved

...

...

...

...

...

dwOptions

aOptions[0]

...

(repeats for a total of 128 aOptions array elements)

aOptions[127]

dwNupDirection

dwNupBorderFlags

dwBookletFlags

wCoreJTExpSize: The value of this field specifies the size of the JTEXP structure if one is present, following directly after this structure.

wCoreFullSize: The value of this field specifies the size of the UNIDRVEXTRA structure plus the value of wCoreJTExpSize.

dwNupDirection: This field is used only if N-Up printing is selected, and it must be one of the following values:

Value

Meaning

0x00000001

Print N-Up pages left-to-right, top-to-bottom.

0x00000002

Print N-Up pages top-to-bottom, left-to-right.

0x00000004

Print N-Up pages right-to-left, top-to-bottom.

0x00000008

Print N-Up pages top-to-bottom, right-to-left.

dwNupBorderFlags: This field is used only if N-Up Printing is selected, and it must be one of the following values:

Value

Meaning

0x00000000

Print borders around N-Up pages.

0x00000001

Do not print borders around N-Up pages.

dwBookletFlags: This field is used only if booklet printing is selected, and it must be one of the following values:

Value

Meaning

0x00000000

Print booklet so that pages flip to the left (western style).

0x00000001

Print booklet so that pages flip to the right.

Description of common members for UNIDRVEXTRA structures:

dwSignature: The value of this field must be 0x44494E55.

dwFlags: The value of this field must be the result of the bitwise OR of zero or more of the following values:

Value

Meaning

0x00000002

Print text as graphics (do not use fonts).

0x00000010

Do not use EMFSPOOL spooling.

0x00000080

Use Custom Quality halftoning.

bReversePrint: If the value of this field is nonzero, print pages in reverse order; otherwise, print pages in normal order.

iLayout: The value of this field must be one of the following values

Value

Meaning

0x00000000

N-Up printing disabled.

0x00000001

Print 2-Up.

0x00000002

Print 4-Up.

0x00000003

Print 6-Up.

0x00000004

Print 9-Up.

0x00000005

Print 16-Up.

0x00000006

Print as a booklet.

iQuality: The value of this field must be one of the following values:

Value

Meaning

0x00000000

Best Quality

0x00000001

Medium Quality

0x00000002

Draft Quality

wReserved: The value of this field SHOULD be set to zero when sent and MUST be ignored on receipt.

wOEMExtra: The value of this field specifies the total size of private data that is used by the vendor-supplied driver plug-in. This data immediately follows this structure.

wVer: The value of this field must be 0x0022.

dwChecksum32: The value of this field is the checksum of the names of the vendor-defined features and feature options that are supported by the printer model, as provided by the printer driver. The checksum is calculated using the 32-bit CRC function defined in section 3.2.9 of [IEEE802.3-2008]. For each feature, the checksum is calculated on the null-terminated ASCII string representations of the feature name and each of the feature options in order. The checksum is accumulated in this manner over all of the features supported by the printer model.

dwOptions: The value of this field is the number of entries in the aOptions array.

aOptions: This field is an array that is 512 bytes in length and contains the options selected by the user for each vendor-defined feature. Unused fields should be initialized to zero. The meaning of the entries differs for each supported printer model.

<159> Section 2.2.2.1.3: This is the OEM_DMEXTRA structure, which contains the _DEVMODEdmDriverExtraData defined by vendor-supplied driver plug-in modules.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSize

dwSignature

dwVersion

Vendor-defined Data (variable)

dwSize: Must be the total size of the vendor-defined data.

dwSignature: Must be a vendor-defined unique number.

dwVersion: Must be the version of the vendor-supplied plug-in.

Vendor-defined Data (variable): A variable-length field that holds vendor-defined data.

<160> Section 2.2.2.1.4: This is the JTEXP structure, which contains the _DEVMODEdmDriverExtraData defined by Windows to hold feature selection information.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

dwSize

dwSignature

dwVersion

wJTHdrSize

wCoreMFOSize

ModelName (variable)

FeatureOptionPairs (variable)

dwSize: Must be the total size of the JTEXP structure. This size must be large enough to accommodate any possible combination of options for the vendor-specified features stored in FeatureOptionPairs.

dwSignature: Must be 0x534D544A.

dwVersion: Must be zero.

wJTHdrSize: Must be set to 16.

wCoreMFOSize: Must be the combined size of ModelName and FeatureOptionPairs. This must be exactly 16 bytes less than dwSize.

ModelName (variable): Must be a zero-terminated UTF-16LE encoded string specifying the name of the printer model.

FeatureOptionPairs (variable): Must be a concatenation of an even number of zero-terminated ASCII strings, terminated by an additional zero character. Each pair of two consecutive strings specifies a vendor-defined feature and the currently selected option for that feature. Each printer driver provides its own list of features and possible option values for each feature.

<161> Section 2.2.2.4.3: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<162> Section 2.2.2.4.4: This feature is supported on the following Windows version:

  • Windows 2000

<163> Section 2.2.2.4.5: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<164> Section 2.2.2.4.6: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<165> Section 2.2.2.4.7: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<166> Section 2.2.2.4.7: Windows uses INF files for installation configuration data. For more information, see [MSDN-UINF] for more details.

<167> Section 2.2.2.4.8: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<168> Section 2.2.2.4.10: Windows print clients use this field to detect changes to printer driver files and to decide whether to update their local copies.

<169> Section 2.2.2.5.2: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<170> Section 2.2.2.6.3: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<171> Section 2.2.2.6.4: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<172> Section 2.2.2.9.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<173> Section 2.2.2.9.5: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<174> Section 2.2.2.9.6: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<175> Section 2.2.2.9.7: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<176> Section 2.2.2.9.8: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<177> Section 2.2.2.9.9: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<178> Section 2.2.2.11: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<179> Section 2.2.2.12: The Windows print server obtains this checksum by calling the GdiQueryFonts API method.

<180> Section 2.2.2.13: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<181> Section 2.2.2.13: In Windows implementations, the driver version is matched to the version portion of the INF fileDriverVer member. For information about INF file syntax, see [MSDN-UINF].

<182> Section 2.2.2.14.4: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<183> Section 2.2.2.14.5: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<184> Section 2.2.2.15.3: This feature is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<185> Section 2.2.3.1: This feature is supported on the following Windows version:

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<186> Section 2.2.3.1: This feature is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<187> Section 2.2.3.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<188> Section 2.2.3.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<189> Section 2.2.3.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<190> Section 2.2.3.2: These change notification flags are supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<191> Section 2.2.3.3: These job notification values are supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<192> Section 2.2.3.4: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<193> Section 2.2.3.6.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<194> Section 2.2.3.6.1: PRINTER_CHANGE_ALL (0x7777FFFF) is supported by the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

<195> Section 2.2.3.6.1: PRINTER_CHANGE_ALL_2 (0x7F77FFFF) is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<196> Section 2.2.3.6.2: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<197> Section 2.2.3.6.2: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<198> Section 2.2.3.7: Windows displays this printer in its list of network-available printers.

<199> Section 2.2.3.7: Windows displays this printer in its list of network-available printers.

<200> Section 2.2.3.7: Windows displays this printer in its list of network-available printers.

<201> Section 2.2.3.7: Windows displays this printer in its list of network-available printers.

<202> Section 2.2.3.7: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<203> Section 2.2.3.8: Except where different versions are specifically noted, these printer notification values are supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<204> Section 2.2.3.8: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<205> Section 2.2.3.8: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<206> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

<207> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows Server 2003

<208> Section 2.2.3.10: Windows does not use this key name remotely.

<209> Section 2.2.3.10: Windows does not use this key name remotely.

<210> Section 2.2.3.10: Windows does not use this key name remotely.

<211> Section 2.2.3.10: Windows does not use this key name remotely.

<212> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

<213> Section 2.2.3.10: Windows does not use this key name remotely.

<214> Section 2.2.3.10: Windows does not use this key name remotely.

<215> Section 2.2.3.10: Windows does not use this key name remotely.

<216> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<217> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<218> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<219> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<220> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<221> Section 2.2.3.10: This feature is supported on the following Windows versions:

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<222> Section 2.2.3.10: Windows by default does not configure this value, allowing drivers with a driver version (see cVersion in section 2.2.1.3.1) of 0x00000004 to run printer UI applications if available. An administrator can change this behavior by creating the "HKLM\Software\Policies\Microsoft\Windows NT\Printers\V4DriverDisallowPrinterUIApp" REG_DWORD value in the registry and initializing this value with 0x00000001. This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<223> Section 2.2.3.10.1: The dwBuildNumber value for OSVERSIONINFO and OSVERSIONINFOEX for specific versions of Windows is shown in the table that follows.

Version

dwBuildNumber value

Windows 8.1 and Windows Server 2012 R2

>= 9431

Windows 8 and Windows Server 2012

>= 9200

Windows 7 and Windows Server 2008 R2

>= 7007

Windows Vista SP1 and Windows Server 2008

>= 6001

Windows Vista and Windows Server 2008

>= 6000

Windows XP SP1

>= 2196

Windows XP and Windows Server 2003

>= 2196

Windows 2000

>= 1382

Windows NT 4.0

>= 1381

<224> Section 2.2.3.10.3: This value indicates Windows 2000 Professional, Windows XP, Windows Vista, Windows 7, Windows 8, or Windows 8.1.

<225> Section 2.2.3.10.3: This value indicates Windows 2000 Server, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, or Windows Server 2012 R2.

<226> Section 2.2.3.10.3: This value indicates Windows 2000 Server, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, or Windows Server 2012 R2.

<227> Section 2.2.3.10.5: Windows uses the following values, which can be combined to specify multiple product suites.

Value Meaning

VER_SUITE_SMALLBUSINESS
0x00000001

Microsoft Small Business Server was once installed on the system, but it might have been upgraded to another version of Windows.

VER_SUITE_ENTERPRISE
0x00000002

Windows NT Server 4.0 Enterprise Edition, Windows 2000 Advanced Server, Windows Server 2003 Enterprise Edition, or Windows Server 2008 Enterprise is installed.

VER_SUITE_BACKOFFICE
0x00000004

Microsoft BackOffice components are installed.

VER_SUITE_TERMINAL
0x00000010

Terminal Services is installed. If VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS is not set, the system is running in application server mode.

VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020

Microsoft Small Business Server is installed with the restrictive client license in force.

VER_SUITE_EMBEDDEDNT
0x00000040

Windows XP Embedded is installed.

VER_SUITE_DATACENTER
0x00000080

Windows 2000 Datacenter Server, Windows Server 2003 Datacenter Edition, or Windows Server 2008 Datacenter is installed.

VER_SUITE_SINGLEUSERTS
0x00000100

Remote Desktop is supported, but only one interactive session. This value is set unless the system is running in application server mode.

VER_SUITE_PERSONAL
0x00000200

Windows XP Home Edition, Windows Vista Home Basic, or Windows Vista Home Premium is installed.

VER_SUITE_BLADE
0x00000400

Windows Server 2003 Web Edition is installed.

VER_SUITE_STORAGE_SERVER
0x00002000

Windows Storage Server 2003 R2 or Windows Storage Server 2003 is installed.

VER_SUITE_COMPUTE_SERVER
0x00004000

Windows Server 2003 Compute Cluster Edition is installed.

VER_SUITE_WH_SERVER
0x00008000

Windows Home Server is installed.

<228> Section 2.2.3.11: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<229> Section 2.2.3.11: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<230> Section 2.2.3.11: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<231> Section 2.2.3.11: This feature is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<232> Section 2.2.3.11: Windows reports as the last driver identifier in the list the Microsoft Universal Sharing driver ({A9838643-5862-4F72-ACAF-F4CECE098759}). This value is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<233> Section 2.2.3.11: This value is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<234> Section 2.2.3.11: This value is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<235> Section 2.2.3.11: This value is supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<236> Section 2.2.3.11: This feature is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<237> Section 2.2.3.11: This feature is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<238> Section 2.2.3.11: The default value on Windows implementations is 10 MB.

<239> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<240> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<241> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<242> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<243> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<244> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<245> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<246> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<247> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<248> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<249> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<250> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<251> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<252> Section 2.2.3.12: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<253> Section 2.2.4.2: Windows supports the spool filedata type formats EMFSPOOL, RAW format, XML Paper Specification (XPS), and custom data types defined by custom print processors. For more information on these formats, see [MS-EMFSPOOL], [MSDN-SPOOL], [MSDN-XMLP], and [MSFT-XMLPAPER].

Windows standard print processors support the following case-insensitive data type name strings:

Name

Description

"RAW"

RAW

"RAW [FF appended]"

RAW

"RAW [FF auto]"

RAW

"NT EMF 1.003"

EMFSPOOL

"NT EMF 1.006"

EMFSPOOL

"NT EMF 1.007"

EMFSPOOL

"NT EMF 1.008"

EMFSPOOL

"TEXT"

Plain text

"XPS_PASS"

XPS passthrough (supported on Windows Vista, Windows Server 2008, Windows Vista SP1, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2).

"XPS2GDI"

XPS data to be converted into a new Graphics Device Interface (GDI)print job to send to the device (supported on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2).

<254> Section 2.2.4.3: Windows restricts driver name strings to 260 characters, including the terminating null character.

<255> Section 2.2.4.4: The environment name strings "Windows 4.0" and "Windows NT x86" are supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

The environment name string "Windows IA64" is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

The environment name string "Windows x64" is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

The environment name string "Windows ARM" is supported on the following Windows versions, and only on print servers with the "Windows ARM" operating system environment:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<256> Section 2.2.4.5: Windows restricts form name strings to 260 characters, including the terminating null character.

<257> Section 2.2.4.7: Windows restricts key name strings to 260 characters, including the terminating null character.

<258> Section 2.2.4.8: Windows restricts monitor name strings to 260 characters, including the terminating null character.

<259> Section 2.2.4.9: IPv6 names are supported only on Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<260> Section 2.2.4.9: Windows uses the following pattern for local files:


NAME = <any TEXT except "\">

DIRECTORY = "\" 1#NAME

FILENAME = "\" 1#NAME

PATH = [alpha ":"] #DIRECTORY FILENAME

<261> Section 2.2.4.9: Windows restricts path name strings to 519 characters, including the terminating null character.

<262> Section 2.2.4.10: Windows uses the following patterns for port names:

PARALLEL_PORT = "LPT" DIGIT ":"

SERIAL_PORT = "COM" DIGIT ":"

FILE_PORT = "FILE:"

USB_PORT = "USB" 1#DIGIT ":"

UNC_PORT = SERVER_NAME DIRECTORY FILENAME

LOCAL_FILE_PORT = PATH

PORT_NAME = (PARALLEL_PORT | SERIAL_PORT | FILE_PORT | USB_PORT | 
    UNC_PORT | LOCAL_FILE_PORT)

where:

  • SERVER_NAME is specified in section 2.2.4.16.

  • DIRECTORY is specified in section 2.2.4.9.

  • PARALLEL_PORT is used for devices attached through a parallel port.

  • SERIAL_PORT is used for devices attached through a serial port.

  • FILE_PORT is used to send data to a file.

  • USB_PORT is used for devices attached through a universal serial bus (USB)port.

  • UNC_PORT is used for network printers attached directly through an IP address or a network address.

Windows supports the pooling of ports. When printing to a printer associated with a pool of ports, the first available port is picked by the print server. Port pooling allows representation of multiple identical physical printers as a single logical printer. Pooled port names are represented as a comma-separated list of port names, for example, "LPT1:,LPT2:".

Clients connecting to a Windows print server need to be prepared to handle pooled ports correctly; for example, they cannot rely on individual port names enumerated by the RpcEnumPorts method to match the string pointed to by the pPortName member of a PRINTER_INFO (section 2.2.1.10) structure.

<263> Section 2.2.4.11: Windows restricts print processor name strings to 260 characters, including the terminating NULL character.

<264> Section 2.2.4.12: Windows restricts print provider name strings to 260 characters, including the terminating null character.

<265> Section 2.2.4.14: Windows uses the following postfix string (PRINTER_NAME_POSTFIX) values: "LocalOnly", "LocalsplOnly", and "DrvConvert". "LocalOnly" means that the client asks the server to use only local printer settings for RpcGetPrinterData and RpcSetPrinterData, and it specifies that the client is not interested in printing to this local printer but only in accessing the printer's local settings. "LocalsplOnly" and "DrvConvert" are treated the same way and mean that the client asks the server to open only the local printer with the respective name (PRINTER_NAME_PREFIX) if such local printer exists. These postfix strings are used on Windows during the upgrade of a printer driver and in other cases where it is preferred that a printer is accessed locally.

<266> Section 2.2.4.14: Windows restricts printer name strings to 539 characters (259 + 260 + 20), including all backslashes, other separators, and the terminating null character.

<267> Section 2.2.4.16: IPv6 names are supported only on Windows Vista, Windows Server 2008, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<268> Section 2.2.4.16: Windows restricts server name strings to 259 characters, including the two leading backslash characters and trailing backslash character.

<269> Section 2.2.4.18: Windows restricts value name strings to 260 characters, including the terminating null character.

<270> Section 2.3.1: In Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, print servers can publish printers to the Active Directory. In Windows NT 4.0 and Windows NT 3.51, print servers do not interact with the directory.

<271> Section 2.3.3.1: Windows print servers attempt to set the following attributes based on internal print spooler state:

  • uNCName

  • serverName

  • shortServerName

  • versionNumber

  • printerName

  • description

  • driverName

  • location

  • portName

  • printStartTime

  • printEndTime

  • printKeepPrintedJobs

  • printSeparatorFile

  • printShareName

  • printSpooling

  • priority

  • url

  • flags

  • printStatus

  • printAttributes

  • driverVersion

Windows print servers attempt to set the following attributes based on the results of querying the printer driver configuration module:

  • printBinNames

  • printCollate

  • printColor

  • printDuplexSupported

  • printStaplingSupported

  • printMaxXExtent

  • printMaxYExtent

  • printMinXExtent

  • printMinYExtent

  • printMediaSupported

  • printMediaReady

  • printNumberUp

  • printMemory

  • printOrientationsSupported

  • printMaxResolutionSupported

  • printLanguage

  • printRate

  • printRateUnits

  • printPagesPerMinute

All other attributes in the print schema can be set indirectly by print clients using RpcSetPrinterDataEx (section 3.1.4.2.18), as specified in section 2.3.3.1.

<272> Section 2.3.3.1: Windows print servers will publish a value under one of the "DsSpooler", "DsDriver", and "DsUser" keys to the directory, if its name corresponds to an attribute in the schema for the print queue object class.

<273> Section 2.3.3.2: Windows print servers persist a string representing the GUID for the published object in the directory. This string corresponds to the pszObjectGUID member of the PRINTER_INFO_7 structure. Windows print servers then call the IDL_DRSCrackNames method of the DRSR protocol, documented in [MS-DRSR] section 4.1.4, on the domain controller to convert the GUID string into the fully qualified DN of the object.

<274> Section 2.3.3.2: When a Windows print server performs an LDAP update operation for a print queue, it always updates all of the LDAP attributes corresponding to the printer data values under one printer data key ("DsSpooler", "DsDriver", or "DsUser") where the server has stored attributes as described in section 2.3.3.1.

<275> Section 2.3.3.3: In Windows 2000, Windows XP, and Windows Server 2003, print clients search the GC for print queues in all naming contexts. In Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, print clients only search the current naming context by default, but users can still choose to search other naming contexts.

<276> Section 2.3.3.3: In Windows 2000, Windows XP, and Windows Server 2003, print client negotiate encryption for LDAP requests. In Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, print clients do not use encryption except when users choose to customize the printer search by specifying other NCs or more detailed filters.

<277> Section 2.3.3.4: By default, Windows servers never perform this periodic operation. An administrator can change this behavior by writing a time period, in minutes, to the "HKLM\Software\Policies\Microsoft\Windows NT\Printers\VerifyPublishedState" value (REG_DWORD type) in the registry.

<278> Section 2.3.3.4: On Windows servers that are configured as writabledomain controllers (DC), the periodic search procedure is, by default, executed every 8 hours. This default period of 8 hours can be changed by writing the new time period, in minutes, to the "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PruningInterval" value (REG_DWORD type) in the registry. The Windows servers that are not configured as writabledomain controllers do not execute this periodic search.

<279> Section 3.1.1: Windows implements port pooling. A printer object can manage references to multiple port objects. A physical print device is connected to each of the port objects, but the physical print devices are substantially the same. Windows transparently distributes incoming jobs to the multiple port objects to balance workload.

<280> Section 3.1.1: Windows creates the print job SECURITY_DESCRIPTOR by inheriting the SECURITY_DESCRIPTOR of the printer (which by default grants JOB_ALL_ACCESS to members of the Administrators group and to the creator/owner client) and by adding an access allowed entry that grants JOB_READ access to the submitting client.

<281> Section 3.1.1: Job Named Properties are supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<282> Section 3.1.1: In Windows implementations, the printer driver version is a DWORD set to one of the following values:

Value

Meaning

0x00000001

Windows NT 3.51 user-mode printer drivers

0x00000002

Windows NT 4.0 user-mode printer drivers.

0x00000003

Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 user-mode printer drivers.

0x00000004

Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 user-mode printer drivers.

<283> Section 3.1.1: Windows print servers initialize the list to contain the TCPMONport monitor, which provides support for TCP/IP-connected printers.

<284> Section 3.1.1: Print providers are Windows–specific and not required by this protocol.

<285> Section 3.1.1: In addition to the list of print providers persisted in the registry, the list of print providers on Windows print servers also includes a print provider named "Windows NT Local Print Provider".

<286> Section 3.1.1: The only versions of Windows servers that maintain such a list are Windows XP and Windows Server 2003. Administrators can configure this list. In all other versions of Windows, this list does not exist.

<287> Section 3.1.1: Windows print servers that maintain a list of warned printer drivers persist the list in an INF file called printupg.inf.

<288> Section 3.1.1: The Job Named Properties are supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<289> Section 3.1.1: Branch office print mode is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<290> Section 3.1.1: Persistence of Abstract Data Model in the Registry

Print system management tools such as printmig, brm, and other third-party applications read and write registry values that are used by the Windows print server to persist its abstract data model. Windows print servers also persist objects from the abstract data model and other settings in the registry, as described in the following table.

Note that the value of the registry key entry shown in the table below is wrapped to the following line at the backslash character for easier reading. The actual string value is one contiguous string.

For example: A value in the table such as

HKLM\
SYSTEM\
CurrentControlSet\
Control\
Print

represents a registry key path string that would be entered in a string variable as:

"HKLM\SYSTEM\CurrentControlSet\Control\Print"

Registry key

Value

Type

Description

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

     
 

MaxRPCSize

REG_DWORD

Maximum buffer size accepted by the server in RPC calls. The default used, if this value is not present, is 50MB.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Environments\

[Env Name]\

Drivers

   

The list of printer drivers installed on the print server for the environment named [Env Name].

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Environments\

[Env Name]\

Drivers\

[Version]\

[Driver Name]

   

Information about the printer driver named [Driver Name] having the version identified by [Version] for the environment named [Env Name].

 

Configuration File

REG_SZ

Persisted DRIVER_INFO member pConfigFile.

 

Data File

REG_SZ

Persisted DRIVER_INFO member pDataFile.

 

Driver

REG_SZ

Persisted DRIVER_INFO member pDriverPath.

 

Help File

REG_SZ

Persisted DRIVER_INFO member pHelpFile.

 

Monitor

REG_SZ

Persisted DRIVER_INFO member pMonitorName.

 

Datatype

REG_SZ

Persisted DRIVER_INFO member pDefaultDataType.

 

Dependent Files

REG_MULTI_SZ

Persisted DRIVER_INFO member pDependentFiles.

 

Previous Names

REG_MULTI_SZ

Persisted DRIVER_INFO member pszzPreviousNames.

 

Version

REG_DWORD

Persisted DRIVER_INFO member cVersion.

 

Manufacturer

REG_SZ

Persisted DRIVER_INFO member pMfgName.

 

OEM URL

REG_SZ

Persisted DRIVER_INFO member pOEMUrl.

 

HardwareID

REG_SZ

Persisted DRIVER_INFO member pHardwareID.

 

Provider

REG_SZ

Persisted DRIVER_INFO member pProvider.

 

DriverDate

REG_BINARY

Persisted DRIVER_INFO member ftDriverDate.

 

DriverVersion

REG_BINARY

Persisted DRIVER_INFO member dwlDriverVersion.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Environments\

[Env Name]\

Print Processors

   

The list of print processors installed on the print server for the environment named [Env Name].

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Environments\

[Env Name]\

Print Processors\

[Processor Name]

   

Information about the print processor named [Processor Name] for the environment named [Env Name].

 

Driver

REG_SZ

Persisted pPathName parameter used when print processor was added by the RpcAddPrintProcessor (section 3.1.4.8.1) method.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Forms

   

The list of form objects installed on the print server.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Monitors

   

The list of language monitors and port monitors installed on the print server.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Monitors\

[Monitor Name]

   

Information about the port monitor named [Monitor Name].

 

Driver

REG_SZ

Persisted MONITOR_INFO_2 (section 2.2.1.8.2) member pDLLName.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Monitors\

LPR Port\

Ports

   

Information about LPR ports.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Monitors\

LPR Port\

Ports\

[Port name]

   

Information about the LPR port named [Port Name].

 

Server Name

REG_SZ

Host address of server exposing LPR port.

 

Printer Name

REG_SZ

Queue name on LPR server.

HKLM\

SYSTEM\

CurrentControlSet\

Control\

Print\

Monitors\

Standard TCP/IP Port\

Ports

     

HKLM\

SOFTWARE\

DigitalEquipmentCorporation\

Network Printing Software

All subkeys and values

 

Opaque data for DEC Networking monitors.

HKLM\

SOFTWARE\

Hewlett-Packard\

HP JetAdmin

All subkeys and values

 

Opaque data for HP JetAdmin monitors.

HKLM\

SOFTWARE\

Lexmark

All subkeys and values

 

Opaque data for Lexmark Networking monitors.

HKLM\

SOFTWARE\

Microsoft\

Windows NT\

CurrentVersion\

Ports

   

List of all ports installed with the print server.

 

[Port Name]

REG_SZ

Implementation-specific initialization parameters for the port named [Port Name]. If there are no initialization parameters, the value specifies an empty string.

HKLM\

SOFTWARE\

Microsoft\

Windows NT\

CurrentVersion\

Print\

Connections

   

The list of per-machine connections on the print server.

HKLM\

SOFTWARE\

Microsoft\

Windows NT\

CurrentVersion\

Print\

Printers

   

The persisted list of printers installed on the print server.

 

DefaultSpoolDirectory

REG_SZ

The directory used by the print server for storing temporary print job data.

HKLM\

SOFTWARE\

Microsoft\

Windows NT\

CurrentVersion\

Print\

Printers\

[Printer Name]

   

Information about the printer named [Printer Name].

 

Share Name

REG_SZ

Persisted PRINTER_INFO member pShareName.

 

Print Processor

REG_SZ

Persisted PRINTER_INFO member pPrintProcessor.

 

Datatype

REG_SZ

Persisted PRINTER_INFO member pDatatype.

 

Parameters

REG_SZ

Persisted PRINTER_INFO member pParameters.

 

ObjectGUID

 

Persisted PRINTER_INFO member pszObjectGUID.

 

Printer Driver

REG_SZ

Persisted PRINTER_INFO member pDriverName.

 

Default _DEVMODE

REG_SZ

Persisted PRINTER_INFO_8 member pDevMode.

 

Priority

REG_DWORD

Persisted PRINTER_INFO member Priority.

 

Default Priority

REG_DWORD

Persisted PRINTER_INFO member DefaultPriority.

 

StartTime

REG_DWORD

Persisted PRINTER_INFO member StartTime.

 

UntilTime

REG_DWORD

Persisted PRINTER_INFO member UntilTime.

 

Separator File

REG_SZ

Persisted PRINTER_INFO member pSepFile.

 

Location

REG_SZ

Persisted PRINTER_INFO member pLocation.

 

Attributes

REG_DWORD

Persisted PRINTER_INFO member Attributes.

 

Security

REG_BINARY

Persisted PRINTER_INFO member pSecurityDescriptor.

 

Port

REG_SZ

Persisted PRINTER_INFO member pPortName.

HKLM\

SOFTWARE\

Microsoft\

Windows NT\

CurrentVersion\

Print\

Providers

   

The list of print providers installed on the print server.

Definitions for placeholders in the preceding table:

  • [Env Name] is an environment name as specified in 2.2.4.4.

  • [Version] is "Version-0", "Version-1", "Version-2", "Version-3", or "Version 4". The numbers 0–4 (0x00000000 – 0x00000004) are described in section 2.2.1.3.1, member cVersion.

  • [Driver Name] is a driver name as specified in section 2.2.4.3.

  • [Processor Name] is a print processor name as specified in section 2.2.4.11.

  • [Monitor Name] is a monitor name as specified in section 2.2.4.8.

  • [Port Name] is a port name as specified in section 2.2.4.10.

  • [Printer Name] is a printer name as specified in section 2.2.4.14.

<291> Section 3.1.1: Locations of Print System Components in the Server File System

Print system management tools such as printmig, brm, and other, third-party applications remotely access files that are loaded or executed by the Windows print server. Windows print server loads or executes files as described in the following table.

File description

Location on print server file system

Printer driver files

%systemroot%\system32\spool\drivers\[env-dir]\[version-dir]

Print processor files

%systemroot%\system32\spool\prtprocs\[env-dir]

Separator files

%systemroot%\system32\spool\sepfiles

Definitions for placeholders in the preceding table:

[env-dir] specifies one of the following strings, depending on the [Env Name] of the driver:

  • "W32X86" for the environment string "Windows NT x86"

  • "IA64" for the environment string "Windows IA64"

  • "WIN40" for the environment string "Windows 4.0"

  • "W32ALPHA" for the environment string "Windows NT Alpha_AXP"

  • "X64" for the environment string "Windows X64"

  • "ARM" for the environment string "Windows ARM"

[version-dir] is one of the strings "0", "1", "2", "3", or "4", matching the DRIVER_INFO member cVersion.

The %systemroot% environment variable is shared by the print server using the share name "admin$".

<292> Section 3.1.3: In Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, print servers can publish printers to the Active Directory, and print clients can search the Active Directory for printers. In Windows NT 3.51 and Windows NT 4.0, print clients and servers do not interact with the directory.

<293> Section 3.1.4: The job named property management methods are supported on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<294> Section 3.1.4: Branch office print remote logging methods are supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<295> Section 3.1.4:

Opnum

Description

37

Only used locally by Windows, never remotely.

38

Only used locally by Windows, never remotely.

43

Only used locally by Windows, never remotely.

44

Only used locally by Windows, never remotely.

45

Only used locally by Windows, never remotely.

49

Only used locally by Windows, never remotely.

50

Only used locally by Windows, never remotely.

54

Only used locally by Windows, never remotely.

55

Only used locally by Windows, never remotely.

57

Only used locally by Windows, never remotely.

63

Only used locally by Windows, never remotely.

64

Only used locally by Windows, never remotely.

68

Only used locally by Windows, never remotely.

74

Only used locally by Windows, never remotely.

75

Only used locally by Windows, never remotely.

76

Only used locally by Windows, never remotely.

83

Only used locally by Windows, never remotely.

90

Only used locally by Windows, never remotely.

91

Only used locally by Windows, never remotely.

92

Only used locally by Windows, never remotely.

93

Only used locally by Windows, never remotely.

94

Only used locally by Windows, never remotely.

95

Only used locally by Windows, never remotely.

98

Only used locally by Windows, never remotely.

99

Only used locally by Windows, never remotely.

100

Only used locally by Windows, never remotely.

101

Only used locally by Windows, never remotely.

102

Only used locally by Windows, never remotely.

103

Only used locally by Windows, never remotely.

104

Only used locally by Windows, never remotely.

105

Only used locally by Windows, never remotely.

106

Only used locally by Windows, never remotely.

107

Only used locally by Windows, never remotely.

108

Only used locally by Windows, never remotely.

109

Only used locally by Windows, never remotely.

114

Only used locally by Windows, never remotely.

115

Only used locally by Windows, never remotely.

<296> Section 3.1.4.1.4: IPv6 names are supported only on Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

<297> Section 3.1.4.1.4: All Windows client implementations derive the RPC binding directly from the STRING_HANDLE binding parameter, and all Windows server implementations perform this validation step.

<298> Section 3.1.4.1.5: All Windows client implementations derive the RPC binding directly from the STRING_HANDLE binding parameter, and all Windows server implementations perform this validation step.

<299> Section 3.1.4.1.8.1: In Windows, when the pDevModeContainer parameter is not declared with the "unique" IDL attribute and is set to a value of NULL, the underlying RPC protocol [MS-RPCE] implementation stops the invalid call and throws an exception before the call reaches the server.

<300> Section 3.1.4.1.8.2: In Windows, when the pDocInfoContainer parameter is not declared with the "unique" IDL attribute and is set to a value of NULL, the underlying RPC protocol [MS-RPCE] implementation stops the invalid call and throws an exception before the call reaches the server.

<301> Section 3.1.4.1.8.7: If the value of the pSecurity member in the SECURITY_CONTAINER structure is NULL, a default security descriptor is used. Security descriptors are specified in [MS-DTYP].

Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2:

The owner in the security descriptor is the local system. The discretionary access control list (DACL) contains access control entries (ACE), which grant the following permissions:

Full control to the administrator's group and to the user who added the printer.

Print permissions to "everyone".

Permissions to control (cancel, pause, resume) the job to the user who submits the job.

Windows NT, Windows 2000, Windows XP, and Windows Server 2003:

The owner in the security descriptor is the user who added the printer. The DACL contains ACEs that grant the following permissions:

Full control to administrators and power users groups.

Print permissions to "everyone".

Permissions to control (cancel, pause, resume) the job to the user who submits the job.

<302> Section 3.1.4.1.8.8: Windows does not use the following members: pUserName, dwBuildNum, dwMajorVersion, dwMinorVersion, and wProcessorArchitecture. pMachineName is used only if the server cannot determine the client machine name using remote procedure call (RPC) functions. The pMachineName member can be NULL.

<303> Section 3.1.4.1.8.9: This validation step can be performed on Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2.

An administrator can configure a print server to not perform this validation step by writing a nonzero value to the "HKLM\System\CurrentControlSet\Control\Print\ARMTestMode" value (REG_DWORD type) in the registry.

<304> Section 3.1.4.1.10: This verification is done by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<305> Section 3.1.4.2.1: Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2 servers can return 0x00004001 for error conditions or if no printers are found matching the requested flags.

<306> Section 3.1.4.2.1: Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2 servers can return 0x00004001 for error conditions or if no printers are found matching the requested flags.

<307> Section 3.1.4.2.1: The Windows server checks that the client user has the SERVER_ACCESS_ENUMERATE permission.

<308> Section 3.1.4.2.1: Windows returns the printers in alphabetical order.

<309> Section 3.1.4.2.1: Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2 servers can return 0x00004001 for error conditions or if no printers are found matching the requested flags.

<310> Section 3.1.4.2.1: Windows uses a policy-defined period (default: 60 minutes) from the first call to RpcAddPrinter with Level set to 0x00000001 to determine whether ERROR_CAN_NOT_COMPLETE is returned.

<311> Section 3.1.4.2.1: In Windows, the enumeration is restricted as follows:

<312> Section 3.1.4.2.3: The Windows server checks that the client user has implementation-specific permission, such as SERVER_ACCESS_ADMINISTER, to install a printer.

<313> Section 3.1.4.2.3: Windows stores the time when the printer is added to the list. When a printer is added, Windows removes any printer on the list that was added more than 70 minutes ago. Windows stores a maximum of 256 printers in the list. If the limit is reached, no new printers are added, and ERROR_OUTOFMEMORY, as specified in [MS-ERREF], is returned.

<314> Section 3.1.4.2.4: In Windows, the server verifies that the printer object has been opened with an access value including the generic DELETE permission, for example, PRINTER_ALL_ACCESS.

<315> Section 3.1.4.2.4: The Windows server verifies that the client user has the PRINTER_ACCESS_ADMINISTER permission.

<316> Section 3.1.4.2.4: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<317> Section 3.1.4.2.5: The Windows server verifies for a printer object that the object has been opened with PRINTER_ACCESS_ADMINISTER permission, and for a server object that the object has been opened with SERVER_ACCESS_ADMINISTER permission.

<318> Section 3.1.4.2.5: In Windows 2000, Windows Millennium Edition, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2, the Windows server can return the ERROR_IO_PENDING error code from the RpcSetPrinter call when the Level member of the PRINTER_CONTAINER pointed to by pPrinterContainer is 0x7 (indicating a directory service operation) and the server implementation uses an asynchronous mechanism to perform the operation.

<319> Section 3.1.4.2.5: This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<320> Section 3.1.4.2.6: In the following Windows versions, this parameter is a handle to a printer or print server object if the value of the Level parameter is 0x00000003.

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<321> Section 3.1.4.2.6: The Windows server verifies for a printer object that the object has been opened with PRINTER_ACCESS_USE permission, and for a server object that the object has been opened with SERVER_ACCESS_ENUMERATE permission.

<322> Section 3.1.4.2.7: In Windows, the detection of the string "ChangeID" is case-insensitive.

<323> Section 3.1.4.2.7: In Windows, the data identified by pValueName for printer objects is stored in the registry under the key "PrinterDriverData"; therefore, RpcGetPrinterDataEx is used with pKeyName pointing to the string "PrinterDriverData" to access the identical set of values.

<324> Section 3.1.4.2.8: In Windows, the detection of the string "ChangeID" is case-insensitive.

<325> Section 3.1.4.2.8: In Windows, if hPrinter is a server object handle, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

If hPrinter is a printer object handle, the server checks that the client user has PRINTER_ACCESS_ADMINISTER permission. In Windows 8.1 and Windows Server 2012 R2, the server checks that the client user has either PRINTER_ACCESS_ADMINISTER or PRINTER_ACCESS_MANAGE LIMITED permission.

<326> Section 3.1.4.2.8: In Windows the data identified by pValueName for printer objects is stored in the registry under the key "PrinterDriverData"; therefore, RpcSetPrinterDataEx is used with pKeyName pointing to the string "PrinterDriverData" to access the identical set of values.

For server objects, there is no aliasing of value and key because the server ignores the pKeyName parameter of the RpcSetPrinterDataEx method when called with a handle to a server object.

<327> Section 3.1.4.2.11: In Windows, the underlying RPC protocol [MS-RPCE] implementation stops the invalid call and throws an exception before the call reaches the server.

<328> Section 3.1.4.2.11: In Windows, the underlying RPC protocol [MS-RPCE] implementation stops the invalid call and throws an exception before the call reaches the server.

<329> Section 3.1.4.2.11: When creating print jobs in EMFSPOOL format [MS-EMFSPOOL], Windows print clients use the UNIVERSAL_FONT_ID structures returned by RpcPlayGdiScriptOnPrinterIC to determine if the server has copies of specific fonts, and if so, the client does not embed those fonts in the EMFSPOOL data sent to the print server.

<330> Section 3.1.4.2.14: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<331> Section 3.1.4.2.15: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<332> Section 3.1.4.2.15: In Windows, the server checks that the client user has implementation-specific permissions to install a printer, typically SERVER_ACCESS_ADMINISTER.

<333> Section 3.1.4.2.15: Windows stores the time when the printer is added to the list. When a printer is added, Windows removes any printer on the list that was added more than a policy-defined period (default 70 minutes) ago. Windows stores a maximum of 256 printers in the list. If the limit is reached, no new printers are added, and ERROR_OUTOFMEMORY is returned, as specified in [MS-ERREF].

<334> Section 3.1.4.2.15: Windows fails this call if, at the time of this call, the server does not have installed all the following: the printer driver, the port, and the print processor.

<335> Section 3.1.4.2.16: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<336> Section 3.1.4.2.16: In Windows, for printer objects, the data identified by pValueName is stored in the registry under the key named "PrinterDriverData"; therefore, RpcEnumPrinterDataEx is used with pKeyName pointing to the string "PrinterDriverData" to access the identical set of values.

<337> Section 3.1.4.2.17: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<338> Section 3.1.4.2.17: In Windows, the detection of the string "ChangeID" is case-insensitive.

<339> Section 3.1.4.2.17: In Windows, the server checks that the client user has PRINTER_ACCESS_ADMINISTER permission.

<340> Section 3.1.4.2.17: In Windows, the data identified by pValueName for printer objects is stored in the registry under the key named "PrinterDriverData"; therefore, RpcDeletePrinterDataEx is used with pKeyName pointing to the string "PrinterDriverData" to access the identical set of values.

<341> Section 3.1.4.2.18: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<342> Section 3.1.4.2.18: In Windows, the detection of the string "ChangeID" is case-insensitive.

<343> Section 3.1.4.2.18: In Windows, if hPrinter is a server object handle, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission. If hPrinter is a printer object handle, the server checks that the client user has PRINTER_ACCESS_ADMINISTER permission.

<344> Section 3.1.4.2.19: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<345> Section 3.1.4.2.19: This verification is done by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<346> Section 3.1.4.2.19: This verification is done by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<347> Section 3.1.4.2.20: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<348> Section 3.1.4.2.21: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<349> Section 3.1.4.2.22: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<350> Section 3.1.4.2.22: In Windows, the detection of the string "ChangeID" is case-insensitive.

<351> Section 3.1.4.2.22: In Windows, the server checks that the client user has the PRINTER_ACCESS_ADMINISTER permission.

<352> Section 3.1.4.2.23: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<353> Section 3.1.4.2.23: In Windows, the server checks that the client user has the PRINTER_ACCESS_ADMINISTER permission.

<354> Section 3.1.4.2.24: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<355> Section 3.1.4.2.24: In Windows, the name of the print provider file is used and is stored in the Windows registry. If pProvider is NULL, the Windows operating system uses Win32spl.dll as the name of the executable object.

Print providers are a Windows implementation detail and are not required by this protocol. Windows print clients do not use a non-NULL pProvider parameter remotely, but third-party software can do so. As there is no protocol method to enumerate print providers remotely, a client would need specific knowledge about the internal implementation of the server to specify a meaningful print provider name.

<356> Section 3.1.4.2.24: In Windows, the server checks that the client user has the SERVER_ACCESS_ADMINISTER permission.

<357> Section 3.1.4.2.25: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<358> Section 3.1.4.2.25: The Windows server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<359> Section 3.1.4.2.26: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<360> Section 3.1.4.2.27: This feature is supported on the following Windows versions:

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<361> Section 3.1.4.2.27: Port monitors shipping with Windows support the following actions only for TCPMON and WSDMON, and only if connected to a printer capable of bidirectional communication: BIDI_ACTION_ENUM_SCHEMA, BIDI_ACTION_GET, and BIDI_ACTION_GET_ALL. All other Port Monitors shipping with Windows do not support RpcSendRecvBidiData.

<362> Section 3.1.4.2.27: The Windows system port monitors do not support any additional action strings.

<363> Section 3.1.4.2.27: TCPMON and WSDMON check that the port or printer object has been opened with an access value that includes the PRINTER_ACCESS_USE bit.

<364> Section 3.1.4.3.1: In Windows, the command codes JOB_CONTROL_CANCEL (0x00000003) and JOB_CONTROL_DELETE (0x00000005) are equivalent. The redundancy is caused by historical reasons, but both must be supported.

<365> Section 3.1.4.3.1: In Windows, the command codes JOB_CONTROL_CANCEL (0x00000003) and JOB_CONTROL_DELETE (0x00000005) are equivalent. The redundancy is caused by historical reasons, but both must be supported.

<366> Section 3.1.4.3.1: For JOB_CONTROL_CANCEL and JOB_CONTROL_DELETE requests, the server verifies that the client has generic DELETE permission. For all other requests, the server verifies that the client has JOB_ACCESS_ADMINISTER permission for the job. For a job position change request, the server additionally verifies that the handle is a printer or server object and has been opened with PRINTER_ACCESS_ADMINISTER requested.

<367> Section 3.1.4.4.1: The Windows server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<368> Section 3.1.4.4.1: These validation steps are performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<369> Section 3.1.4.4.1: These validation steps are performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<370> Section 3.1.4.4.1: When a print client adds a printer driver to a Windows print server using RpcAddPrinterDriver, the print server sets the Boolean values representing each of the printer driver's attributes to a Boolean value of FALSE, indicating that the printer driver does not have any of these attributes.

<371> Section 3.1.4.4.2: In Windows, if the string contains "All" or "AllCluster", all printer drivers for all environments must be enumerated.

<372> Section 3.1.4.4.2: The Windows server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<373> Section 3.1.4.4.2: This validation step is performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<374> Section 3.1.4.4.2: This validation step is performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<375> Section 3.1.4.4.3: Windows servers complete the request only if the specified environment is "Windows 4.0" and pszzPreviousNames contains the name of a printer driver that is installed on the server for the "Windows 4.0" environment; otherwise, the server returns ERROR_UNKNOWN_PRINTER_DRIVER. For other environments, the clients can use RpcGetPrinterDriver2 when the server supports this method.

<376> Section 3.1.4.4.4: The Windows server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<377> Section 3.1.4.4.5: In Windows, the server checks that the client user has the SERVER_ACCESS_ADMINISTER permission.

<378> Section 3.1.4.4.6: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<379> Section 3.1.4.4.6: The following table shows the unsigned 32-bit major operating system version number that is used by Windows clients and servers.

Major version

Meaning

0x00000004

The operating system is Windows 95, Windows NT 4.0, Windows 98, or Windows Millennium Edition.

0x00000005

The operating system is Windows 2000, Windows XP, Windows Server 2003, or Windows Server 2003 R2.

0x00000006

The operating system is Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, or Windows Server 2012 R2.

<380> Section 3.1.4.4.6: The following table shows the unsigned 32-bit minor operating system version number that is used by Windows Server 2008 clients and servers.

Minor version

Meaning

0x00000000

The operating system is Windows 95, Windows NT 4.0, Windows 2000, Windows Vista, or Windows Server 2008.

0x00000001

The operating system is Windows XP, Windows 7, or Windows Server 2008 R2.

0x00000002

The operating system is Windows XP Professional x64 Edition, Windows Server 2003, Windows Server 2003 R2, Windows 8, or Windows Server 2012.

0x00000003

The operating system is Windows 8.1 or Windows Server 2012 R2.

0x0000000A

The operating system is Windows 98.

0x0000005A

The operating system is Windows Millennium Edition.

<381> Section 3.1.4.4.6: pdwServerMaxVersion and pdwServerMinVersion are ignored by the Windows print server, and therefore no values are returned. However, the caller is expected to submit valid pointer values for pdwServerMaxVersion and pdwServerMinVersion in order to ensure that the call can be correctly received by the server.


Note  If both dwClientMajorVersion and dwClientMinorVersion are set to 0xFFFFFFFF, the print server will return printer driver information for the printer driver version matching the operating system version on which the print server is running.

<382> Section 3.1.4.4.6: This validation step is performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<383> Section 3.1.4.4.7: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<384> Section 3.1.4.4.7: Windows sets this parameter to one of the following values.

Value Meaning

0x00000001

Windows NT 3.51 user-mode printer drivers

0x00000002

Windows NT 4.0 user-mode printer drivers

0x00000003

Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 user-mode printer drivers.

0x00000004

Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 user-mode printer drivers.

<385> Section 3.1.4.4.7: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER (section 2.2.3.1) permission.

<386> Section 3.1.4.4.8: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<387> Section 3.1.4.4.8: Only in Windows XP and Windows Server 2003, as described in 3.1.1, the Windows server maintains a warned list of printer drivers. Drivers in this list can only be added to the server if the APD_INSTALL_WARNED_DRIVER bit is set. If a client attempts to add a printer driver that is in this list and the bit is not set, the server returns the ERROR_PRINTER_DRIVER_WARNED error code. If a client attempts to add a printer driver that is in this list and the bit is set, the server attempts to add the printer driver as described in 3.1.4.4.8. On all other versions of Windows, this list does not exist, and the flag is ignored.

On Windows XP and Windows Server 2003, the Windows client detects the ERROR_PRINTER_DRIVER_WARNED error code returned from the RpcAddPrinterDriverEx method and asks the user whether to continue adding the printer driver. If the user continues, the client sets the APD_INSTALL_WARNED_DRIVER bit in the dwFileCopyFlags field and calls the method again. On Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2, the Windows client detects the ERROR_PRINTER_DRIVER_WARNED error code and informs the user that the driver could not be installed. Clients with these versions of the operating system do not use the APD_INSTALL_WARNED_DRIVER flag.

<388> Section 3.1.4.4.8: In Windows, if this bit is set, ERROR_PRINTER_DRIVER_BLOCKED is returned. if this bit is not set, ERROR_UNKNOWN_PRINTER_DRIVER is returned.

<389> Section 3.1.4.4.8: In Windows, the server checks that the client user has the SERVER_ACCESS_ADMINISTER permission.

<390> Section 3.1.4.4.8: These validation steps are performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<391> Section 3.1.4.4.8: These validation steps are performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<392> Section 3.1.4.4.8: When a print client adds a printer driver to a

<393> Section 3.1.4.4.9: This method is used remotely only if the client is at least Windows 7 operating system and the server is at least Windows Server 2008 R2 operating system.

<394> Section 3.1.4.4.9: All Windows versions: The IDs are the GUIDString representations of 128-bit GUIDs.

<395> Section 3.1.4.4.10: This method is used remotely only if the client is at least Windows 7 operating system and the server is at least Windows Server 2008 R2 operating system.

<396> Section 3.1.4.4.10: All Windows versions: The pszLanguage string is specified using the identifiers specified for the Locale Name in [MSDN-MUI].

<397> Section 3.1.4.4.10: All Windows versions: pszDriverPackageCab points to a string containing the path name of a cabinet file for the driver package. For more information, see [MSDN-CAB].

<398> Section 3.1.4.4.10: All Windows versions: If the parameter is zero, Windows fills in the variable pointed to by pcchRequiredSize with the valid size.

<399> Section 3.1.4.5.1: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<400> Section 3.1.4.5.2: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<401> Section 3.1.4.5.4: The Windows server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<402> Section 3.1.4.6.1: The Windows server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<403> Section 3.1.4.6.2: The RpcDeletePort method is only called over the wire by Windows NT 4.0 operating system clients.

<404> Section 3.1.4.6.2: Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 check that the client user has SERVER_ACCESS_ENUMERATE permission. All other Windows versions check that the client user has SERVER_ACCESS_ADMINISTER permission.

<405> Section 3.1.4.6.3: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<406> Section 3.1.4.6.3: In Windows, the server checks that the client user has the SERVER_ACCESS_ADMINISTER permission.

<407> Section 3.1.4.6.4: This feature is supported on the following Windows versions:

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<408> Section 3.1.4.6.4: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<409> Section 3.1.4.6.5: In Windows, the actions and data retrieval supported by RpcXcvData are performed by executing the XcvDataPort method on the port monitor module referenced by the input handle. For more information about monitor module methods, see section 3.1.4.11. This feature is supported on the following Windows versions:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<410> Section 3.1.4.6.5: For Windows–specific behavior, see section 3.1.4.11.

<411> Section 3.1.4.6.5: These validation steps are performed on the following Windows versions:

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<412> Section 3.1.4.7.1: In Windows, the server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<413> Section 3.1.4.7.1: On Windows servers, the monitors supporting these methods are LOCALMON, WSDMON, TCPMON, and LPRMON.

<414> Section 3.1.4.7.2: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<415> Section 3.1.4.7.3: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<416> Section 3.1.4.8.1: This validation step is performed on the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<417> Section 3.1.4.8.1: In Windows, the server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<418> Section 3.1.4.8.2: The Windows server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<419> Section 3.1.4.8.3: In Windows, the server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<420> Section 3.1.4.8.4: The Windows server checks that the client user has SERVER_ACCESS_ADMINISTER permission.

<421> Section 3.1.4.8.5: In Windows, the server checks that the client user has SERVER_ACCESS_ENUMERATE permission.

<422> Section 3.1.4.9.6: For a job object, the Windows server verifies that the calling client has been granted an access value that includes the JOB_READ permission (section 2.2.3.1). For a port object, the Windows server verifies that the calling client has, for the currently printing job on that port, an access value that includes the JOB_READ permission.

<423> Section 3.1.4.9.6: The Local Port monitor in Windows supports reading from COM ports.

<424> Section 3.1.4.9.8: This feature is supported on the following Windows version:

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<425> Section 3.1.4.10.1: Windows waits for up to 600 seconds

<426> Section 3.1.4.10.2: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<427> Section 3.1.4.10.3: This method is called only by Windows NT 3.5 clients.

<428> Section 3.1.4.10.3: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<429> Section 3.1.4.10.3: Windows clients generate an arbitrary unique value for each known printer.

<430> Section 3.1.4.10.4: This method is called only by Windows NT 3.5 clients.

<431> Section 3.1.4.10.4: This feature is supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<432> Section 3.1.4.10.4: Windows clients generate an arbitrary unique value for each known printer.

<433> Section 3.1.4.10.5: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<434> Section 3.1.4.10.5: Windows clients pass in monotonically increasing values for the dwColor parameter in calls to this method. Windows servers use these values in calls to RpcRouterReplyPrinterEx (section 3.2.4.1.4). Clients determine the most recent notification data returned by the server by comparing the values of this parameter. Clients discard the notification data received in a call to RpcRouterReplyPrinterEx if the dwColor value is different from the value that was received most recently from RpcRouterRefreshPrinterChangeNotification.

Windows uses this mechanism because of the possible ordering reversal of calls caused by network latency.

<435> Section 3.1.4.11: The Windows port monitors support these functions in the following cases:

  • In Windows NT 3.5 and Windows NT 4.0, LOCALMON supports AddPortEx, AddPort, ConfigurePort, and DeletePort.

  • In the following Windows versions, LOCALMON supports only AddPortEx, and TCPMON supports AddPortEx, AddPort, ConfigurePort, and DeletePort.

    • Windows 2000

    • Windows XP

    • Windows Server 2003

    • Windows Vista

    • Windows Server 2008

    • Windows 7

    • Windows Server 2008 R2

    • Windows 8

    • Windows Server 2012

    • Windows 8.1

    • Windows Server 2012 R2

<436> Section 3.1.4.11: The Windows operating system provides port monitor modules in the form of executable dynamic-link libraries (DLLs). Examples are:

  • localmon.dll, which manages local serial ("COM") and parallel ("LPT") ports on a Windows machine (3.1.4.11.1).

  • lprmon.dll, which allows a Windows print server to send print jobs to machines that support Unix print-server functions (see the following section).

  • tcpmon.dll, which manages standard TCP/IP ports on a Windows machine.

  • wsdmon.dll, which manages Web Services for Devices (WSD)ports (Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, and Windows Server 2012 R2 only).

In the following versions of Windows, all the functions that LOCALMON exports were incorporated into localspl.dll.

  • Windows 2000

  • Windows Millennium Edition

  • Windows XP

  • Windows Server 2003

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

Another change in those versions of Windows is that port monitors are divided into two DLLs, a port monitor server DLL and a port monitor user interface (UI) DLL.

<437> Section 3.1.4.11.1: For the following versions of Windows, LOCALMON is packaged inside another executable component called localspl.dll; the presentation is captured in a separate monitor module. The user interface module corresponding to LOCALMON is called localui.

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<438> Section 3.1.4.11.2: The LPRMONmonitor module is supported in the following versions of Windows. The user interface module corresponding to LPRMON is called lprmonui.

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<439> Section 3.1.4.11.3: The TCPMONmonitor module is supported for the following versions of Windows. The user interface module corresponding to TCPMON is called tcpmonui.

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<440> Section 3.1.4.11.3: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<441> Section 3.1.4.11.3: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<442> Section 3.1.4.11.3: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<443> Section 3.1.4.11.3: This feature is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<444> Section 3.1.4.11.4: This monitor module is supported on the following Windows versions:

  • Windows Vista

  • Windows Server 2008

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<445> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<446> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<447> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<448> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<449> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<450> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<451> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows Vista SP1

  • Windows Server 2008

<452> Section 3.1.4.11.4: This feature is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<453> Section 3.1.4.12.1: The RpcGetJobNamedPropertyValue method is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<454> Section 3.1.4.12.2: The RpcSetJobNamedProperty method is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<455> Section 3.1.4.12.3: The RpcDeleteJobNamedProperty method is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<456> Section 3.1.4.12.4: The RpcEnumJobNamedProperties method is supported by the following Windows versions:

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<457> Section 3.1.4.13.1: The RpcLogJobInfoForBranchOffice (section 3.1.4.13.1) method is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<458> Section 3.2.1: Branch office print remote logging is supported on the following Windows versions:

  • Windows 8.1

  • Windows Server 2012 R2

<459> Section 3.2.1: In Windows, this data element is stored in the print spooler.

<460> Section 3.2.4: The Windows implementation ignores errors and passes them back to the invoker.

<461> Section 3.2.4.1.1: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<462> Section 3.2.4.1.1: The Windows server calls RpcReplyOpenPrinter during the processing of a call to RpcRemoteFindFirstPrinterChangeNotificationEx. The return value indicates the success of that processing.

<463> Section 3.2.4.1.2: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<464> Section 3.2.4.1.3: This feature is supported on the following Windows versions:

  • Windows NT 3.5

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<465> Section 3.2.4.1.4: This feature is supported on the following Windows versions:

  • Windows NT 3.51

  • Windows NT 4.0

  • Windows 2000

  • Windows XP

  • Windows Server 2003

  • Windows XP SP1

  • Windows Vista

  • Windows Server 2008

  • Windows Vista SP1

  • Windows 7

  • Windows Server 2008 R2

  • Windows 8

  • Windows Server 2012

  • Windows 8.1

  • Windows Server 2012 R2

<466> Section 3.2.4.2.3: The Windows system will select a number of jobs to be 0xFFFFFFFF to obtain the full list in a single operation.

<467> Section 3.2.4.2.5: Windows clients only enumerate their shared printers if no directory services are available in the domain.

<468> Section 3.2.4.2.5: Windows clients enumerate their shared printers up to a default of three print servers and a default of two workstations and one additional server per 32 print servers found. The values can be changed via policy settings.

<469> Section 3.2.4.2.6: A Windows client uses RpcOpenPrinterEx to open a handle for the server object. Then the Windows client uses RpcGetPrinterData with the value names "Architecture", "MajorVersion", and "OSVersion" to obtain information about the server's environment. This information is used to select an appropriate printer driver. The client subsequently closes the server object handle using RpcClosePrinter. The Windows-based client also uses RpcEnumPorts to populate a list with ports available on the server from which the end-user can select the port for the new printer. The Windows-based client uses RpcEnumMonitors to determine a port monitor for the new printer. The Windows-based client uses RpcGetPrinterDriverDirectory to determine the destination directory in case the new printer requires that a printer driver be installed.

<470> Section 5.2: Windows print server follows a security model in which the print server, print queues, and print job are securable resources. Each of these resources has a security descriptor that is associated with it. The SD contains the security information that is associated with a resource on the print server. The print server checks the client access to resources by comparing the security information that is associated with the caller against the SD of the resource. SDs are specified by the SECURITY_DESCRIPTOR structure ([MS-DTYP] section 2.4.6).

Each RPC client has associated with it an access token, which contains the security identifier (SID) of the user making the RPC call. The SD identifies the owner of the printing resource and contains a discretionary access control list (DACL). The DACL contains access control entries (ACEs), which specify the SID of a user or group of users, and whether access rights are to be allowed, denied, or audited. For resources on a print server, the ACEs specify operations including: print, manage printers, and manage documents in a print queue.

The SD that is associated with the print server or print queue controls the creation of the context handle (PRINTER_HANDLE section 2.2.1.1.4) and the outcome of operations that use the handle. These operations range from printing and job management to listening for notifications.

The SDs for a Windows-based print server are used to control the creation and deletion of print queues on the server; the installation of print system components, including printer drivers, print processors, and port monitors; and the enumeration of resources on the server. A server SD is not write-accessible to callers. In addition to being used to control callers' access to resources, the server SD is also used as the "parent" in the creation of the print queue'sSD.

Note: The SD of the Windows-based print server is different from the SD that is applied on the named pipe of the spool. The SD of the spool's named pipe controls the RPC client's access to make RPC calls to the print server. The SD of the Windows-based print server is used to control the caller's permissions to perform various operations on the print server.

The SD of the print queue controls the setting of print queue properties, such as the port and printer driver that are used for printing; the rendering and device settings; or the sharing or security parameters. The printer SD allows auditing operations such as printing; managing printers and documents; reading and changing permissions; and taking ownership.

Each print job has an associated SD, which is created by using the SD of the print queue as parent. The user who submitted the document for printing is the owner of the print job and has permission to manage the print job during its lifetime.

When a PRINTER_HANDLE is opened for a specific printing resource, the caller must specify the access that is needed for subsequent operations, including printer or server administration; printing on a printer or print server; and reading, writing, or administrating a print job. If the caller has the specified permissions, the print handle is created and can be used for subsequent calls.

In addition to handle-based operations, the SD is used for access checks when enumerations, printer driver package installation, or other non-handle-based operations are performed.

 
Show:
© 2014 Microsoft