{G|S}etPrinterData[Ex]

Huw D M Davies h.davies1 at physics.ox.ac.uk
Fri Feb 2 07:59:49 CST 2001


	Huw D M Davies <hdavies at codeweavers.com>
	Implement Set/GetPrinterData[Ex].
	Remove ordinals from winspool.drv.spec .
-- 
   Dr. Huw D M Davies              | Clarendon Laboratory
   h.davies1 at physics.ox.ac.uk      | Parks Road
   Tel: +44 1865 272390            | Oxford OX1 3PU
   Fax: +44 1865 272400            | UK
-------------- next part --------------
Index: include/winspool.h
===================================================================
RCS file: /home/wine/wine/include/winspool.h,v
retrieving revision 1.17
diff -u -r1.17 winspool.h
--- include/winspool.h	2000/07/23 13:38:08	1.17
+++ include/winspool.h	2001/02/02 13:47:27
@@ -957,11 +957,27 @@
 			     LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
 #define GetPrinterData WINELIB_NAME_AW(GetPrinterData)
 
+DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPSTR pKeyName,
+			       LPSTR pValueName, LPDWORD pType,
+			       LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPWSTR pKeyName,
+			       LPWSTR pValueName, LPDWORD pType,
+			       LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+#define GetPrinterDataEx WINELIB_NAME_AW(GetPrinterDataEx)
+
 DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
 			     LPBYTE pData, DWORD cbData);
 DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
 			     LPBYTE pData, DWORD cbData);
 #define SetPrinterData WINELIB_NAME_AW(SetPrinterData)
+
+DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPSTR pKeyName,
+			       LPSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData);
+DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPWSTR pKeyName,
+			       LPWSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData);
+#define SetPrinterDataEx WINELIB_NAME_AW(SetPrinterDataEx)
 
 DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
 HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
Index: dlls/winspool/info.c
===================================================================
RCS file: /home/wine/wine/dlls/winspool/info.c,v
retrieving revision 1.30
diff -u -r1.30 info.c
--- dlls/winspool/info.c	2001/01/09 20:52:17	1.30
+++ dlls/winspool/info.c	2001/02/02 13:47:35
@@ -73,6 +73,8 @@
 				   's','s','o','r',0};
 static WCHAR Printer_DriverW[] = {'P','r','i','n','t','e','r',' ','D','r','i',
 				  'v','e','r',0};
+static WCHAR PrinterDriverDataW[] = {'P','r','i','n','t','e','r','D','r','i',
+				     'v','e','r','D','a','t','a',0};
 static WCHAR Separator_FileW[] = {'S','e','p','a','r','a','t','o','r',' ','F',
 				  'i','l','e',0};
 static WCHAR Share_NameW[] = {'S','h','a','r','e',' ','N','a','m','e',0};
@@ -151,6 +153,34 @@
     return pOpenedPrinter;
 }
 
+/******************************************************************
+ *  WINSPOOL_GetOpenedPrinterRegKey
+ *
+ */
+static DWORD WINSPOOL_GetOpenedPrinterRegKey(HANDLE hPrinter, HKEY *phkey)
+{
+    LPOPENEDPRINTER lpOpenedPrinter = WINSPOOL_GetOpenedPrinter(hPrinter);
+    DWORD ret;
+    HKEY hkeyPrinters;
+
+    if(!lpOpenedPrinter)
+        return ERROR_INVALID_HANDLE;
+
+    if((ret = RegCreateKeyA(HKEY_LOCAL_MACHINE, Printers, &hkeyPrinters)) !=
+       ERROR_SUCCESS)
+        return ret;
+
+    if(RegOpenKeyW(hkeyPrinters, lpOpenedPrinter->lpsPrinterName, phkey)
+       != ERROR_SUCCESS) {
+        ERR("Can't find opened printer %s in registry\n",
+	    debugstr_w(lpOpenedPrinter->lpsPrinterName));
+	RegCloseKey(hkeyPrinters);
+        return ERROR_INVALID_PRINTER_NAME; /* ? */
+    }
+    RegCloseKey(hkeyPrinters);
+    return ERROR_SUCCESS;
+}
+
 /***********************************************************
  *      DEVMODEcpyAtoW
  */
