[cifs-protocol] [REG:116102514847712]: [MS-PAR] Q 2/2 3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64); Where does someone find a copy of CorePrinterDrivers

Edgar Olougouna edgaro at microsoft.com
Tue Nov 22 06:30:19 UTC 2016


Andreas,
A core driver needs to ship as part of a driver package that has a dependency upon it. Based on details in the following references (please read through below), the list of available core drivers on the print server would have been provisioned as a result of driver packages being installed on the server.

SetupGetInfDriverStoreLocation function
https://msdn.microsoft.com/en-us/library/windows/hardware/ff552194(v=vs.85).aspx
The driver store is a trusted location of inbox and third-party driver packages. This means that before a driver can be installed it must first be injected into the driver store, this process is called staging. The driver store is located under C:\Windows\System32\DriverStore\FileRepository. Windows keeps a copy of every driver you install in a place called the Driver Store. It is located in "C:\Windows\System32\DriverStore\FileRepository".

Unidrv.dll and Pscript5.dll can be found in ntprint.inf that is pre-installed on the OS.

Package-Aware Print Drivers
https://msdn.microsoft.com/en-us/windows/hardware/drivers/print/package-aware-print-drivers

*	If the files in the driver package are unique and are not listed in other print driver packages, use the PackageAware keyword in the INF.
*	If the files in the driver package are shared with files in other print driver packages:
o	Move the shared files into a separate core driver.
o	Use the PackageAware keyword and the CoreDriverDependencies keyword to refer to this separate core driver. This is necessary to avoid file version conflicts during various remote installation scenarios.

Package-Aware Print Drivers that Share Files
https://msdn.microsoft.com/en-us/windows/hardware/drivers/print/package-aware-print-drivers-that-share-files

When more than one print driver package shares driver files, the shared files must be isolated into a core driver. For example, Unidrv is a collection of files that many print drivers use, so Unidrv is a core driver.

In Windows Vista, the reference to Ntprint.inf is no longer necessary because Unidrv is packaged as a core driver and is referred to by its globally unique identifier (GUID). When using core drivers, do not use the DataSection keyword, but instead refer to this section from the CoreDriverSections keyword.
Core print package files are listed in the following table.

Core File	GUID
UNIDRV	{D20EA372-DD35-4950-9ED8-A6335AFE79F0}
PSCRIPT	{D20EA372-DD35-4950-9ED8-A6335AFE79F1}
PCLXL	{D20EA372-DD35-4950-9ED8-A6335AFE79F2}
PLOTTER	{D20EA372-DD35-4950-9ED8-A6335AFE79F4}
XPSDRV	{D20EA372-DD35-4950-9ED8-A6335AFE79F5}

More than one core driver section can be referenced; for example:
CoreDriverSections="{GUID1}, SectionName1, SectionName2", "{GUID2}, SectionName3"

Writing Core Drivers
https://msdn.microsoft.com/en-us/windows/hardware/drivers/print/writing-core-drivers

 For example, in Ntprint.inf, the Unidrv core driver file definition is shown in the following example:
Microsoft.NTx86]
"{D20EA372-DD35-4950-9ED8-A6335AFE79F0}" =  
  {D20EA372-DD35-4950-9ED8-A6335AFE79F0}, 
  {D20EA372-DD35-4950-9ED8-A6335AFE79F0}
[{D20EA372-DD35-4950-9ED8-A6335AFE79F0}]
CopyFiles=UNIDRV,PJLMON.DLL, at TTFSUB.GPD, at LOCALE.GPD, at MSXPSINC.GPD
[UNIDRV]
; Unidrv files and pjlmon sections follow...

With this definition, a print driver INF file can refer to core driver files by using the CoreDriverSections keyword as shown in the previous sample.
It is important to note that a core driver must retain compatibility with earlier versions. Because more than one driver may use the core driver, it must continue to work with existing drivers that depend on it when it is updated. The core driver must ship as part of the driver package.

Using Core Drivers
https://msdn.microsoft.com/windows/hardware/drivers/print/using-core-drivers
Print driver writers can use core drivers that they have written by listing the core model GUID in the model section of the INF, and using the PackageAware and CoreDriverSections keywords.
. . .
[DriverInstall_Vista]
CopyFiles=@file.dll
CoreDriverSections="{D20EA372-DD35-4950-9ED8-A6335AFE79F0},UNIDRV.OEM,UNIDRV_DATA,TTFSUB.OEM", "{GUID1},MANUFACTURER_CORE"
The package install section must also be added, and list all core driver dependencies:
[PrinterPackageInstallation.x86]
PackageAware=TRUE
CoreDriverDependencies={D20EA372-DD35-4950-9ED8-A6335AFE79F0},{GUID1}

