1 /* 2 * PROJECT: ReactOS Spooler API 3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) 4 * PURPOSE: Precompiled Header for all source files 5 * COPYRIGHT: Copyright 2015-2017 Colin Finck (colin@reactos.org) 6 */ 7 8 #ifndef _PRECOMP_H 9 #define _PRECOMP_H 10 11 #define WIN32_NO_STATUS 12 #include <windef.h> 13 #include <winbase.h> 14 #include <winuser.h> 15 #include <wingdi.h> 16 #include <winreg.h> 17 #include <winspool.h> 18 #include <winspool_c.h> 19 #include <winsplp.h> 20 #include <winddiui.h> 21 #include <ndk/rtlfuncs.h> 22 #include <strsafe.h> 23 24 #include <spoolss.h> 25 #include <marshalling/marshalling.h> 26 27 #include "wspool.h" 28 29 #include <wine/debug.h> 30 WINE_DEFAULT_DEBUG_CHANNEL(winspool); 31 32 #define SPOOLER_HANDLE_SIG 'gg' 33 34 // Structures 35 /* 36 * Describes a handle returned by AddPrinterW or OpenPrinterW. 37 */ 38 typedef struct _SPOOLER_HANDLE 39 { 40 DWORD_PTR Sig; 41 BOOL bStartedDoc : 1; 42 BOOL bJob : 1; 43 BOOL bAnsi : 1; 44 BOOL bDocEvent : 1; 45 BOOL bTrayIcon : 1; 46 BOOL bNoColorProfile : 1; 47 BOOL bShared : 1; 48 BOOL bClosed : 1; 49 DWORD dwJobID; 50 HANDLE hPrinter; 51 HANDLE hSPLFile; 52 DWORD cCount; 53 HANDLE hSpoolFileHandle; 54 DWORD dwOptions; 55 } 56 SPOOLER_HANDLE, *PSPOOLER_HANDLE; 57 58 // main.c 59 extern HANDLE hProcessHeap; 60 extern CRITICAL_SECTION rtlCritSec; 61 62 // utils.c 63 DWORD UnicodeToAnsiInPlace(PWSTR pwszField); 64 DWORD UnicodeToAnsiZZInPlace(PWSTR pwszzField); 65 SECURITY_DESCRIPTOR * get_sd(SECURITY_DESCRIPTOR *sd, DWORD *size); 66 LONG WINAPI IntProtectHandle(HANDLE,BOOL); 67 BOOL WINAPI IntUnprotectHandle(HANDLE); 68 VOID UpdateTrayIcon(HANDLE hPrinter, DWORD JobId); 69 70 // devmode.c 71 extern void RosConvertAnsiDevModeToUnicodeDevmode(PDEVMODEA pDevModeInput, PDEVMODEW *pDevModeOutput); 72 73 extern void RosConvertUnicodeDevModeToAnsiDevmode(PDEVMODEW pDevModeInput, PDEVMODEA pDevModeOutput); 74 75 // 76 // [MS-EMF] 2.2.27 UniversalFontId Object 77 // 78 typedef struct _UNIVERSAL_FONT_ID 79 { 80 ULONG CheckSum; 81 ULONG Index; 82 } UNIVERSAL_FONT_ID, *PUNIVERSAL_FONT_ID; 83 84 BOOL WINAPI IsValidDevmodeNoSizeW(PDEVMODEW pDevmode); 85 86 /* RtlCreateUnicodeStringFromAsciiz will return an empty string in the buffer 87 if passed a NULL string. This returns NULLs to the result. 88 */ 89 static inline PWSTR AsciiToUnicode( UNICODE_STRING * usBufferPtr, LPCSTR src ) 90 { 91 if ( (src) ) 92 { 93 RtlCreateUnicodeStringFromAsciiz(usBufferPtr, src); 94 return usBufferPtr->Buffer; 95 } 96 usBufferPtr->Buffer = NULL; /* so that RtlFreeUnicodeString won't barf */ 97 return NULL; 98 } 99 100 #endif 101