@@ -2370,4 +2400,164 @@
 {
     FIXME("(%s,%ld,%p,%ld,%p,%p), stub!\n",name,level,ports,bufsize,bufneeded,bufreturned);
     return FALSE;
+}
+
+/******************************************************************************
+ *		SetPrinterDataExA   (WINSPOOL)
+ */
+DWORD WINAPI SetPrinterDataExA(HANDLE hPrinter, LPSTR pKeyName,
+			       LPSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData)
+{
+    HKEY hkeyPrinter, hkeySubkey;
+    DWORD ret;
+
+    TRACE("(%08x, %s, %s %08lx, %p, %08lx)\n", hPrinter, debugstr_a(pKeyName),
+	  debugstr_a(pValueName), Type, pData, cbData);
+
+    if((ret = WINSPOOL_GetOpenedPrinterRegKey(hPrinter, &hkeyPrinter))
+       != ERROR_SUCCESS)
+        return ret;
+
+    if((ret = RegCreateKeyA(hkeyPrinter, pKeyName, &hkeySubkey))
+       != ERROR_SUCCESS) {
+        ERR("Can't create subkey %s\n", debugstr_a(pKeyName));
+	RegCloseKey(hkeyPrinter);
+	return ret;
+    }
+    ret = RegSetValueExA(hkeySubkey, pValueName, 0, Type, pData, cbData);
+    RegCloseKey(hkeySubkey);
+    RegCloseKey(hkeyPrinter);
+    return ret;
+}
+
+/******************************************************************************
+ *		SetPrinterDataExW   (WINSPOOL)
+ */
+DWORD WINAPI SetPrinterDataExW(HANDLE hPrinter, LPWSTR pKeyName,
+			       LPWSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData)
+{
+    HKEY hkeyPrinter, hkeySubkey;
+    DWORD ret;
+
+    TRACE("(%08x, %s, %s %08lx, %p, %08lx)\n", hPrinter, debugstr_w(pKeyName),
+	  debugstr_w(pValueName), Type, pData, cbData);
+
+    if((ret = WINSPOOL_GetOpenedPrinterRegKey(hPrinter, &hkeyPrinter))
+       != ERROR_SUCCESS)
+        return ret;
+
+    if((ret = RegCreateKeyW(hkeyPrinter, pKeyName, &hkeySubkey))
+       != ERROR_SUCCESS) {
+        ERR("Can't create subkey %s\n", debugstr_w(pKeyName));
+	RegCloseKey(hkeyPrinter);
+	return ret;
+    }
+    ret = RegSetValueExW(hkeySubkey, pValueName, 0, Type, pData, cbData);
+    RegCloseKey(hkeySubkey);
+    RegCloseKey(hkeyPrinter);
+    return ret;
+}
+
+/******************************************************************************
+ *		SetPrinterDataA   (WINSPOOL)
+ */
+DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
+			       LPBYTE pData, DWORD cbData)
+{
+    return SetPrinterDataExA(hPrinter, "PrinterDriverData", pValueName, Type,
+			     pData, cbData);
+}
+
+/******************************************************************************
+ *		SetPrinterDataW   (WINSPOOL)
+ */
+DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
+			     LPBYTE pData, DWORD cbData)
+{
+    return SetPrinterDataExW(hPrinter, PrinterDriverDataW, pValueName, Type,
+			     pData, cbData);
+}
+
+/******************************************************************************
+ *		GetPrinterDataExA   (WINSPOOL)
+ */
+DWORD WINAPI GetPrinterDataExA(HANDLE hPrinter, LPSTR pKeyName,
+			       LPSTR pValueName, LPDWORD pType,
+			       LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
+{
+    HKEY hkeyPrinter, hkeySubkey;
+    DWORD ret;
+
+    TRACE("(%08x, %s, %s %p, %p, %08lx, %p)\n", hPrinter,
+	  debugstr_a(pKeyName), debugstr_a(pValueName), pType, pData, nSize,
+	  pcbNeeded);
+
+    if((ret = WINSPOOL_GetOpenedPrinterRegKey(hPrinter, &hkeyPrinter))
+       != ERROR_SUCCESS)
+        return ret;
+
+    if((ret = RegOpenKeyA(hkeyPrinter, pKeyName, &hkeySubkey))
+       != ERROR_SUCCESS) {
+        WARN("Can't open subkey %s\n", debugstr_a(pKeyName));
+	RegCloseKey(hkeyPrinter);
+	return ret;
+    }
+    *pcbNeeded = nSize;
+    ret = RegQueryValueExA(hkeySubkey, pValueName, 0, pType, pData, pcbNeeded);
+    RegCloseKey(hkeySubkey);
+    RegCloseKey(hkeyPrinter);
+    return ret;
+}
+
+/******************************************************************************
+ *		GetPrinterDataExW   (WINSPOOL)
+ */
+DWORD WINAPI GetPrinterDataExW(HANDLE hPrinter, LPWSTR pKeyName,
+			       LPWSTR pValueName, LPDWORD pType,
+			       LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
+{
+    HKEY hkeyPrinter, hkeySubkey;
+    DWORD ret;
+
+    TRACE("(%08x, %s, %s %p, %p, %08lx, %p)\n", hPrinter,
+	  debugstr_w(pKeyName), debugstr_w(pValueName), pType, pData, nSize,
+	  pcbNeeded);
+
+    if((ret = WINSPOOL_GetOpenedPrinterRegKey(hPrinter, &hkeyPrinter))
+       != ERROR_SUCCESS)
+        return ret;
+
+    if((ret = RegOpenKeyW(hkeyPrinter, pKeyName, &hkeySubkey))
+       != ERROR_SUCCESS) {
+        WARN("Can't open subkey %s\n", debugstr_w(pKeyName));
+	RegCloseKey(hkeyPrinter);
+	return ret;
+    }
+    *pcbNeeded = nSize;
+    ret = RegQueryValueExW(hkeySubkey, pValueName, 0, pType, pData, pcbNeeded);
+    RegCloseKey(hkeySubkey);
+    RegCloseKey(hkeyPrinter);
+    return ret;
+}
+
+/******************************************************************************
+ *		GetPrinterDataA   (WINSPOOL)
+ */
+DWORD WINAPI GetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, LPDWORD pType,
+			     LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
+{
+    return GetPrinterDataExA(hPrinter, "PrinterDriverData", pValueName, pType,
+			     pData, nSize, pcbNeeded);
+}
+
+/******************************************************************************
+ *		GetPrinterDataW   (WINSPOOL)
+ */
+DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
+			     LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded)
+{
+    return GetPrinterDataExW(hPrinter, PrinterDriverDataW, pValueName, pType,
+			     pData, nSize, pcbNeeded);
 }
Index: dlls/winspool/winspool.drv.spec
===================================================================
RCS file: /home/wine/wine/dlls/winspool/winspool.drv.spec,v
retrieving revision 1.8
diff -u -r1.8 winspool.drv.spec
--- dlls/winspool/winspool.drv.spec	2000/11/29 18:38:25	1.8
+++ dlls/winspool/winspool.drv.spec	2001/02/02 13:47:35
@@ -9,126 +9,130 @@
 
 debug_channels (winspool)
 
-101 stub ADVANCEDSETUPDIALOG
-102 stub AbortPrinter
-103 stdcall AddFormA(long long ptr) AddFormA
-104 stdcall AddFormW(long long ptr) AddFormW
-105 stdcall AddJobA(long long ptr long ptr) AddJobA
-106 stdcall AddJobW(long long ptr long ptr) AddJobW
-107 stdcall AddMonitorA(str long ptr) AddMonitorA
-108 stub AddMonitorW
-109 stub AddPortA
-110 stub AddPortExA
-111 stub AddPortExW
-112 stub AddPortW
-113 stub AddPrintProcessorA
-114 stub AddPrintProcessorW
-115 stub AddPrintProvidorA
-116 stub AddPrintProvidorW
-117 stdcall AddPrinterA(str long ptr) AddPrinterA
-118 stub AddPrinterConnectionA
-119 stub AddPrinterConnectionW
-120 stdcall AddPrinterDriverA(str long ptr) AddPrinterDriverA
-121 stdcall AddPrinterDriverW(wstr long ptr) AddPrinterDriverW
-122 stdcall AddPrinterW(wstr long ptr) AddPrinterW
-123 stub AdvancedDocumentPropertiesA
-124 stub AdvancedDocumentPropertiesW
-125 stub AdvancedSetupDialog
-126 stdcall ClosePrinter(long) ClosePrinter
-127 stub ConfigurePortA
-128 stub ConfigurePortW
-129 stub ConnectToPrinterDlg
-130 stub CreatePrinterIC
-131 stub DEVICECAPABILITIES
-132 stub DEVICEMODE
-133 stdcall DeleteFormA(long str) DeleteFormA
-134 stdcall DeleteFormW(long wstr) DeleteFormW
-135 stdcall DeleteMonitorA(str str str) DeleteMonitorA
-136 stub DeleteMonitorW
-137 stdcall DeletePortA(str long str) DeletePortA
-138 stub DeletePortW
-139 stub DeletePrintProcessorA
-140 stub DeletePrintProcessorW
-141 stub DeletePrintProvidorA
-142 stub DeletePrintProvidorW
-143 stdcall DeletePrinter(long) DeletePrinter
-144 stub DeletePrinterConnectionA
-145 stub DeletePrinterConnectionW
-146 stdcall DeletePrinterDriverA(str str str) DeletePrinterDriverA
-147 stub DeletePrinterDriverW
-148 stub DeletePrinterIC
-149 stub DevQueryPrint
-150 stdcall DeviceCapabilities(str str long ptr ptr) DeviceCapabilitiesA
-151 stdcall DeviceCapabilitiesA(str str long ptr ptr) DeviceCapabilitiesA
-152 stdcall DeviceCapabilitiesW(wstr wstr long wstr ptr) DeviceCapabilitiesW
-153 stub DeviceMode
-154 stub DocumentEvent
-155 stdcall DocumentPropertiesA(long long ptr ptr ptr long) DocumentPropertiesA
-156 stdcall DocumentPropertiesW(long long ptr ptr ptr long) DocumentPropertiesW
-157 stub EXTDEVICEMODE
-158 stub EndDocPrinter
-159 stub EndPagePrinter
-160 stub EnumFormsA
-161 stub EnumFormsW
-162 stdcall EnumJobsA(long long long long ptr long ptr ptr) EnumJobsA
-163 stdcall EnumJobsW(long long long long ptr long ptr ptr) EnumJobsW
-164 stub EnumMonitorsA
-165 stub EnumMonitorsW
-166 stdcall EnumPortsA(ptr long ptr ptr ptr ptr) EnumPortsA
-167 stub EnumPortsW
-168 stub EnumPrintProcessorDatatypesA
-169 stub EnumPrintProcessorDatatypesW
-170 stub EnumPrintProcessorsA
-171 stub EnumPrintProcessorsW
-172 stdcall EnumPrinterDriversA(str str long ptr long ptr ptr) EnumPrinterDriversA
-173 stdcall EnumPrinterDriversW(wstr wstr long ptr long ptr ptr) EnumPrinterDriversW
-174 stdcall EnumPrintersA(long ptr long ptr long ptr ptr) EnumPrintersA
-175 stdcall EnumPrintersW(long ptr long ptr long ptr ptr) EnumPrintersW
-176 stub ExtDeviceMode
-177 stub FindClosePrinterChangeNotification
-178 stub FindFirstPrinterChangeNotification
-179 stub FindNextPrinterChangeNotification
-180 stub FreePrinterNotifyInfo
-181 stdcall GetFormA(long str long ptr long ptr) GetFormA
-182 stdcall GetFormW(long wstr long ptr long ptr) GetFormW
-183 stub GetJobA
-184 stub GetJobW
-185 stub GetPrintProcessorDirectoryA
-186 stub GetPrintProcessorDirectoryW
-187 stdcall GetPrinterA(long long ptr long ptr) GetPrinterA
-188 stub GetPrinterDataA
-189 stub GetPrinterDataW
-190 stdcall GetPrinterDriverA(long str long ptr long ptr) GetPrinterDriverA
-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
-196 stdcall OpenPrinterA(str ptr ptr) OpenPrinterA
-197 stdcall OpenPrinterW(wstr ptr ptr) OpenPrinterW
-198 stub PlayGdiScriptOnPrinterIC
-199 stub PrinterMessageBoxA
-200 stub PrinterMessageBoxW
-201 stdcall PrinterProperties(long long) PrinterProperties
-202 stdcall ReadPrinter(long ptr long ptr) ReadPrinter
-203 stdcall ResetPrinterA(long ptr) ResetPrinterA
-204 stdcall ResetPrinterW(long ptr) ResetPrinterW
-205 stub ScheduleJob
-206 stub SetAllocFailCount
-207 stdcall SetFormA(long str long ptr) SetFormA
-208 stdcall SetFormW(long wstr long ptr) SetFormW
-209 stdcall SetJobA(long long long ptr long) SetJobA
-210 stdcall SetJobW(long long long ptr long) SetJobW
-211 stdcall SetPrinterA(long long ptr long) SetPrinterA
-212 stub SetPrinterDataA
-213 stub SetPrinterDataW
-214 stdcall SetPrinterW(long long ptr long) SetPrinterW
-215 stub SpoolerDevQueryPrintW
-216 stub SpoolerInit
-217 stub StartDocDlgA
-218 stub StartDocDlgW
-219 stub StartDocPrinterA
-220 stub StartDocPrinterW
-221 stub StartPagePrinter
-222 stub WaitForPrinterChange
-223 stdcall WritePrinter(long ptr long ptr) WritePrinter
+@ stub ADVANCEDSETUPDIALOG
+@ stub AbortPrinter
+@ stdcall AddFormA(long long ptr) AddFormA
+@ stdcall AddFormW(long long ptr) AddFormW
+@ stdcall AddJobA(long long ptr long ptr) AddJobA
+@ stdcall AddJobW(long long ptr long ptr) AddJobW
+@ stdcall AddMonitorA(str long ptr) AddMonitorA
+@ stub AddMonitorW
+@ stub AddPortA
+@ stub AddPortExA
+@ stub AddPortExW
+@ stub AddPortW
+@ stub AddPrintProcessorA
+@ stub AddPrintProcessorW
+@ stub AddPrintProvidorA
+@ stub AddPrintProvidorW
+@ stdcall AddPrinterA(str long ptr) AddPrinterA
+@ stub AddPrinterConnectionA
+@ stub AddPrinterConnectionW
+@ stdcall AddPrinterDriverA(str long ptr) AddPrinterDriverA
+@ stdcall AddPrinterDriverW(wstr long ptr) AddPrinterDriverW
+@ stdcall AddPrinterW(wstr long ptr) AddPrinterW
+@ stub AdvancedDocumentPropertiesA
+@ stub AdvancedDocumentPropertiesW
+@ stub AdvancedSetupDialog
+@ stdcall ClosePrinter(long) ClosePrinter
+@ stub ConfigurePortA
+@ stub ConfigurePortW
+@ stub ConnectToPrinterDlg
+@ stub CreatePrinterIC
+@ stub DEVICECAPABILITIES
+@ stub DEVICEMODE
+@ stdcall DeleteFormA(long str) DeleteFormA
+@ stdcall DeleteFormW(long wstr) DeleteFormW
+@ stdcall DeleteMonitorA(str str str) DeleteMonitorA
+@ stub DeleteMonitorW
+@ stdcall DeletePortA(str long str) DeletePortA
+@ stub DeletePortW
+@ stub DeletePrintProcessorA
+@ stub DeletePrintProcessorW
+@ stub DeletePrintProvidorA
+@ stub DeletePrintProvidorW
+@ stdcall DeletePrinter(long) DeletePrinter
+@ stub DeletePrinterConnectionA
+@ stub DeletePrinterConnectionW
+@ stdcall DeletePrinterDriverA(str str str) DeletePrinterDriverA
+@ stub DeletePrinterDriverW
+@ stub DeletePrinterIC
+@ stub DevQueryPrint
+@ stdcall DeviceCapabilities(str str long ptr ptr) DeviceCapabilitiesA
+@ stdcall DeviceCapabilitiesA(str str long ptr ptr) DeviceCapabilitiesA
+@ stdcall DeviceCapabilitiesW(wstr wstr long wstr ptr) DeviceCapabilitiesW
+@ stub DeviceMode
+@ stub DocumentEvent
+@ stdcall DocumentPropertiesA(long long ptr ptr ptr long) DocumentPropertiesA
+@ stdcall DocumentPropertiesW(long long ptr ptr ptr long) DocumentPropertiesW
+@ stub EXTDEVICEMODE
+@ stub EndDocPrinter
+@ stub EndPagePrinter
+@ stub EnumFormsA
+@ stub EnumFormsW
+@ stdcall EnumJobsA(long long long long ptr long ptr ptr) EnumJobsA
+@ stdcall EnumJobsW(long long long long ptr long ptr ptr) EnumJobsW
+@ stub EnumMonitorsA
+@ stub EnumMonitorsW
+@ stdcall EnumPortsA(ptr long ptr ptr ptr ptr) EnumPortsA
+@ stub EnumPortsW
+@ stub EnumPrintProcessorDatatypesA
+@ stub EnumPrintProcessorDatatypesW
+@ stub EnumPrintProcessorsA
+@ stub EnumPrintProcessorsW
+@ stdcall EnumPrinterDriversA(str str long ptr long ptr ptr) EnumPrinterDriversA
+@ stdcall EnumPrinterDriversW(wstr wstr long ptr long ptr ptr) EnumPrinterDriversW
+@ stdcall EnumPrintersA(long ptr long ptr long ptr ptr) EnumPrintersA
+@ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) EnumPrintersW
+@ stub ExtDeviceMode
+@ stub FindClosePrinterChangeNotification
+@ stub FindFirstPrinterChangeNotification
+@ stub FindNextPrinterChangeNotification
+@ stub FreePrinterNotifyInfo
+@ stdcall GetFormA(long str long ptr long ptr) GetFormA
+@ stdcall GetFormW(long wstr long ptr long ptr) GetFormW
+@ stub GetJobA
+@ stub GetJobW
+@ stub GetPrintProcessorDirectoryA
+@ stub GetPrintProcessorDirectoryW
+@ stdcall GetPrinterA(long long ptr long ptr) GetPrinterA
+@ stdcall GetPrinterDataA(long str ptr ptr long ptr) GetPrinterDataA
+@ stdcall GetPrinterDataExA(long str str ptr ptr long ptr) GetPrinterDataExA
+@ stdcall GetPrinterDataExW(long wstr wstr ptr ptr long ptr) GetPrinterDataExW
+@ stdcall GetPrinterDataW(long wstr ptr ptr long ptr) GetPrinterDataW
+@ stdcall GetPrinterDriverA(long str long ptr long ptr) GetPrinterDriverA
+@ stdcall GetPrinterDriverDirectoryA(str str long ptr long ptr) GetPrinterDriverDirectoryA
+@ stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr) GetPrinterDriverDirectoryW
+@ stdcall GetPrinterDriverW(long str long ptr long ptr) GetPrinterDriverW
+@ stdcall GetPrinterW(long long ptr long ptr) GetPrinterW
+@ stub InitializeDll
+@ stdcall OpenPrinterA(str ptr ptr) OpenPrinterA
+@ stdcall OpenPrinterW(wstr ptr ptr) OpenPrinterW
+@ stub PlayGdiScriptOnPrinterIC
+@ stub PrinterMessageBoxA
+@ stub PrinterMessageBoxW
+@ stdcall PrinterProperties(long long) PrinterProperties
+@ stdcall ReadPrinter(long ptr long ptr) ReadPrinter
+@ stdcall ResetPrinterA(long ptr) ResetPrinterA
+@ stdcall ResetPrinterW(long ptr) ResetPrinterW
+@ stub ScheduleJob
+@ stub SetAllocFailCount
+@ stdcall SetFormA(long str long ptr) SetFormA
+@ stdcall SetFormW(long wstr long ptr) SetFormW
+@ stdcall SetJobA(long long long ptr long) SetJobA
+@ stdcall SetJobW(long long long ptr long) SetJobW
+@ stdcall SetPrinterA(long long ptr long) SetPrinterA
+@ stdcall SetPrinterDataA(long str long ptr long) SetPrinterDataA
+@ stdcall SetPrinterDataExA(long str str long ptr long) SetPrinterDataExA
+@ stdcall SetPrinterDataExW(long wstr wstr long ptr long) SetPrinterDataExW
+@ stdcall SetPrinterDataW(long wstr long ptr long) SetPrinterDataW
+@ stdcall SetPrinterW(long long ptr long) SetPrinterW
+@ stub SpoolerDevQueryPrintW
+@ stub SpoolerInit
+@ stub StartDocDlgA
+@ stub StartDocDlgW
+@ stub StartDocPrinterA
+@ stub StartDocPrinterW
+@ stub StartPagePrinter
+@ stub WaitForPrinterChange
+@ stdcall WritePrinter(long ptr long ptr) WritePrinter


More information about the wine-patches mailing list