mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 01:40:36 +00:00
- Add driver info for psdk, update local DC and fixed eng functions so that it can support user mode print drivers.
svn path=/trunk/; revision=36855
This commit is contained in:
parent
a38d530792
commit
328f8323ab
4 changed files with 199 additions and 12 deletions
|
@ -79,6 +79,29 @@ typedef struct tagENHMETAFILE {
|
||||||
INT planes;
|
INT planes;
|
||||||
} ENHMETAFILE,*PENHMETAFILE;
|
} ENHMETAFILE,*PENHMETAFILE;
|
||||||
|
|
||||||
|
|
||||||
|
#define PDEV_UMPD_ID 0xFEDCBA98
|
||||||
|
// UMPDEV flags
|
||||||
|
#define UMPDEV_NO_ESCAPE 0x0002
|
||||||
|
#define UMPDEV_SUPPORT_ESCAPE 0x0004
|
||||||
|
typedef struct _UMPDEV
|
||||||
|
{
|
||||||
|
DWORD Sig; // Init with PDEV_UMPD_ID
|
||||||
|
struct _UMPDEV *pumpdNext;
|
||||||
|
PDRIVER_INFO_5W pdi5Info;
|
||||||
|
HMODULE hModule;
|
||||||
|
DWORD dwFlags;
|
||||||
|
DWORD dwDriverAttributes;
|
||||||
|
DWORD dwConfigVersion; // Number of times the configuration
|
||||||
|
// file for this driver has been upgraded
|
||||||
|
// or downgraded since the last spooler restart.
|
||||||
|
DWORD dwDriverCount; // After init should be 2
|
||||||
|
DWORD WOW64_UMPDev;
|
||||||
|
DWORD WOW64_hMod;
|
||||||
|
WCHAR String[188];
|
||||||
|
} UMPDEV, *PUMPDEV;
|
||||||
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
|
|
|
@ -154,16 +154,15 @@ LPWSTR STDCALL
|
||||||
EngGetDriverName(HDEV hdev)
|
EngGetDriverName(HDEV hdev)
|
||||||
{
|
{
|
||||||
// DHPDEV from NtGdiGetDhpdev must be from print driver.
|
// DHPDEV from NtGdiGetDhpdev must be from print driver.
|
||||||
PDRIVER_INFO_2W pDrvInfo2 = (PDRIVER_INFO_2W)NtGdiGetDhpdev(hdev);
|
PUMPDEV pPDev = (PUMPDEV)NtGdiGetDhpdev(hdev);
|
||||||
|
|
||||||
if (!pDrvInfo2) return NULL;
|
if (!pPDev) return NULL;
|
||||||
|
|
||||||
if (pDrvInfo2->cVersion != 0xFEDCBA98 ) // Init mask for ver 2+
|
if (pPDev->Sig != PDEV_UMPD_ID)
|
||||||
{
|
{
|
||||||
PDRIVER_INFO_1W pDrvInfo1 = (PDRIVER_INFO_1W) pDrvInfo2;
|
pPDev = (PUMPDEV)pPDev->Sig;
|
||||||
return pDrvInfo1->pName;
|
|
||||||
}
|
}
|
||||||
return pDrvInfo2->pDriverPath;
|
return pPDev->pdi5Info->pDriverPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -172,16 +171,15 @@ EngGetDriverName(HDEV hdev)
|
||||||
LPWSTR STDCALL
|
LPWSTR STDCALL
|
||||||
EngGetPrinterDataFileName(HDEV hdev)
|
EngGetPrinterDataFileName(HDEV hdev)
|
||||||
{
|
{
|
||||||
PDRIVER_INFO_2W pDrvInfo2 = (PDRIVER_INFO_2W)NtGdiGetDhpdev(hdev);
|
PUMPDEV pPDev = (PUMPDEV)NtGdiGetDhpdev(hdev);
|
||||||
|
|
||||||
if (!pDrvInfo2) return NULL;
|
if (!pPDev) return NULL;
|
||||||
|
|
||||||
if (pDrvInfo2->cVersion != 0xFEDCBA98 )
|
if (pPDev->Sig != PDEV_UMPD_ID)
|
||||||
{
|
{
|
||||||
PDRIVER_INFO_1W pDrvInfo1 = (PDRIVER_INFO_1W) pDrvInfo2;
|
pPDev = (PUMPDEV)pPDev->Sig;
|
||||||
return pDrvInfo1->pName;
|
|
||||||
}
|
}
|
||||||
return pDrvInfo2->pDataFile;
|
return pPDev->pdi5Info->pDataFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -374,6 +374,162 @@ typedef struct _DRIVER_INFO_3W {
|
||||||
LPWSTR pMonitorName;
|
LPWSTR pMonitorName;
|
||||||
LPWSTR pDefaultDataType;
|
LPWSTR pDefaultDataType;
|
||||||
} DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
|
} DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
|
||||||
|
typedef struct _DRIVER_INFO_4A {
|
||||||
|
DWORD cVersion; // SDK examples:
|
||||||
|
LPSTR pName; // QMS 810
|
||||||
|
LPSTR pEnvironment; // Win32 x86
|
||||||
|
LPSTR pDriverPath; // c:\drivers\pscript.dll
|
||||||
|
LPSTR pDataFile; // c:\drivers\QMS810.PPD
|
||||||
|
LPSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
|
||||||
|
LPSTR pHelpFile; // c:\drivers\PSCRPTUI.HLP
|
||||||
|
LPSTR pDependentFiles; // PSCRIPT.DLL\0QMS810.PPD\0PSCRIPTUI.DLL\0PSCRIPTUI.HLP\0PSTEST.TXT\0\0
|
||||||
|
LPSTR pMonitorName; // "PJL monitor"
|
||||||
|
LPSTR pDefaultDataType; // "EMF"
|
||||||
|
LPSTR pszzPreviousNames; // "OldName1\0OldName2\0\0
|
||||||
|
} DRIVER_INFO_4A, *PDRIVER_INFO_4A, *LPDRIVER_INFO_4A;
|
||||||
|
typedef struct _DRIVER_INFO_4W {
|
||||||
|
DWORD cVersion;
|
||||||
|
LPWSTR pName;
|
||||||
|
LPWSTR pEnvironment;
|
||||||
|
LPWSTR pDriverPath;
|
||||||
|
LPWSTR pDataFile;
|
||||||
|
LPWSTR pConfigFile;
|
||||||
|
LPWSTR pHelpFile;
|
||||||
|
LPWSTR pDependentFiles;
|
||||||
|
LPWSTR pMonitorName;
|
||||||
|
LPWSTR pDefaultDataType;
|
||||||
|
LPWSTR pszzPreviousNames;
|
||||||
|
} DRIVER_INFO_4W, *PDRIVER_INFO_4W, *LPDRIVER_INFO_4W;
|
||||||
|
typedef struct _DRIVER_INFO_5A {
|
||||||
|
DWORD cVersion; // SDK examples:
|
||||||
|
LPSTR pName; // QMS 810
|
||||||
|
LPSTR pEnvironment; // Win32 x86
|
||||||
|
LPSTR pDriverPath; // c:\drivers\pscript.dll
|
||||||
|
LPSTR pDataFile; // c:\drivers\QMS810.PPD
|
||||||
|
LPSTR pConfigFile; // c:\drivers\PSCRPTUI.DLL
|
||||||
|
DWORD dwDriverAttributes; // driver attributes (like UMPD/KMPD)
|
||||||
|
DWORD dwConfigVersion; // version number of the config file since reboot
|
||||||
|
DWORD dwDriverVersion; // version number of the driver file since reboot
|
||||||
|
} DRIVER_INFO_5A, *PDRIVER_INFO_5A, *LPDRIVER_INFO_5A;
|
||||||
|
typedef struct _DRIVER_INFO_5W {
|
||||||
|
DWORD cVersion;
|
||||||
|
LPWSTR pName;
|
||||||
|
LPWSTR pEnvironment;
|
||||||
|
LPWSTR pDriverPath;
|
||||||
|
LPWSTR pDataFile;
|
||||||
|
LPWSTR pConfigFile;
|
||||||
|
DWORD dwDriverAttributes;
|
||||||
|
DWORD dwConfigVersion;
|
||||||
|
DWORD dwDriverVersion;
|
||||||
|
} DRIVER_INFO_5W, *PDRIVER_INFO_5W, *LPDRIVER_INFO_5W;
|
||||||
|
typedef struct _DRIVER_INFO_6A {
|
||||||
|
DWORD cVersion;
|
||||||
|
LPSTR pName;
|
||||||
|
LPSTR pEnvironment;
|
||||||
|
LPSTR pDriverPath;
|
||||||
|
LPSTR pDataFile;
|
||||||
|
LPSTR pConfigFile;
|
||||||
|
LPSTR pHelpFile;
|
||||||
|
LPSTR pDependentFiles;
|
||||||
|
LPSTR pMonitorName;
|
||||||
|
LPSTR pDefaultDataType;
|
||||||
|
LPSTR pszzPreviousNames;
|
||||||
|
FILETIME ftDriverDate;
|
||||||
|
DWORDLONG dwlDriverVersion;
|
||||||
|
LPSTR pszMfgName;
|
||||||
|
LPSTR pszOEMUrl;
|
||||||
|
LPSTR pszHardwareID;
|
||||||
|
LPSTR pszProvider;
|
||||||
|
} DRIVER_INFO_6A, *PDRIVER_INFO_6A, *LPDRIVER_INFO_6A;
|
||||||
|
typedef struct _DRIVER_INFO_6W {
|
||||||
|
DWORD cVersion;
|
||||||
|
LPWSTR pName;
|
||||||
|
LPWSTR pEnvironment;
|
||||||
|
LPWSTR pDriverPath;
|
||||||
|
LPWSTR pDataFile;
|
||||||
|
LPWSTR pConfigFile;
|
||||||
|
LPWSTR pHelpFile;
|
||||||
|
LPWSTR pDependentFiles;
|
||||||
|
LPWSTR pMonitorName;
|
||||||
|
LPWSTR pDefaultDataType;
|
||||||
|
LPWSTR pszzPreviousNames;
|
||||||
|
FILETIME ftDriverDate;
|
||||||
|
DWORDLONG dwlDriverVersion;
|
||||||
|
LPWSTR pszMfgName;
|
||||||
|
LPWSTR pszOEMUrl;
|
||||||
|
LPWSTR pszHardwareID;
|
||||||
|
LPWSTR pszProvider;
|
||||||
|
} DRIVER_INFO_6W, *PDRIVER_INFO_6W, *LPDRIVER_INFO_6W;
|
||||||
|
#define PRINTER_DRIVER_PACKAGE_AWARE 0x00000001
|
||||||
|
typedef struct _DRIVER_INFO_8A {
|
||||||
|
DWORD cVersion;
|
||||||
|
LPSTR pName;
|
||||||
|
LPSTR pEnvironment;
|
||||||
|
LPSTR pDriverPath;
|
||||||
|
LPSTR pDataFile;
|
||||||
|
LPSTR pConfigFile;
|
||||||
|
LPSTR pHelpFile;
|
||||||
|
LPSTR pDependentFiles;
|
||||||
|
LPSTR pMonitorName;
|
||||||
|
LPSTR pDefaultDataType;
|
||||||
|
LPSTR pszzPreviousNames;
|
||||||
|
FILETIME ftDriverDate;
|
||||||
|
DWORDLONG dwlDriverVersion;
|
||||||
|
LPSTR pszMfgName;
|
||||||
|
LPSTR pszOEMUrl;
|
||||||
|
LPSTR pszHardwareID;
|
||||||
|
LPSTR pszProvider;
|
||||||
|
LPSTR pszPrintProcessor;
|
||||||
|
LPSTR pszVendorSetup;
|
||||||
|
LPSTR pszzColorProfiles;
|
||||||
|
LPSTR pszInfPath;
|
||||||
|
DWORD dwPrinterDriverAttributes;
|
||||||
|
LPSTR pszzCoreDriverDependencies;
|
||||||
|
FILETIME ftMinInboxDriverVerDate;
|
||||||
|
DWORDLONG dwlMinInboxDriverVerVersion;
|
||||||
|
} DRIVER_INFO_8A, *PDRIVER_INFO_8A, *LPDRIVER_INFO_8A;
|
||||||
|
typedef struct _DRIVER_INFO_8W {
|
||||||
|
DWORD cVersion;
|
||||||
|
LPWSTR pName;
|
||||||
|
LPWSTR pEnvironment;
|
||||||
|
LPWSTR pDriverPath;
|
||||||
|
LPWSTR pDataFile;
|
||||||
|
LPWSTR pConfigFile;
|
||||||
|
LPWSTR pHelpFile;
|
||||||
|
LPWSTR pDependentFiles;
|
||||||
|
LPWSTR pMonitorName;
|
||||||
|
LPWSTR pDefaultDataType;
|
||||||
|
LPWSTR pszzPreviousNames;
|
||||||
|
FILETIME ftDriverDate;
|
||||||
|
DWORDLONG dwlDriverVersion;
|
||||||
|
LPWSTR pszMfgName;
|
||||||
|
LPWSTR pszOEMUrl;
|
||||||
|
LPWSTR pszHardwareID;
|
||||||
|
LPWSTR pszProvider;
|
||||||
|
LPWSTR pszPrintProcessor;
|
||||||
|
LPWSTR pszVendorSetup;
|
||||||
|
LPWSTR pszzColorProfiles;
|
||||||
|
LPWSTR pszInfPath;
|
||||||
|
DWORD dwPrinterDriverAttributes;
|
||||||
|
LPWSTR pszzCoreDriverDependencies;
|
||||||
|
FILETIME ftMinInboxDriverVerDate;
|
||||||
|
DWORDLONG dwlMinInboxDriverVerVersion;
|
||||||
|
} DRIVER_INFO_8W, *PDRIVER_INFO_8W, *LPDRIVER_INFO_8W;
|
||||||
|
// FLAGS for dwDriverAttributes
|
||||||
|
#define DRIVER_KERNELMODE 0x00000001
|
||||||
|
#define DRIVER_USERMODE 0x00000002
|
||||||
|
// FLAGS for DeletePrinterDriverEx.
|
||||||
|
#define DPD_DELETE_UNUSED_FILES 0x00000001
|
||||||
|
#define DPD_DELETE_SPECIFIC_VERSION 0x00000002
|
||||||
|
#define DPD_DELETE_ALL_FILES 0x00000004
|
||||||
|
// FLAGS for AddPrinterDriverEx.
|
||||||
|
#define APD_STRICT_UPGRADE 0x00000001
|
||||||
|
#define APD_STRICT_DOWNGRADE 0x00000002
|
||||||
|
#define APD_COPY_ALL_FILES 0x00000004
|
||||||
|
#define APD_COPY_NEW_FILES 0x00000008
|
||||||
|
#if(_WIN32_WINNT >= 0x0501)
|
||||||
|
#define APD_COPY_FROM_DIRECTORY 0x00000010
|
||||||
|
#endif
|
||||||
typedef struct _MONITOR_INFO_1A{LPSTR pName;} MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A;
|
typedef struct _MONITOR_INFO_1A{LPSTR pName;} MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A;
|
||||||
typedef struct _MONITOR_INFO_1W{LPWSTR pName;} MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
|
typedef struct _MONITOR_INFO_1W{LPWSTR pName;} MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
|
||||||
typedef struct _PORT_INFO_1A {LPSTR pName;} PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A;
|
typedef struct _PORT_INFO_1A {LPSTR pName;} PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A;
|
||||||
|
@ -666,6 +822,10 @@ typedef PORT_INFO_1W PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
|
||||||
typedef PORT_INFO_2W PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
|
typedef PORT_INFO_2W PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
|
||||||
typedef PORT_INFO_3W PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
|
typedef PORT_INFO_3W PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
|
||||||
typedef DRIVER_INFO_2W DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
|
typedef DRIVER_INFO_2W DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
|
||||||
|
typedef DRIVER_INFO_4W DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
|
||||||
|
typedef DRIVER_INFO_5W DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
|
||||||
|
typedef DRIVER_INFO_6W DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
|
||||||
|
typedef DRIVER_INFO_8W DRIVER_INFO_8,*PDRIVER_INFO_8,*LPDRIVER_INFO_8;
|
||||||
typedef PRINTER_INFO_1W PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
|
typedef PRINTER_INFO_1W PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
|
||||||
typedef PRINTER_INFO_2W PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
|
typedef PRINTER_INFO_2W PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
|
||||||
typedef PRINTER_INFO_4W PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
|
typedef PRINTER_INFO_4W PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
|
||||||
|
@ -731,6 +891,10 @@ typedef PORT_INFO_1A PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
|
||||||
typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
|
typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
|
||||||
typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
|
typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
|
||||||
typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
|
typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
|
||||||
|
typedef DRIVER_INFO_4A DRIVER_INFO_4,*PDRIVER_INFO_4,*LPDRIVER_INFO_4;
|
||||||
|
typedef DRIVER_INFO_5A DRIVER_INFO_5,*PDRIVER_INFO_5,*LPDRIVER_INFO_5;
|
||||||
|
typedef DRIVER_INFO_6A DRIVER_INFO_6,*PDRIVER_INFO_6,*LPDRIVER_INFO_6;
|
||||||
|
typedef DRIVER_INFO_8A DRIVER_INFO_8,*PDRIVER_INFO_8,*LPDRIVER_INFO_8;
|
||||||
typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
|
typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
|
||||||
typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
|
typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
|
||||||
typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
|
typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
|
||||||
|
|
|
@ -251,6 +251,8 @@ typedef struct _LDC
|
||||||
ABORTPROC pAbortProc; /* AbortProc for Printing */
|
ABORTPROC pAbortProc; /* AbortProc for Printing */
|
||||||
DWORD CallBackTick;
|
DWORD CallBackTick;
|
||||||
HANDLE hPrinter; /* Local or Remote Printer driver */
|
HANDLE hPrinter; /* Local or Remote Printer driver */
|
||||||
|
PVOID pUMPDev;
|
||||||
|
PUMDHPDEV pUMdhpdev;
|
||||||
DEVCAPS DevCaps;
|
DEVCAPS DevCaps;
|
||||||
HBRUSH BrushColor;
|
HBRUSH BrushColor;
|
||||||
HPEN PenColor;
|
HPEN PenColor;
|
||||||
|
|
Loading…
Reference in a new issue