Thanks,
Edgar

-----Original Message-----
From: Edgar Olougouna 
Sent: Tuesday, October 25, 2016 11:33 AM
To: Andreas Schneider <asn at samba.org>
Cc: cifs-protocol at lists.samba.org; MSSolve Case Email <casemail at microsoft.com>
Subject: RE: [REG:116102514847712]: [MS-PAR] Q 2/2 3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64); Where does someone find a copy of CorePrinterDrivers

Andreas,
I will be looking in this as well and will follow-up.

Thanks,
Edgar

-----Original Message-----
From: Bryan Burgin 
Sent: Tuesday, October 25, 2016 10:06 AM
To: Andreas Schneider <asn at samba.org>
Cc: cifs-protocol at lists.samba.org; MSSolve Case Email <casemail at microsoft.com>
Subject: [REG:116102514847712]: [MS-PAR] Q 2/2 3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64); Where does someone find a copy of CorePrinterDrivers

[+dochelp on bcc]
[+casemail]
[Changed title to reflect single issue...was "[MS-PAR] Some questions Printer Driver handling"]

Use this thread for the second of your two issues:

116102514847712: [MS-PAR] Q 2/2 3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64); Where does someone find a copy of CorePrinterDrivers

3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64)

{
    The protocol assumes that we have a copy of the CorePrinterDrivers if the
    client requests them. Where does someone find a copy of those drivers so
    he can put it to the driver store of his 3rd-party implementation?
}

An engineer from the protocols team will contact you soon on each of these.

Bryan

-----Original Message-----
From: Bryan Burgin 
Sent: Tuesday, October 25, 2016 8:01 AM
To: 'Andreas Schneider' <asn at samba.org>
Cc: cifs-protocol at lists.samba.org
Subject: RE: [MS-PAR] Some questions Printer Driver handling

[-dochelp]

Hi Andreas,

Do not reply to THIS e-mail.  I will make two cases for this issue and start two new threads; one each for each of your two issues.

The cases I made are:

116102514847681: [MS-PAR] Q 1/2 3.1.4.2.7 RpcAsyncInstallPrinterDriverFromPackage; performing additional validation steps
116102514847712: [MS-PAR] Q 2/2 3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64); Where does someone find a copy of CorePrinterDrivers

An engineer from the protocols team will contact you soon on each of these.

Bryan

-----Original Message-----
From: Andreas Schneider [mailto:asn at samba.org] 
Sent: Monday, October 24, 2016 11:36 PM
To: Interoperability Documentation Help <dochelp at microsoft.com>
Cc: cifs-protocol at lists.samba.org
Subject: [MS-PAR] Some questions Printer Driver handling

Hello Dochelp!


I have some questions about printer driver handling in [MS-PAR]

3.1.4.2.7 RpcAsyncInstallPrinterDriverFromPackage

The print server SHOULD perform the following additional validation steps:

{
    This secion describes some steps but it lacks serveral details:

    Which sections of the printer-driver control file (inf-file, passed by
    pzInfPath) need to be inspected?

    If the driver is a v4 driver, which section of the Manifest (additional
    inf-File) need to be inspected?

    Also package-aware drivers ship with a Microsoft Catalog file
    (driver.cat) for each printer-driver control (inf-File). Does the Print
    server need to verify the catalog file and make sure the checksums in the
    Catalog files match to the files?

    It also isn't described at which step the Print Driver Package (cabinet
    file) needs to be generated.
}


3.1.4.2.9 RpcAsyncGetCorePrinterDrivers (Opnum 64)

{
    The protocol assumes that we have a copy of the CorePrinterDrivers if the
    client requests them. Where does someone find a copy of those drivers so
    he can put it to the driver store of his 3rd-party implementation?
}


Can you please clarify?


Thank for your help!


Best regards,


Andreas

-- 
Andreas Schneider                   GPG-ID: CC014E3D
Samba Team                             asn at samba.org
www.samba.org




More information about the cifs-protocol mailing list