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,@TTFSUB.GPD,@LOCALE.GPD,@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]
[email protected]
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 <[email protected]>
Cc: [email protected]; MSSolve Case Email <[email protected]>
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 <[email protected]>
Cc: [email protected]; MSSolve Case Email <[email protected]>
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' <[email protected]>
Cc: [email protected]
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:[email protected]] 
Sent: Monday, October 24, 2016 11:36 PM
To: Interoperability Documentation Help <[email protected]>
Cc: [email protected]
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                             [email protected]
www.samba.org


_______________________________________________
cifs-protocol mailing list
[email protected]
https://lists.samba.org/mailman/listinfo/cifs-protocol

Reply via email to