2015-05-06 12:47:20 +00:00
|
|
|
/*
|
|
|
|
* PROJECT: ReactOS Local Spooler
|
|
|
|
* LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation
|
|
|
|
* PURPOSE: Main functions
|
|
|
|
* COPYRIGHT: Copyright 2015 Colin Finck <colin@reactos.org>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "precomp.h"
|
|
|
|
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
// Global Variables
|
|
|
|
WCHAR wszSpoolDirectory[MAX_PATH];
|
|
|
|
DWORD cchSpoolDirectory;
|
|
|
|
|
2015-06-19 15:21:30 +00:00
|
|
|
// Global Constants
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
const WCHAR wszCurrentEnvironment[] =
|
|
|
|
#if defined(_X86_)
|
|
|
|
L"Windows NT x86";
|
|
|
|
#elif defined(_AMD64_)
|
|
|
|
L"Windows x64";
|
|
|
|
#elif defined(_ARM_)
|
|
|
|
L"Windows ARM";
|
|
|
|
#else
|
|
|
|
#error Unsupported architecture
|
|
|
|
#endif
|
|
|
|
|
2015-06-19 15:21:30 +00:00
|
|
|
const WCHAR wszDefaultDocumentName[] = L"Local Downlevel Document";
|
|
|
|
|
2015-06-09 13:22:25 +00:00
|
|
|
const WCHAR* wszPrintProviderInfo[3] = {
|
|
|
|
L"Windows NT Local Print Providor", // Name
|
|
|
|
L"Windows NT Local Printers", // Description
|
|
|
|
L"Locally connected Printers" // Comment
|
|
|
|
};
|
|
|
|
|
2015-06-19 15:21:30 +00:00
|
|
|
// Local Constants
|
|
|
|
static const PRINTPROVIDOR _PrintProviderFunctions = {
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
LocalOpenPrinter, // fpOpenPrinter
|
2015-06-25 12:29:18 +00:00
|
|
|
LocalSetJob, // fpSetJob
|
2015-06-19 15:21:30 +00:00
|
|
|
LocalGetJob, // fpGetJob
|
2015-06-25 15:27:38 +00:00
|
|
|
LocalEnumJobs, // fpEnumJobs
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
NULL, // fpAddPrinter
|
|
|
|
NULL, // fpDeletePrinter
|
|
|
|
NULL, // fpSetPrinter
|
|
|
|
NULL, // fpGetPrinter
|
|
|
|
LocalEnumPrinters, // fpEnumPrinters
|
|
|
|
NULL, // fpAddPrinterDriver
|
|
|
|
NULL, // fpEnumPrinterDrivers
|
|
|
|
NULL, // fpGetPrinterDriver
|
|
|
|
NULL, // fpGetPrinterDriverDirectory
|
|
|
|
NULL, // fpDeletePrinterDriver
|
|
|
|
NULL, // fpAddPrintProcessor
|
|
|
|
LocalEnumPrintProcessors, // fpEnumPrintProcessors
|
|
|
|
LocalGetPrintProcessorDirectory, // fpGetPrintProcessorDirectory
|
|
|
|
NULL, // fpDeletePrintProcessor
|
|
|
|
LocalEnumPrintProcessorDatatypes, // fpEnumPrintProcessorDatatypes
|
|
|
|
LocalStartDocPrinter, // fpStartDocPrinter
|
|
|
|
LocalStartPagePrinter, // fpStartPagePrinter
|
|
|
|
LocalWritePrinter, // fpWritePrinter
|
|
|
|
LocalEndPagePrinter, // fpEndPagePrinter
|
|
|
|
NULL, // fpAbortPrinter
|
|
|
|
NULL, // fpReadPrinter
|
|
|
|
LocalEndDocPrinter, // fpEndDocPrinter
|
2015-06-19 15:21:30 +00:00
|
|
|
LocalAddJob, // fpAddJob
|
2015-06-28 15:51:32 +00:00
|
|
|
LocalScheduleJob, // fpScheduleJob
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
NULL, // fpGetPrinterData
|
|
|
|
NULL, // fpSetPrinterData
|
|
|
|
NULL, // fpWaitForPrinterChange
|
|
|
|
LocalClosePrinter, // fpClosePrinter
|
|
|
|
NULL, // fpAddForm
|
|
|
|
NULL, // fpDeleteForm
|
|
|
|
NULL, // fpGetForm
|
|
|
|
NULL, // fpSetForm
|
|
|
|
NULL, // fpEnumForms
|
|
|
|
NULL, // fpEnumMonitors
|
|
|
|
NULL, // fpEnumPorts
|
|
|
|
NULL, // fpAddPort
|
|
|
|
NULL, // fpConfigurePort
|
|
|
|
NULL, // fpDeletePort
|
|
|
|
NULL, // fpCreatePrinterIC
|
|
|
|
NULL, // fpPlayGdiScriptOnPrinterIC
|
|
|
|
NULL, // fpDeletePrinterIC
|
|
|
|
NULL, // fpAddPrinterConnection
|
|
|
|
NULL, // fpDeletePrinterConnection
|
|
|
|
NULL, // fpPrinterMessageBox
|
|
|
|
NULL, // fpAddMonitor
|
|
|
|
NULL, // fpDeleteMonitor
|
|
|
|
NULL, // fpResetPrinter
|
|
|
|
NULL, // fpGetPrinterDriverEx
|
|
|
|
NULL, // fpFindFirstPrinterChangeNotification
|
|
|
|
NULL, // fpFindClosePrinterChangeNotification
|
|
|
|
NULL, // fpAddPortEx
|
|
|
|
NULL, // fpShutDown
|
|
|
|
NULL, // fpRefreshPrinterChangeNotification
|
|
|
|
NULL, // fpOpenPrinterEx
|
|
|
|
NULL, // fpAddPrinterEx
|
|
|
|
NULL, // fpSetPort
|
|
|
|
NULL, // fpEnumPrinterData
|
|
|
|
NULL, // fpDeletePrinterData
|
|
|
|
NULL, // fpClusterSplOpen
|
|
|
|
NULL, // fpClusterSplClose
|
|
|
|
NULL, // fpClusterSplIsAlive
|
|
|
|
NULL, // fpSetPrinterDataEx
|
|
|
|
NULL, // fpGetPrinterDataEx
|
|
|
|
NULL, // fpEnumPrinterDataEx
|
|
|
|
NULL, // fpEnumPrinterKey
|
|
|
|
NULL, // fpDeletePrinterDataEx
|
|
|
|
NULL, // fpDeletePrinterKey
|
|
|
|
NULL, // fpSeekPrinter
|
|
|
|
NULL, // fpDeletePrinterDriverEx
|
|
|
|
NULL, // fpAddPerMachineConnection
|
|
|
|
NULL, // fpDeletePerMachineConnection
|
|
|
|
NULL, // fpEnumPerMachineConnections
|
|
|
|
NULL, // fpXcvData
|
|
|
|
NULL, // fpAddPrinterDriverEx
|
|
|
|
NULL, // fpSplReadPrinter
|
|
|
|
NULL, // fpDriverUnloadComplete
|
|
|
|
NULL, // fpGetSpoolFileInfo
|
|
|
|
NULL, // fpCommitSpoolData
|
|
|
|
NULL, // fpCloseSpoolFileHandle
|
|
|
|
NULL, // fpFlushPrinter
|
|
|
|
NULL, // fpSendRecvBidiData
|
|
|
|
NULL, // fpAddDriverCatalog
|
|
|
|
};
|
|
|
|
|
|
|
|
static void
|
|
|
|
_GetSpoolDirectory()
|
|
|
|
{
|
|
|
|
const WCHAR wszSpoolPath[] = L"\\spool";
|
2015-06-09 13:22:25 +00:00
|
|
|
const DWORD cchSpoolPath = _countof(wszSpoolPath) - 1;
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
|
|
|
|
// Get the system directory and append the "spool" subdirectory.
|
|
|
|
// Forget about length checks here. If this doesn't fit into MAX_PATH, our OS has more serious problems...
|
|
|
|
cchSpoolDirectory = GetSystemDirectoryW(wszSpoolDirectory, MAX_PATH);
|
|
|
|
CopyMemory(&wszSpoolDirectory[cchSpoolDirectory], wszSpoolPath, (cchSpoolPath + 1) * sizeof(WCHAR));
|
|
|
|
cchSpoolDirectory += cchSpoolPath;
|
|
|
|
}
|
|
|
|
|
|
|
|
BOOL WINAPI
|
|
|
|
DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
|
|
|
{
|
|
|
|
switch (fdwReason)
|
|
|
|
{
|
|
|
|
case DLL_PROCESS_ATTACH:
|
|
|
|
DisableThreadLibraryCalls(hinstDLL);
|
|
|
|
_GetSpoolDirectory();
|
2015-06-19 15:21:30 +00:00
|
|
|
InitializePrintProcessorList();
|
|
|
|
InitializePrinterList();
|
|
|
|
InitializeGlobalJobList();
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2015-05-06 12:47:20 +00:00
|
|
|
BOOL WINAPI
|
|
|
|
InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor, DWORD cbPrintProvidor, LPWSTR pFullRegistryPath)
|
|
|
|
{
|
2015-06-19 15:21:30 +00:00
|
|
|
CopyMemory(pPrintProvidor, &_PrintProviderFunctions, min(cbPrintProvidor, sizeof(PRINTPROVIDOR)));
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
|
2015-06-23 13:46:14 +00:00
|
|
|
SetLastError(ERROR_SUCCESS);
|
Time to commit some Work-In-Progress stuff before my diff gets too large..
[LOCALSPL]
- Begin work on the Local Spooler. Return a structure with function pointers in InitializePrintProvidor.
- Design and document internal structures for managing LocalSpl Handles, Printer Handles, Printers, Print Jobs and Print Processors.
Manage Printers and Print Processors in Generic Tables, with one Job Queue per Printer managed as a Doubly Linked List.
- Implement LocalOpenPrinter, LocalEnumPrintProcessorDatatypes, LocalEnumPrintProcessors, LocalGetPrintProcessorDirectory, with focus on catching all corner cases.
Currently working on LocalStartDocPrinter.
- Build upon the documentation at http://www.undocprint.org/formats/winspool/shd to read and write .SHD files.
[WINPRINT]
Begin work on the Standard Print Processor. Implement EnumPrintProcessorDatatypesW.
[WINSPOOL_APITEST]
Add an API Test for winspool.drv, currently testing some corner cases of ClosePrinter, EnumPrintProcessorDatatypesW, GetPrintProcessorDirectoryW, OpenPrinterW, StartDocPrinterW.
TODO: Find a way to actually test the localspl.dll functions instead of only winspool.drv. This DLL doesn't like to be tested standalone under Windows, e.g. without being used through spoolsv/spoolss.
[SPOOLSS]
Implement InitializeRouter by calling the InitializePrintProvidor function of localspl there.
This function should later also initialize further Print Providers.
[SPOOLSV]
Call InitializeRouter when starting up the service.
[WINSPOOL]
Add dummy functions for EnumPrintProcessorDatatypesA/EnumPrintProcessorDatatypesW.
[All modules]
Fix printf format specifiers for errors (%lu) and statuses (%ld).
svn path=/branches/colins-printing-for-freedom/; revision=67847
2015-05-22 15:29:07 +00:00
|
|
|
return TRUE;
|
2015-05-06 12:47:20 +00:00
|
|
|
}
|