Implemented AddPrinterA, AddPrinterDriverA and GetPrinterDriverDirectory
Moved some 16bit GDI function declarations from winspool.h -> wingdi16.h
This commit is contained in:
parent
338d3b2d1b
commit
ee2d9d5849
|
@ -14,6 +14,7 @@
|
|||
#include "winerror.h"
|
||||
#include "winreg.h"
|
||||
#include "debugtools.h"
|
||||
#include "heap.h"
|
||||
|
||||
DEFAULT_DEBUG_CHANNEL(winspool)
|
||||
|
||||
|
@ -44,7 +45,10 @@ static OPENEDPRINTERA OpenedPrinterTableA[NUM_PRINTER_MAX] =
|
|||
{NULL, -1, NULL}
|
||||
};
|
||||
|
||||
static char Printers[] = "System\\CurrentControlSet\\Control\\Print\\Printers\\";
|
||||
static char Printers[] =
|
||||
"System\\CurrentControlSet\\control\\Print\\Printers\\";
|
||||
static char Drivers[] =
|
||||
"System\\CurrentControlSet\\control\\Print\\Environments\\Wine\\Drivers\\";
|
||||
|
||||
|
||||
/******************************************************************
|
||||
|
@ -646,7 +650,7 @@ BOOL WINAPI EnumPrintersA(
|
|||
|
||||
/* Enter critical section to prevent AddPrinters() et al. to
|
||||
* modify whilst we're reading in the registry
|
||||
*/
|
||||
*/
|
||||
InitializeCriticalSection(&PRINT32_RegistryBlocker);
|
||||
EnterCriticalSection(&PRINT32_RegistryBlocker);
|
||||
|
||||
|
@ -894,8 +898,100 @@ BOOL WINAPI AddJobW(HANDLE hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
|
|||
*/
|
||||
HANDLE WINAPI AddPrinterA(LPSTR pName, DWORD Level, LPBYTE pPrinter)
|
||||
{
|
||||
FIXME("(%s,%ld,%p): stub\n", pName, Level, pPrinter);
|
||||
return 0;
|
||||
PRINTER_INFO_2A *pi = (PRINTER_INFO_2A *) pPrinter;
|
||||
|
||||
HANDLE retval;
|
||||
HKEY hkeyPrinter, hkeyPrinters, hkeyDriver, hkeyDrivers;
|
||||
|
||||
TRACE("(%s,%ld,%p)\n", pName, Level, pPrinter);
|
||||
|
||||
if(pName != NULL) {
|
||||
FIXME("pName = `%s' - unsupported\n", pName);
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if(Level != 2) {
|
||||
WARN("Level = %ld\n", Level);
|
||||
SetLastError(ERROR_INVALID_LEVEL);
|
||||
return 0;
|
||||
}
|
||||
if(!pPrinter) {
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
if(RegCreateKeyA(HKEY_LOCAL_MACHINE, Printers, &hkeyPrinters) !=
|
||||
ERROR_SUCCESS) {
|
||||
ERR("Can't create Printers key\n");
|
||||
return 0;
|
||||
}
|
||||
if(RegOpenKeyA(hkeyPrinters, pi->pPrinterName, &hkeyPrinter) ==
|
||||
ERROR_SUCCESS) {
|
||||
SetLastError(ERROR_PRINTER_ALREADY_EXISTS);
|
||||
RegCloseKey(hkeyPrinter);
|
||||
RegCloseKey(hkeyPrinters);
|
||||
return 0;
|
||||
}
|
||||
if(RegCreateKeyA(HKEY_LOCAL_MACHINE, Drivers, &hkeyDrivers) !=
|
||||
ERROR_SUCCESS) {
|
||||
ERR("Can't create Drivers key\n");
|
||||
RegCloseKey(hkeyPrinters);
|
||||
return 0;
|
||||
}
|
||||
if(RegOpenKeyA(hkeyDrivers, pi->pDriverName, &hkeyDriver) !=
|
||||
ERROR_SUCCESS) {
|
||||
WARN("Can't find driver `%s'\n", pi->pDriverName);
|
||||
RegCloseKey(hkeyPrinters);
|
||||
RegCloseKey(hkeyDrivers);
|
||||
SetLastError(ERROR_UNKNOWN_PRINTER_DRIVER);
|
||||
return 0;
|
||||
}
|
||||
RegCloseKey(hkeyDriver);
|
||||
RegCloseKey(hkeyDrivers);
|
||||
if(strcasecmp(pi->pPrintProcessor, "WinPrint")) { /* FIXME */
|
||||
WARN("Can't find processor `%s'\n", pi->pPrintProcessor);
|
||||
SetLastError(ERROR_UNKNOWN_PRINTPROCESSOR);
|
||||
RegCloseKey(hkeyPrinters);
|
||||
return 0;
|
||||
}
|
||||
if(RegCreateKeyA(hkeyPrinters, pi->pPrinterName, &hkeyPrinter) !=
|
||||
ERROR_SUCCESS) {
|
||||
WARN("Can't create printer `%s'\n", pi->pPrinterName);
|
||||
SetLastError(ERROR_INVALID_PRINTER_NAME);
|
||||
RegCloseKey(hkeyPrinters);
|
||||
return 0;
|
||||
}
|
||||
RegSetValueExA(hkeyPrinter, "Attributes", 0, REG_DWORD,
|
||||
(LPSTR)&pi->Attributes, sizeof(DWORD));
|
||||
RegSetValueExA(hkeyPrinter, "Default DevMode", 0, REG_BINARY,
|
||||
(LPSTR)&pi->pDevMode,
|
||||
pi->pDevMode ? pi->pDevMode->dmSize : 0);
|
||||
RegSetValueExA(hkeyPrinter, "Description", 0, REG_SZ, pi->pComment, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Location", 0, REG_SZ, pi->pLocation, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Name", 0, REG_SZ, pi->pPrinterName, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Parameters", 0, REG_SZ, pi->pParameters, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Port", 0, REG_SZ, pi->pPortName, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Print Processor", 0, REG_SZ,
|
||||
pi->pPrintProcessor, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Printer Driver", 0, REG_SZ, pi->pDriverName,
|
||||
0);
|
||||
RegSetValueExA(hkeyPrinter, "Priority", 0, REG_DWORD,
|
||||
(LPSTR)&pi->Priority, sizeof(DWORD));
|
||||
RegSetValueExA(hkeyPrinter, "Separator File", 0, REG_SZ, pi->pSepFile, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Share Name", 0, REG_SZ, pi->pShareName, 0);
|
||||
RegSetValueExA(hkeyPrinter, "Start Time", 0, REG_DWORD,
|
||||
(LPSTR)&pi->StartTime, sizeof(DWORD));
|
||||
RegSetValueExA(hkeyPrinter, "Status", 0, REG_DWORD,
|
||||
(LPSTR)&pi->Status, sizeof(DWORD));
|
||||
RegSetValueExA(hkeyPrinter, "Until Time", 0, REG_DWORD,
|
||||
(LPSTR)&pi->UntilTime, sizeof(DWORD));
|
||||
|
||||
RegCloseKey(hkeyPrinter);
|
||||
RegCloseKey(hkeyPrinters);
|
||||
if(!OpenPrinterA(pi->pPrinterName, &retval, NULL)) {
|
||||
ERR("OpenPrinter failing\n");
|
||||
return 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -1104,11 +1200,27 @@ BOOL WINAPI GetPrinterW(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
|
|||
* GetPrinterDriver32A [WINSPOOL.190]
|
||||
*/
|
||||
BOOL WINAPI GetPrinterDriverA(HANDLE hPrinter, LPSTR pEnvironment,
|
||||
DWORD Level, LPBYTE pDriverInfo,
|
||||
DWORD cbBuf, LPDWORD pcbNeeded)
|
||||
DWORD Level, LPBYTE pDriverInfo,
|
||||
DWORD cbBuf, LPDWORD pcbNeeded)
|
||||
{
|
||||
OPENEDPRINTERA *lpOpenedPrinter;
|
||||
LPSTR lpName;
|
||||
|
||||
FIXME("(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter,pEnvironment,
|
||||
Level,pDriverInfo,cbBuf, pcbNeeded);
|
||||
|
||||
lpOpenedPrinter = WINSPOOL_GetOpenedPrinterA(hPrinter);
|
||||
if(!lpOpenedPrinter) {
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
lpName = lpOpenedPrinter->lpsPrinterName;
|
||||
if(pEnvironment) {
|
||||
FIXME("pEnvironment = `%s'\n", pEnvironment);
|
||||
SetLastError(ERROR_INVALID_ENVIRONMENT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -1123,14 +1235,150 @@ BOOL WINAPI GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment,
|
|||
Level,pDriverInfo,cbBuf, pcbNeeded);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* GetPrinterDriverDirectoryA [WINSPOOL.191]
|
||||
*/
|
||||
BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR pName, LPSTR pEnvironment,
|
||||
DWORD Level, LPBYTE pDriverDirectory,
|
||||
DWORD cbBuf, LPDWORD pcbNeeded)
|
||||
{
|
||||
DWORD needed;
|
||||
|
||||
TRACE("(%s, %s, %ld, %p, %ld, %p)\n", pName, pEnvironment, Level,
|
||||
pDriverDirectory, cbBuf, pcbNeeded);
|
||||
if(pName != NULL) {
|
||||
FIXME("pName = `%s' - unsupported\n", pName);
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if(pEnvironment != NULL) {
|
||||
FIXME("pEnvironment = `%s' - unsupported\n", pEnvironment);
|
||||
SetLastError(ERROR_INVALID_ENVIRONMENT);
|
||||
return FALSE;
|
||||
}
|
||||
if(Level != 1) /* win95 ignores this so we just carry on */
|
||||
WARN("Level = %ld - assuming 1\n", Level);
|
||||
|
||||
/* FIXME should read from registry */
|
||||
needed = GetSystemDirectoryA(pDriverDirectory, cbBuf);
|
||||
needed++;
|
||||
if(pcbNeeded)
|
||||
*pcbNeeded = needed;
|
||||
if(needed > cbBuf) {
|
||||
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* GetPrinterDriverDirectoryW [WINSPOOL.192]
|
||||
*/
|
||||
BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR pName, LPWSTR pEnvironment,
|
||||
DWORD Level, LPBYTE pDriverDirectory,
|
||||
DWORD cbBuf, LPDWORD pcbNeeded)
|
||||
{
|
||||
LPSTR pNameA = NULL, pEnvironmentA = NULL;
|
||||
BOOL ret;
|
||||
|
||||
if(pName)
|
||||
pNameA = HEAP_strdupWtoA( GetProcessHeap(), 0, pName );
|
||||
if(pEnvironment)
|
||||
pEnvironmentA = HEAP_strdupWtoA( GetProcessHeap(), 0, pEnvironment );
|
||||
ret = GetPrinterDriverDirectoryA( pNameA, pEnvironmentA, Level,
|
||||
pDriverDirectory, cbBuf, pcbNeeded );
|
||||
if(pNameA)
|
||||
HeapFree( GetProcessHeap(), 0, pNameA );
|
||||
if(pEnvironmentA)
|
||||
HeapFree( GetProcessHeap(), 0, pEnvironment );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* AddPrinterDriver32A [WINSPOOL.120]
|
||||
*/
|
||||
BOOL WINAPI AddPrinterDriverA(LPSTR printerName,DWORD level,
|
||||
LPBYTE pDriverInfo)
|
||||
BOOL WINAPI AddPrinterDriverA(LPSTR pName, DWORD level, LPBYTE pDriverInfo)
|
||||
{
|
||||
FIXME("(%s,%ld,%p): stub\n",printerName,level,pDriverInfo);
|
||||
return FALSE;
|
||||
DRIVER_INFO_3A di3;
|
||||
HKEY hkeyDrivers, hkeyName;
|
||||
|
||||
TRACE("(%s,%ld,%p)\n",pName,level,pDriverInfo);
|
||||
|
||||
if(level != 2 && level != 3) {
|
||||
SetLastError(ERROR_INVALID_LEVEL);
|
||||
return FALSE;
|
||||
}
|
||||
if(pName != NULL) {
|
||||
FIXME("pName= `%s' - unsupported\n", pName);
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if(!pDriverInfo) {
|
||||
WARN("pDriverInfo == NULL");
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(level == 3)
|
||||
di3 = *(DRIVER_INFO_3A *)pDriverInfo;
|
||||
else {
|
||||
memset(&di3, 0, sizeof(di3));
|
||||
*(DRIVER_INFO_2A *)&di3 = *(DRIVER_INFO_2A *)pDriverInfo;
|
||||
}
|
||||
|
||||
if(!di3.pName || !di3.pDriverPath || !di3.pConfigFile ||
|
||||
!di3.pDataFile) {
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
if(!di3.pDefaultDataType) di3.pDefaultDataType = "";
|
||||
if(!di3.pDependentFiles) di3.pDependentFiles = "\0";
|
||||
if(!di3.pHelpFile) di3.pHelpFile = "";
|
||||
if(!di3.pMonitorName) di3.pMonitorName = "";
|
||||
|
||||
if(di3.pEnvironment) {
|
||||
FIXME("pEnvironment = `%s'\n", di3.pEnvironment);
|
||||
SetLastError(ERROR_INVALID_ENVIRONMENT);
|
||||
return FALSE;
|
||||
}
|
||||
if(RegCreateKeyA(HKEY_LOCAL_MACHINE, Drivers, &hkeyDrivers) !=
|
||||
ERROR_SUCCESS) {
|
||||
ERR("Can't create Drivers key\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(level == 2) { /* apparently can't overwrite with level2 */
|
||||
if(RegOpenKeyA(hkeyDrivers, di3.pName, &hkeyName) == ERROR_SUCCESS) {
|
||||
RegCloseKey(hkeyName);
|
||||
RegCloseKey(hkeyDrivers);
|
||||
WARN("Trying to create existing printer driver `%s'\n", di3.pName);
|
||||
SetLastError(ERROR_PRINTER_DRIVER_ALREADY_INSTALLED);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if(RegCreateKeyA(hkeyDrivers, di3.pName, &hkeyName) != ERROR_SUCCESS) {
|
||||
RegCloseKey(hkeyDrivers);
|
||||
ERR("Can't create Name key\n");
|
||||
return FALSE;
|
||||
}
|
||||
RegSetValueExA(hkeyName, "Configuration File", 0, REG_SZ, di3.pConfigFile,
|
||||
0);
|
||||
RegSetValueExA(hkeyName, "Data File", 0, REG_SZ, di3.pDataFile, 0);
|
||||
RegSetValueExA(hkeyName, "Driver", 0, REG_SZ, di3.pDriverPath, 0);
|
||||
RegSetValueExA(hkeyName, "Version", 0, REG_DWORD, (LPSTR)&di3.cVersion,
|
||||
sizeof(DWORD));
|
||||
RegSetValueExA(hkeyName, "Datatype", 0, REG_SZ, di3.pDefaultDataType, 0);
|
||||
RegSetValueExA(hkeyName, "Dependent Files", 0, REG_MULTI_SZ,
|
||||
di3.pDependentFiles, 0);
|
||||
RegSetValueExA(hkeyName, "Help File", 0, REG_SZ, di3.pHelpFile, 0);
|
||||
RegSetValueExA(hkeyName, "Monitor", 0, REG_SZ, di3.pMonitorName, 0);
|
||||
RegCloseKey(hkeyName);
|
||||
RegCloseKey(hkeyDrivers);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
/*****************************************************************************
|
||||
* AddPrinterDriver32W [WINSPOOL.121]
|
||||
|
|
|
@ -278,6 +278,7 @@ BOOL16 WINAPI BeginPath16(HDC16);
|
|||
BOOL16 WINAPI BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD);
|
||||
BOOL16 WINAPI Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16);
|
||||
BOOL16 WINAPI CloseFigure16(HDC16);
|
||||
int WINAPI CloseJob16(HANDLE16);
|
||||
HMETAFILE16 WINAPI CloseMetaFile16(HDC16);
|
||||
INT16 WINAPI CombineRgn16(HRGN16,HRGN16,HRGN16,INT16);
|
||||
HMETAFILE16 WINAPI CopyMetaFile16(HMETAFILE16,LPCSTR);
|
||||
|
@ -314,12 +315,17 @@ BOOL16 WINAPI CreateScalableFontResource16(UINT16,LPCSTR,LPCSTR,LPCSTR);
|
|||
HBRUSH16 WINAPI CreateSolidBrush16(COLORREF);
|
||||
VOID WINAPI Death16(HDC16);
|
||||
BOOL16 WINAPI DeleteDC16(HDC16);
|
||||
int WINAPI DeleteJob16(HANDLE16,WORD);
|
||||
BOOL16 WINAPI DeleteMetaFile16(HMETAFILE16);
|
||||
BOOL16 WINAPI DeleteObject16(HGDIOBJ16);
|
||||
BOOL16 WINAPI DPtoLP16(HDC16,LPPOINT16,INT16);
|
||||
DWORD WINAPI DrvGetPrinterData16(LPSTR,LPSTR,LPDWORD,LPBYTE,int cbData,LPDWORD);
|
||||
DWORD WINAPI DrvSetPrinterData16(LPSTR,LPSTR,DWORD,LPBYTE,DWORD);
|
||||
BOOL16 WINAPI Ellipse16(HDC16,INT16,INT16,INT16,INT16);
|
||||
INT16 WINAPI EndDoc16(HDC16);
|
||||
INT16 WINAPI EndPage16(HDC16);
|
||||
BOOL16 WINAPI EndPath16(HDC16);
|
||||
int WINAPI EndSpoolPage16(HANDLE16);
|
||||
INT16 WINAPI EnumFontFamilies16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
|
||||
INT16 WINAPI EnumFontFamiliesEx16(HDC16,LPLOGFONT16,FONTENUMPROCEX16,LPARAM,DWORD);
|
||||
INT16 WINAPI EnumFonts16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM);
|
||||
|
@ -384,6 +390,7 @@ DWORD WINAPI GetRegionData16(HRGN16,DWORD,LPRGNDATA);
|
|||
INT16 WINAPI GetRelAbs16(HDC16);
|
||||
INT16 WINAPI GetRgnBox16(HRGN16,LPRECT16);
|
||||
INT16 WINAPI GetROP216(HDC16);
|
||||
DWORD WINAPI GetSpoolJob16(int,LONG);
|
||||
HGDIOBJ16 WINAPI GetStockObject16(INT16);
|
||||
INT16 WINAPI GetStretchBltMode16(HDC16);
|
||||
UINT16 WINAPI GetSystemPaletteEntries16(HDC16,UINT16,UINT16,LPPALETTEENTRY);
|
||||
|
@ -424,6 +431,7 @@ BOOL16 WINAPI OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16);
|
|||
INT16 WINAPI OffsetVisRgn16(HDC16,INT16,INT16);
|
||||
DWORD WINAPI OffsetWindowOrg16(HDC16,INT16,INT16);
|
||||
BOOL16 WINAPI OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
|
||||
HANDLE16 WINAPI OpenJob16(LPSTR,LPSTR,HDC16);
|
||||
BOOL16 WINAPI PaintRgn16(HDC16,HRGN16);
|
||||
BOOL16 WINAPI PatBlt16(HDC16,INT16,INT16,INT16,INT16,DWORD);
|
||||
HRGN16 WINAPI PathToRegion16(HDC16);
|
||||
|
@ -505,7 +513,7 @@ DWORD WINAPI SetWindowOrg16(HDC16,INT16,INT16);
|
|||
BOOL16 WINAPI SetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16);
|
||||
INT16 WINAPI StartDoc16(HDC16,const DOCINFO16*);
|
||||
INT16 WINAPI StartPage16(HDC16);
|
||||
INT16 WINAPI EndPage16(HDC16);
|
||||
int WINAPI StartSpoolPage16(HANDLE16);
|
||||
BOOL16 WINAPI StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,
|
||||
INT16,INT16,INT16,DWORD);
|
||||
INT16 WINAPI StretchDIBits16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,
|
||||
|
@ -516,6 +524,8 @@ BOOL16 WINAPI TextOut16(HDC16,INT16,INT16,LPCSTR,INT16);
|
|||
BOOL16 WINAPI UnrealizeObject16(HGDIOBJ16);
|
||||
INT16 WINAPI UpdateColors16(HDC16);
|
||||
BOOL16 WINAPI WidenPath16(HDC16);
|
||||
int WINAPI WriteDialog16(HANDLE16,LPSTR,WORD);
|
||||
int WINAPI WriteSpool16(HANDLE16,LPSTR,WORD);
|
||||
|
||||
|
||||
#endif /* __WINE_WINGDI16_H */
|
||||
|
|
|
@ -260,7 +260,17 @@ extern int WIN32_LastError;
|
|||
#define ERROR_CLASS_DOES_NOT_EXIST 1411
|
||||
#define ERROR_CLASS_HAS_WINDOWS 1412
|
||||
#define ERROR_COMMITMENT_LIMIT 1455
|
||||
#define ERROR_INVALID_PRINTER_NAME 1801
|
||||
#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 1795
|
||||
#define ERROR_UNKNOWN_PORT 1796
|
||||
#define ERROR_UNKNOWN_PRINTER_DRIVER 1797
|
||||
#define ERROR_UNKNOWN_PRINTPROCESSOR 1798
|
||||
#define ERROR_INVALID_SEPARATOR_FILE 1799
|
||||
#define ERROR_INVALID_PRIORITY 1800
|
||||
#define ERROR_INVALID_PRINTER_NAME 1801
|
||||
#define ERROR_PRINTER_ALREADY_EXISTS 1802
|
||||
#define ERROR_INVALID_PRINTER_COMMAND 1803
|
||||
#define ERROR_INVALID_DATATYPE 1804
|
||||
#define ERROR_INVALID_ENVIRONMENT 1805
|
||||
|
||||
/* HRESULT values for OLE, SHELL and other Interface stuff */
|
||||
/* the codes 4000-40ff are reserved for OLE */
|
||||
|
|
|
@ -105,6 +105,36 @@ DECL_WINELIB_TYPE_AW(DRIVER_INFO_2)
|
|||
DECL_WINELIB_TYPE_AW(PDRIVER_INFO_2)
|
||||
DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_2)
|
||||
|
||||
typedef struct _DRIVER_INFO_3A {
|
||||
DWORD cVersion;
|
||||
LPSTR pName;
|
||||
LPSTR pEnvironment;
|
||||
LPSTR pDriverPath;
|
||||
LPSTR pDataFile;
|
||||
LPSTR pConfigFile;
|
||||
LPSTR pHelpFile;
|
||||
LPSTR pDependentFiles;
|
||||
LPSTR pMonitorName;
|
||||
LPSTR pDefaultDataType;
|
||||
} DRIVER_INFO_3A, *PDRIVER_INFO_3A, *LPDRIVER_INFO_3A;
|
||||
|
||||
typedef struct _DRIVER_INFO_3W {
|
||||
DWORD cVersion;
|
||||
LPWSTR pName;
|
||||
LPWSTR pEnvironment;
|
||||
LPWSTR pDriverPath;
|
||||
LPWSTR pDataFile;
|
||||
LPWSTR pConfigFile;
|
||||
LPWSTR pHelpFile;
|
||||
LPWSTR pDependentFiles;
|
||||
LPWSTR pMonitorName;
|
||||
LPWSTR pDefaultDataType;
|
||||
} DRIVER_INFO_3W, *PDRIVER_INFO_3W, *LPDRIVER_INFO_3W;
|
||||
|
||||
DECL_WINELIB_TYPE_AW(DRIVER_INFO_3)
|
||||
DECL_WINELIB_TYPE_AW(PDRIVER_INFO_3)
|
||||
DECL_WINELIB_TYPE_AW(LPDRIVER_INFO_3)
|
||||
|
||||
typedef struct _PRINTER_INFO_1A {
|
||||
DWORD Flags;
|
||||
LPSTR pDescription;
|
||||
|
@ -219,19 +249,6 @@ DECL_WINELIB_TYPE_AW(LPPRINTER_INFO_5)
|
|||
#endif /* Status */
|
||||
|
||||
/* DECLARATIONS */
|
||||
DWORD WINAPI DrvGetPrinterData16(LPSTR lpPrinter, LPSTR lpProfile,
|
||||
LPDWORD lpType, LPBYTE lpPrinterData, int cbData, LPDWORD lpNeeded);
|
||||
DWORD WINAPI DrvSetPrinterData16(LPSTR lpPrinter, LPSTR lpProfile,
|
||||
DWORD lpType, LPBYTE lpPrinterData, DWORD dwSize);
|
||||
HANDLE16 WINAPI OpenJob16(LPSTR lpOutput, LPSTR lpTitle, HDC16 hDC);
|
||||
int WINAPI CloseJob16(HANDLE16 hJob);
|
||||
int WINAPI WriteSpool16(HANDLE16 hJob, LPSTR lpData, WORD cch);
|
||||
int WINAPI DeleteJob16(HANDLE16 hJob, WORD wNotUsed);
|
||||
int WINAPI StartSpoolPage16(HANDLE16 hJob);
|
||||
int WINAPI EndSpoolPage16(HANDLE16 hJob);
|
||||
DWORD WINAPI GetSpoolJob16(int nOption, LONG param);
|
||||
int WINAPI WriteDialog16(HANDLE16 hJob, LPSTR lpMsg, WORD cchMsg);
|
||||
|
||||
INT WINAPI DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,
|
||||
LPSTR pOutput, LPDEVMODEA pDevMode);
|
||||
INT WINAPI DeviceCapabilitiesW(LPCWSTR pDevice, LPCWSTR pPort,
|
||||
|
@ -271,6 +288,10 @@ BOOL WINAPI EnumPrintersW(DWORD dwType, LPWSTR lpszName,
|
|||
|
||||
BOOL WINAPI PrinterProperties(HWND hWnd, HANDLE hPrinter);
|
||||
|
||||
BOOL WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,LPBYTE,DWORD,LPDWORD);
|
||||
BOOL WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,LPBYTE,DWORD,LPDWORD);
|
||||
#define GetPrinterDriverDirectory WINELIB_NAME_AW(GetPrinterDriverDirectory)
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
|
|
@ -91,8 +91,8 @@ type win32
|
|||
188 stub GetPrinterDataA
|
||||
189 stub GetPrinterDataW
|
||||
190 stdcall GetPrinterDriverA(long str long ptr long ptr) GetPrinterDriverA
|
||||
191 stub GetPrinterDriverDirectoryA
|
||||
192 stub GetPrinterDriverDirectoryW
|
||||
191 stdcall GetPrinterDriverDirectoryA(str str long ptr long ptr) GetPrinterDriverDirectoryA
|
||||
192 stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr) GetPrinterDriverDirectoryW
|
||||
193 stdcall GetPrinterDriverW(long str long ptr long ptr) GetPrinterDriverW
|
||||
194 stdcall GetPrinterW(long long ptr long ptr) GetPrinterW
|
||||
195 stub InitializeDll
|
||||
|
|
Loading…
Reference in New Issue