Add an include directory for all printing components containing definitions not found in the public headers.
For now, that's just PackStrings in spoolss.h.
[SPOOLSS_APITEST]
Use the new spoolss.h header.
[WINPRINT_APITEST]
Add an API-Test for the winprint Print Processor, so far for its EnumPrintProcessorDatatypesW function. Tests succeed in Windows Server 2003.
winspool.drv also provides functions that go into winprint.dll, but as these tests show, they behave slightly different in terms of error codes due to the involved RPC and routing.
Windows Server 2003 has winprint functions in localspl.dll, so you have to copy its localspl.dll to winprint.dll for testing.
[WINPRINT]
- Use PackStrings to simplify the code.
- Fix test failures.
svn path=/branches/colins-printing-for-freedom/; revision=68025
In an attempt to simplify the code for further functions that return information structures, implement and document the undocumented PackStrings function.
Hints were taken from an XP DDK sample and own testing.
[SPOOLSS_APITEST]
Add some tests for PackStrings that succeed under Windows Server 2003.
svn path=/branches/colins-printing-for-freedom/; revision=68023
[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
- Use GdiConvertToDevmodeW instead of duplicating code.
- Fix the spec2def call here as well.
svn path=/branches/colins-printing-for-freedom/; revision=67816
This serves as an example to show how I expect most spooler functions to work.
- Implement the publicly exported and fundamental RevertToPrinterSelf and ImpersonatePrinterClient spoolss.dll functions.
- Fix WINSPOOL_HANDLE_bind.
- Fix build with GCC.
svn path=/branches/colins-printing-for-freedom/; revision=67693
Another reference: http://www.hsc.fr/ressources/articles/win_net_srv/msrpc_spoolss.html
- Put this file in the public domain as it's just collected interface information from various sources without any real code.
svn path=/branches/colins-printing-for-freedom/; revision=67662
References:
- https://git.samba.org/?p=samba.git;a=blob;f=librpc/idl/spoolss.idl;hb=618af83d1bd07b12a9acc88b0d2111cab7a8bb2b
- https://msdn.microsoft.com/en-us/library/cc244649.aspx
- Replace our stubbed spoolsv by a new basic implementation that already creates a thread to serve RPC requests.
- Add stubbed versions of localmon, localspl, spoolss, winprint, winspool matching the exports of the Windows Server 2003 DLLs.
localmon and winprint are part of localspl in Windows Server 2003. I took the freedom of putting these distinct components into separate DLLs (as it's done for localmon in NT4 and for winprint in Win7).
- Implement some stubs myself to fix the build (e.g. comdlg32 uses some functions).
- Implement OpenPrinterA and OpenPrinterW in winspool. This is just ANSI-to-Unicode conversion and a RPC call.
- Remove the Wine-imported ntprint, this one also needs a complete rewrite once we're at this point.
svn path=/branches/colins-printing-for-freedom/; revision=67576
This line will arrive as RAW data in the printing stack, so it doesn't need any processing through GDI and serves as a good test for the very basic printing components.
svn path=/branches/colins-printing-for-freedom/; revision=67544
- Remove some Wine-imported components which are either entirely not usable for us or only implement so few functions that it's easier to completely reimplement them.
- Move "localui" (Wine-imported) and "spoolsv" (ReactOS stub) to the new directories.
svn path=/branches/colins-printing-for-freedom/; revision=67543
- Implement portable fabsf.c
- Move some ARM stubs to a better location
- Add stubs for __dtoi64, __i64tos, __u64tos, _clearfp
svn path=/trunk/; revision=67537
- Handle failure to allocate VM for thunk code
- Factor out the assembly thumk code, fix amd64 code and implement ARM code
svn path=/trunk/; revision=67535
- Convert tabs to spaces
- Remove excessive local variable indentation for alignment, since that doesn't help to improve readability
- No code changes
svn path=/trunk/; revision=67534
- Fix a typo.
- Use a #define for the device flag.
- In r67526, the following change was committed but not described in the commit message:
- Enable opening devices in DosCreateFile and DosCreateFileEx.
svn path=/trunk/; revision=67527
Update the copyright year (better late than never).
Push the error code inside Fast486InterruptInternal, to make the size of the
pushed value on the stack correct.
Update the CPL in Fast486TaskSwitch.
svn path=/trunk/; revision=67526
Add a few definitions based on (Windows RT 8.1) symbol files, ks386.inc, ksamd64.inc, ksarm.inc and Windows 10 WDK (ntosp.h ftw!)
svn path=/trunk/; revision=67525
- Implement KiCpuId and make use of it
- Get rid of ugly CPUID, RDMSR and WRMSR functions
- remove unused KTS_ constants
svn path=/trunk/; revision=67524
- Implement C versions of RtlInterlockedPushEntrySList, RtlInterlockedPushListSList, RtlInterlockedPopEntrySList and RtlInterlockedFlushSList.
- RtlInterlockedPushListSList is fastcall, not stdcall
svn path=/trunk/; revision=67522
- Improve definition of ExInterlockedCompareExchange64 and interlocked SList functions and improve some annotations based on native header
- Update processor feature constants
svn path=/trunk/; revision=67521
Mouse:
- Remove now useless code in mouse support in BIOS.
- Implement INT 33h, AH=1Bh "Return mouse sensitivity" (returning hardcoded standard values since we don't support custom sensitivities) (AH=13h and 1Ah are marked as UNSUPPORTED).
- INT 33h, AH=1Fh "Disable mouse driver" returns in ES:BX the old INT 33h vector value: implement that.
- Implement INT 33h, AH=21h "Software reset", AH=24h and 4Dh and 6Dh "Software version and mouse info", "pointer to copyright string" and "version 'string'" functionalities.
DOS:
- Initialize in Win2k3-ntvdm-compatible order the DOS drivers: NUL, then CON, then XMS, and then EMS.
- Fix segment/offset inversion usage in INT 21h, AH=5Ch "Lock/Unlock region of file": when using MAKELONG macro to build a far pointer, the first parameter (loword) is the offset, and the second parameter (hiword) is the segment.
svn path=/trunk/; revision=67518
When storing a segment selector, the operand size attribute is only ignored when
writing to memory (where it's treated as if it's always 16-bit).
svn path=/trunk/; revision=67512