96 return wcsicmp(
A->pwszPrinterName,
B->pwszPrinterName);
110 DWORD cchPrinterName;
122 TRACE(
"InitializePrinterList()\n");
128 dwErrorCode = (
DWORD)
RegQueryInfoKeyW(
hPrintersKey,
NULL,
NULL,
NULL, &dwSubKeys,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
131 ERR(
"RegQueryInfoKeyW failed with status %lu!\n", dwErrorCode);
136 for (
i = 0;
i < dwSubKeys;
i++)
166 if (pwszPrintProcessor)
169 pwszPrintProcessor =
NULL;
173 cchPrinterName =
_countof(wszPrinterName);
182 ERR(
"RegEnumKeyExW failed for iteration %lu with status %lu!\n",
i, dwErrorCode);
190 ERR(
"RegOpenKeyExW failed for Printer \"%S\" with status %lu!\n", wszPrinterName, dwErrorCode);
196 if (!pwszPrintProcessor)
201 if (!pPrintProcessor)
203 ERR(
"Invalid Print Processor \"%S\" for Printer \"%S\"!\n", pwszPrintProcessor, wszPrinterName);
216 ERR(
"Invalid Port \"%S\" for Printer \"%S\"!\n", pwszPort, wszPrinterName);
225 ERR(
"DllAllocSplMem failed!\n");
231 pPrinter->
pPort = pPort;
257 ERR(
"Invalid default datatype \"%S\" for Printer \"%S\"!\n", pPrinter->
pwszDefaultDatatype, wszPrinterName);
265 ERR(
"Couldn't query the size of the DevMode for Printer \"%S\", status is %lu, cbData is %lu!\n", wszPrinterName, dwErrorCode, cbData);
274 ERR(
"DllAllocSplMem failed!\n");
282 ERR(
"Couldn't query a DevMode for Printer \"%S\", status is %lu, cbData is %lu!\n", wszPrinterName, dwErrorCode, cbData);
287 cbData =
sizeof(
DWORD);
291 ERR(
"Couldn't query Attributes for Printer \"%S\", status is %lu!\n", wszPrinterName, dwErrorCode);
296 cbData =
sizeof(
DWORD);
300 ERR(
"Couldn't query Status for Printer \"%S\", status is %lu!\n", wszPrinterName, dwErrorCode);
342 if (pwszPrintProcessor)
354 DWORD cchMachineName = 0;
423 pwszComputerName[0] =
L'\\';
424 pwszComputerName[1] =
L'\\';
435 *pcchComputerName += 2;
438 pComputerName = &pwszComputerName[2];
451 pwszComputerName[(*pcchComputerName)++] =
L'\\';
452 pwszComputerName[*pcchComputerName] = 0;
469 *pwszComputerName = 0;
470 *pcchComputerName = 0;
493 for (
i = 0;
i < 3;
i++)
528 (*ppPrinterInfo)->dwGetVersion =
GetVersion();
529 (*ppPrinterInfo)->Status = pPrinter->
dwStatus;
532 (*ppPrinterInfo)->fFreeBuild = 1;
558 const WCHAR wszComma[] =
L",";
562 size_t cbDescription;
563 PWSTR p, Allocation1, Allocation2;
584 pwszStrings[0] = Allocation1;
593 pwszStrings[2] = Allocation2;
616 size_t cbPrinterName;
623 size_t cbPrintProcessor;
628 FIXME(
"LocalGetPrinterLevel2\n");
646 *
pcbNeeded +=
sizeof(
PRINTER_INFO_2W) + cbDevMode + cbPrinterName + cbShareName + cbPortName + cbDriverName + cbComment + cbLocation + cbSepFile + cbPrintProcessor + cbDatatype + cbParameters;
655 (*ppPrinterInfo)->Status = pPrinter->
dwStatus;
658 *ppPrinterInfoEnd -= cbDevMode;
660 (*ppPrinterInfo)->pDevMode = (
PDEVMODEW)(*ppPrinterInfoEnd);
714 FIXME(
"Return a valid security descriptor for PRINTER_INFO_3\n");
728 size_t cbPrinterName;
742 (*ppPrinterInfo)->pServerName =
NULL;
762 size_t cbPrinterName;
810 (*ppPrinterInfo)->dwStatus = pPrinter->
dwStatus;
825 FIXME(
"No Directory Support, returning DSPRINT_UNPUBLISH for PRINTER_INFO_7 all the time!\n");
829 (*ppPrinterInfo)->pszObjectGUID =
NULL;
850 *ppPrinterInfoEnd -= cbDevMode;
852 (*ppPrinterInfo)->pDevMode = (
PDEVMODEW)(*ppPrinterInfoEnd);
872 FIXME(
"Per-user settings are not yet implemented, returning the global DevMode for PRINTER_INFO_9!\n");
875 *ppPrinterInfoEnd -= cbDevMode;
877 (*ppPrinterInfo)->pDevMode = (
PDEVMODEW)(*ppPrinterInfoEnd);
886 DWORD cchComputerName = 0;
888 PBYTE pPrinterInfoEnd;
893 FIXME(
"LocalEnumPrinters(%lu, %S, %lu, %p, %lu, %p, %p)\n",
Flags,
Name,
Level, pPrinterEnum, cbBuf,
pcbNeeded, pcReturned);
948 FIXME(
"Printer Sharing is not supported yet, returning no printers!\n");
963 pPrinterInfoEnd = &pPrinterEnum[*
pcbNeeded];
989 const WCHAR wszDummyComputerName[] =
L"";
996 TRACE(
"LocalGetPrinter(%p, %lu, %p, %lu, %p)\n", hPrinter,
Level, pPrinter, cbBuf,
pcbNeeded);
1006 if (pHandle->
HandleType != HandleType_Printer)
1068 bReturnValue = ((
LPMONITOREX)pPrintMonitor->
pMonitor)->Monitor.pfnOpenPort(pwszPortName, &hPort);
1082 ERR(
"DllAllocSplMem failed!\n");
1091 ERR(
"DllAllocSplMem failed!\n");
1095 pPortHandle->
hPort = hPort;
1096 pPortHandle->
pPort = pPort;
1103 *phPrinter = (
HANDLE)pHandle;
1141 ERR(
"DllAllocSplMem failed!\n");
1147 if (!pPrinterHandle)
1150 ERR(
"DllAllocSplMem failed!\n");
1155 pPrinterHandle->
pPrinter = pPrinter;
1176 if (pDefault && pDefault->
pDevMode)
1182 if (pwszJobParameter)
1185 if (
wcsncmp(pwszJobParameter,
L"Job ", 4) != 0)
1192 pwszJobParameter += 4;
1195 while (*pwszJobParameter ==
' ')
1209 if (!pJob || pJob->
pPrinter != pPrinter)
1222 ERR(
"CreateFileW failed with error %lu for \"%S\"!\n", dwErrorCode, wszFullPath);
1228 pPrinterHandle->
pJob = pJob;
1236 *phPrinter = (
HANDLE)pHandle;
1266 ERR(
"DllAllocSplMem failed!\n");
1271 pHandle->
HandleType = HandleType_PrintServer;
1275 *phPrinter = (
HANDLE)pHandle;
1294 if (
wcsncmp(pwszParameter,
L"Monitor ", 8) == 0)
1305 ERR(
"OpenXcvHandle failed on Monitor name! %lu\n", dwErrorCode);
1309 else if (
wcsncmp(pwszParameter,
L"Port ", 5) == 0)
1320 ERR(
"OpenXcvHandle failed on Port name! %lu\n", dwErrorCode);
1329 ERR(
"OpenXcvHandle failed on bad name! %lu\n", dwErrorCode);
1343 ERR(
"XcvOpenPort function failed! %lu\n", dwErrorCode);
1352 ERR(
"DllAllocSplMem failed!\n");
1361 ERR(
"DllAllocSplMem failed!\n");
1373 *phPrinter = (
HANDLE)pHandle;
1374 ERR(
"OpenXcvHandle Success! %p\n", pXcvHandle);
1400 DWORD cchComputerName;
1401 DWORD cchFirstParameter;
1405 PWSTR pwszSecondParameter;
1408 TRACE(
"LocalOpenPrinter(%S, %p, %p)\n", lpPrinterName, phPrinter, pDefault);
1422 if (lpPrinterName[0] ==
L'\\' && lpPrinterName[1] ==
L'\\')
1429 while (*
p !=
L'\0' && *
p !=
L'\\')
1433 cchComputerName =
_countof(wszComputerName);
1437 ERR(
"GetComputerNameW failed with error %lu!\n", dwErrorCode);
1444 if (
p - lpPrinterName != cchComputerName ||
_wcsnicmp(lpPrinterName, wszComputerName, cchComputerName) != 0)
1460 lpPrinterName =
p + 1;
1464 pwszSecondParameter =
wcschr(lpPrinterName,
L',');
1465 if (pwszSecondParameter)
1466 cchFirstParameter = pwszSecondParameter -
p;
1468 cchFirstParameter =
wcslen(lpPrinterName);
1471 if (!cchFirstParameter && !pwszSecondParameter)
1478 if (cchFirstParameter)
1483 CopyMemory(pwszFirstParameter, lpPrinterName, cchFirstParameter *
sizeof(
WCHAR));
1487 if (pwszSecondParameter)
1490 ++pwszSecondParameter;
1493 while (*pwszSecondParameter ==
L' ')
1494 ++pwszSecondParameter;
1498 if (pwszFirstParameter && pwszSecondParameter &&
wcsncmp(pwszSecondParameter,
L"Port", 4) == 0)
1505 else if (!pwszFirstParameter && pwszSecondParameter &&
wcsncmp(pwszSecondParameter,
L"Xcv", 3) == 0)
1512 FIXME(
"OpenXcvHandle : %S\n",pwszSecondParameter);
1526 if (pwszFirstParameter)
1542 TRACE(
"LocalReadPrinter(%p, %p, %lu, %p)\n", hPrinter, pBuf, cbBuf, pNoBytesRead);
1575 if (pHandle->
HandleType != HandleType_Printer)
1595 ERR(
"ReadFile failed with error %lu!\n", dwErrorCode);
1611 DWORD dwReturnValue = 0;
1618 TRACE(
"LocalStartDocPrinter(%p, %lu, %p)\n", hPrinter,
Level, pDocInfo);
1653 dwReturnValue = pJob->
dwJobID;
1658 if (pHandle->
HandleType != HandleType_Printer)
1673 if (pPrinterHandle->
pJob)
1694 dwErrorCode =
CreateJob(pPrinterHandle);
1720 return dwReturnValue;
1730 TRACE(
"LocalStartPagePrinter(%p)\n", hPrinter);
1733 if (!pHandle || pHandle->
HandleType != HandleType_Printer)
1766 TRACE(
"LocalWritePrinter(%p, %p, %lu, %p)\n", hPrinter, pBuf, cbBuf, pcWritten);
1799 if (pHandle->
HandleType != HandleType_Printer)
1818 if (!
WriteFile(SOME_SPOOL_FILE_HANDLE, pBuf, cbBuf, pcWritten,
NULL))
1839 TRACE(
"LocalEndPagePrinter(%p)\n", hPrinter);
1842 if (!pHandle || pHandle->
HandleType != HandleType_Printer)
1865 TRACE(
"LocalEndDocPrinter(%p)\n", hPrinter);
1898 if (pHandle->
HandleType != HandleType_Printer)
1928 FIXME(
"LocalClosePortHandle\n");
1939 FIXME(
"LocalClosePrinterHandle\n");
1941 if (pPrinterHandle->
pJob)
1964 FIXME(
"LocalClosePrinter(%p)\n", hPrinter);
1976 else if (pHandle->
HandleType == HandleType_Printer)
1980 else if (pHandle->
HandleType == HandleType_PrintServer)
1984 else if (pHandle->
HandleType == HandleType_Xcv)
1988 FIXME(
"LocalClosePrinter 1\n");
1992 FIXME(
"LocalClosePrinter 2\n");
1994 FIXME(
"LocalClosePrinter 3\n");
#define ERROR_INVALID_DATATYPE
#define ERROR_INVALID_PARAMETER
BOOL WINAPI LocalGetPrinter(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, DWORD cbBuf, LPDWORD pcbNeeded)
struct _SECURITY_DESCRIPTOR * PSECURITY_DESCRIPTOR
struct _PRINTER_INFO_6 PRINTER_INFO_6
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define PRINTER_ENUM_CONNECTIONS
PWSTR WINAPI AllocSplStr(PCWSTR pwszInput)
PCWSTR wszPrintProviderInfo[3]
#define PRINTER_ENUM_NETWORK
BOOL WINAPI LocalEnumPrinters(DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
struct _devicemodeW * PDEVMODEW
struct _PRINTER_INFO_9W PRINTER_INFO_9W
static void _LocalGetPrinterLevel7(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_7W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
#define PRINTER_ENUM_SHARED
static void _LocalGetPrinterLevel9(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_9W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
static DWORD dwPrinterInfo2Offsets[]
BOOL WINAPI DllFreeSplMem(PVOID pMem)
#define ERROR_INVALID_HANDLE
PLOCAL_JOB pNextJobToProcess
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
static DWORD _LocalOpenPrintServerHandle(PHANDLE phPrinter)
PLOCAL_PRINT_MONITOR pPrintMonitor
#define ERROR_NOT_ENOUGH_MEMORY
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
static DWORD dwPrinterInfo0Offsets[]
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
struct _LOCAL_PORT_HANDLE * PLOCAL_PORT_HANDLE
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
void FreeJob(PLOCAL_JOB pJob)
static void _LocalClosePortHandle(PLOCAL_PORT_HANDLE pPortHandle)
STRSAFEAPI StringCbCopyExW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcbRemaining, STRSAFE_DWORD dwFlags)
DWORD WINAPI GetVersion(VOID)
#define DSPRINT_UNPUBLISH
BOOL WINAPI ReallocSplStr(PWSTR *ppwszString, PCWSTR pwszInput)
void InitializeSkiplist(PSKIPLIST Skiplist, PSKIPLIST_ALLOCATE_ROUTINE AllocateRoutine, PSKIPLIST_COMPARE_ROUTINE CompareRoutine, PSKIPLIST_FREE_ROUTINE FreeRoutine)
void InitializePrinterJobList(PLOCAL_PRINTER pPrinter)
BOOL InitializePrinterList(VOID)
DWORD WINAPI LocalPrinterMessageBox(HANDLE hPrinter, DWORD Error, HWND hWnd, LPWSTR pText, LPWSTR pCaption, DWORD dwType)
struct _LOCAL_HANDLE * PLOCAL_HANDLE
static const DWORD dwTransmissionRetryTimeout
struct _PRINTER_INFO_1W PRINTER_INFO_1W
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
BOOL InsertElementSkiplist(PSKIPLIST Skiplist, PVOID Element)
PLOCAL_PRINT_MONITOR pPrintMonitor
static void _LocalGetPrinterLevel2(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_2W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
#define ERROR_SPL_NO_STARTDOC
static void _LocalGetPrinterLevel8(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_8W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
static const DWORD dwDeviceNotSelectedTimeout
PLOCAL_PRINT_PROCESSOR pPrintProcessor
PWSTR AllocAndRegQueryWSZ(HKEY hKey, PCWSTR pwszValueName)
struct _PRINTER_INFO_2W PRINTER_INFO_2W
static DWORD dwPrinterInfo1Offsets[]
static int WINAPI _PrinterListCompareRoutine(PVOID FirstStruct, PVOID SecondStruct)
static DWORD dwPrinterInfo5Offsets[]
DWORD GetJobFilePath(PCWSTR pwszExtension, DWORD dwJobID, PWSTR pwszOutput)
static const PLocalGetPrinterLevelFunc pfnGetPrinterLevels[]
BOOL WINAPI LocalClosePrinter(HANDLE hPrinter)
struct _PRINTER_INFO_1W * PPRINTER_INFO_1W
void(* PLocalGetPrinterLevelFunc)(PLOCAL_PRINTER, PVOID, PBYTE *, PDWORD, DWORD, PCWSTR)
static const WCHAR wszEmpty[]
#define PRINTER_ENUM_REMOTE
_Must_inspect_result_ _In_ ULONG Flags
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
_IRQL_requires_same_ _In_ PVOID _In_ PVOID SecondStruct
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
struct _PRINTER_INFO_3 PRINTER_INFO_3
#define PRINTER_ENUM_NAME
struct _SKIPLIST_NODE * Next[SKIPLIST_LEVELS]
BOOL FindDatatype(const PLOCAL_PRINT_PROCESSOR pPrintProcessor, PCWSTR pwszDatatype)
#define PRINTER_ENUM_LOCAL
static DWORD dwPrinterInfo4Offsets[]
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
void(WINAPI * PSKIPLIST_FREE_ROUTINE)(PVOID)
static void _LocalGetPrinterLevel4(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_4W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
struct _PRINTER_INFO_5W PRINTER_INFO_5W
PWSTR pwszDefaultDatatype
PLOCAL_PORT FindPort(PCWSTR pwszName)
#define PRINTER_ENUM_ICON8
_IRQL_requires_same_ _In_ PVOID FirstStruct
static void _LocalCloseXcvHandle(PLOCAL_XCV_HANDLE pXcvHandle)
static const WCHAR Cleanup[]
struct _SECURITY_DESCRIPTOR SECURITY_DESCRIPTOR
#define ERROR_INVALID_PRINTER_NAME
PDEVMODEW pDefaultDevMode
DWORD WINAPI CreateJob(PLOCAL_PRINTER_HANDLE pPrinterHandle)
struct _LOCAL_PRINTER * PLOCAL_PRINTER
struct _PRINTER_INFO_4W PRINTER_INFO_4W
BOOL WINAPI LocalOpenPrinter(PWSTR lpPrinterName, HANDLE *phPrinter, PPRINTER_DEFAULTSW pDefault)
struct _PRINTER_INFO_STRESS PRINTER_INFO_STRESS
PVOID LookupElementSkiplist(PSKIPLIST Skiplist, PVOID Element, PDWORD ElementIndex)
#define MAX_COMPUTERNAME_LENGTH
static void _LocalClosePrinterHandle(PLOCAL_PRINTER_HANDLE pPrinterHandle)
BOOL WINAPI LocalEndDocPrinter(HANDLE hPrinter)
BOOL WINAPI LocalEndPagePrinter(HANDLE hPrinter)
DWORD WINAPI LocalStartDocPrinter(HANDLE hPrinter, DWORD Level, PBYTE pDocInfo)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_In_ DWORD _Out_ PDWORD pcbNeeded
static DWORD _LocalOpenPrinterHandle(PWSTR pwszPrinterName, PWSTR pwszJobParameter, PHANDLE phPrinter, PPRINTER_DEFAULTSW pDefault)
#define IS_VALID_JOB_ID(ID)
PDEVMODEW DuplicateDevMode(PDEVMODEW pInput)
#define FIELD_OFFSET(t, f)
VOID WINAPI GetSystemInfo(IN LPSYSTEM_INFO lpSystemInfo)
#define ReadFile(a, b, c, d, e)
static void _LocalGetPrinterLevel3(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_3 *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
WORD wProcessorArchitecture
BOOL WINAPI DllFreeSplStr(PWSTR pwszString)
struct _PRINTER_INFO_7W PRINTER_INFO_7W
BOOL WINAPI LocalReadPrinter(HANDLE hPrinter, PVOID pBuf, DWORD cbBuf, PDWORD pNoBytesRead)
static void _LocalGetPrinterLevel0(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_STRESS *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
PLOCAL_PRINT_PROCESSOR pPrintProcessor
DWORD dwNumberOfProcessors
struct _DOC_INFO_1W * PDOC_INFO_1W
static DWORD _DumpLevel1PrintProviderInformation(PBYTE pPrinterEnum, DWORD cbBuf, PDWORD pcbNeeded, PDWORD pcReturned)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
struct _MONITOR2 * PMONITOR2
#define ERROR_INVALID_NAME
struct _LOCAL_PRINTER_HANDLE * PLOCAL_PRINTER_HANDLE
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
static DWORD _LocalOpenXcvHandle(PWSTR pwszParameter, PHANDLE phPrinter)
PVOID WINAPI DllAllocSplMem(DWORD dwBytes)
PLOCAL_PRINT_MONITOR FindPrintMonitor(PCWSTR pwszName)
static DWORD _LocalOpenPortHandle(PWSTR pwszPortName, PHANDLE phPrinter)
#define ERROR_INVALID_LEVEL
PLOCAL_PRINT_PROCESSOR FindPrintProcessor(PCWSTR pwszName)
struct _MONITOREX * LPMONITOREX
struct _PRINTER_INFO_8W PRINTER_INFO_8W
static DWORD _LocalEnumPrintersCheckName(DWORD Flags, PCWSTR Name, PWSTR pwszComputerName, PDWORD pcchComputerName)
VOID BroadcastChange(PLOCAL_HANDLE pHandle)
enum _LOCAL_HANDLE::@4890 HandleType
#define RegCloseKey(hKey)
static void _LocalGetPrinterLevel5(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_5W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
BOOL WINAPI LocalStartPagePrinter(HANDLE hPrinter)
static void _LocalGetPrinterLevel1(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_1W *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)
#define ERROR_INSUFFICIENT_BUFFER
BOOL WINAPI LocalWritePrinter(HANDLE hPrinter, PVOID pBuf, DWORD cbBuf, PDWORD pcWritten)
static void _LocalGetPrinterLevel6(PLOCAL_PRINTER pPrinter, PPRINTER_INFO_6 *ppPrinterInfo, PBYTE *ppPrinterInfoEnd, PDWORD pcbNeeded, DWORD cchComputerName, PCWSTR wszComputerName)