Implement Set/GetPrinterData[Ex].

Remove ordinals from winspool.drv.spec .
This commit is contained in:
Huw D M Davies 2001-02-12 01:26:47 +00:00 committed by Alexandre Julliard
parent ae4f72f5be
commit d2b850e8aa
3 changed files with 333 additions and 123 deletions

View File

@ -73,6 +73,8 @@ static WCHAR Print_ProcessorW[] = {'P','r','i','n','t',' ','P','r','o','c','e',
's','s','o','r',0}; 's','s','o','r',0};
static WCHAR Printer_DriverW[] = {'P','r','i','n','t','e','r',' ','D','r','i', static WCHAR Printer_DriverW[] = {'P','r','i','n','t','e','r',' ','D','r','i',
'v','e','r',0}; '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', static WCHAR Separator_FileW[] = {'S','e','p','a','r','a','t','o','r',' ','F',
'i','l','e',0}; 'i','l','e',0};
static WCHAR Share_NameW[] = {'S','h','a','r','e',' ','N','a','m','e',0}; static WCHAR Share_NameW[] = {'S','h','a','r','e',' ','N','a','m','e',0};
@ -151,6 +153,34 @@ static LPOPENEDPRINTER WINSPOOL_GetOpenedPrinter(int printerHandle)
return pOpenedPrinter; 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 * DEVMODEcpyAtoW
*/ */
@ -2371,3 +2401,163 @@ BOOL WINAPI EnumPortsA(LPSTR name,DWORD level,LPBYTE ports,DWORD bufsize,
FIXME("(%s,%ld,%p,%ld,%p,%p), stub!\n",name,level,ports,bufsize,bufneeded,bufreturned); FIXME("(%s,%ld,%p,%ld,%p,%p), stub!\n",name,level,ports,bufsize,bufneeded,bufreturned);
return FALSE; 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);
}

View File

@ -9,126 +9,130 @@ import ntdll.dll
debug_channels (winspool) debug_channels (winspool)
101 stub ADVANCEDSETUPDIALOG @ stub ADVANCEDSETUPDIALOG
102 stub AbortPrinter @ stub AbortPrinter
103 stdcall AddFormA(long long ptr) AddFormA @ stdcall AddFormA(long long ptr) AddFormA
104 stdcall AddFormW(long long ptr) AddFormW @ stdcall AddFormW(long long ptr) AddFormW
105 stdcall AddJobA(long long ptr long ptr) AddJobA @ stdcall AddJobA(long long ptr long ptr) AddJobA
106 stdcall AddJobW(long long ptr long ptr) AddJobW @ stdcall AddJobW(long long ptr long ptr) AddJobW
107 stdcall AddMonitorA(str long ptr) AddMonitorA @ stdcall AddMonitorA(str long ptr) AddMonitorA
108 stub AddMonitorW @ stub AddMonitorW
109 stub AddPortA @ stub AddPortA
110 stub AddPortExA @ stub AddPortExA
111 stub AddPortExW @ stub AddPortExW
112 stub AddPortW @ stub AddPortW
113 stub AddPrintProcessorA @ stub AddPrintProcessorA
114 stub AddPrintProcessorW @ stub AddPrintProcessorW
115 stub AddPrintProvidorA @ stub AddPrintProvidorA
116 stub AddPrintProvidorW @ stub AddPrintProvidorW
117 stdcall AddPrinterA(str long ptr) AddPrinterA @ stdcall AddPrinterA(str long ptr) AddPrinterA
118 stub AddPrinterConnectionA @ stub AddPrinterConnectionA
119 stub AddPrinterConnectionW @ stub AddPrinterConnectionW
120 stdcall AddPrinterDriverA(str long ptr) AddPrinterDriverA @ stdcall AddPrinterDriverA(str long ptr) AddPrinterDriverA
121 stdcall AddPrinterDriverW(wstr long ptr) AddPrinterDriverW @ stdcall AddPrinterDriverW(wstr long ptr) AddPrinterDriverW
122 stdcall AddPrinterW(wstr long ptr) AddPrinterW @ stdcall AddPrinterW(wstr long ptr) AddPrinterW
123 stub AdvancedDocumentPropertiesA @ stub AdvancedDocumentPropertiesA
124 stub AdvancedDocumentPropertiesW @ stub AdvancedDocumentPropertiesW
125 stub AdvancedSetupDialog @ stub AdvancedSetupDialog
126 stdcall ClosePrinter(long) ClosePrinter @ stdcall ClosePrinter(long) ClosePrinter
127 stub ConfigurePortA @ stub ConfigurePortA
128 stub ConfigurePortW @ stub ConfigurePortW
129 stub ConnectToPrinterDlg @ stub ConnectToPrinterDlg
130 stub CreatePrinterIC @ stub CreatePrinterIC
131 stub DEVICECAPABILITIES @ stub DEVICECAPABILITIES
132 stub DEVICEMODE @ stub DEVICEMODE
133 stdcall DeleteFormA(long str) DeleteFormA @ stdcall DeleteFormA(long str) DeleteFormA
134 stdcall DeleteFormW(long wstr) DeleteFormW @ stdcall DeleteFormW(long wstr) DeleteFormW
135 stdcall DeleteMonitorA(str str str) DeleteMonitorA @ stdcall DeleteMonitorA(str str str) DeleteMonitorA
136 stub DeleteMonitorW @ stub DeleteMonitorW
137 stdcall DeletePortA(str long str) DeletePortA @ stdcall DeletePortA(str long str) DeletePortA
138 stub DeletePortW @ stub DeletePortW
139 stub DeletePrintProcessorA @ stub DeletePrintProcessorA
140 stub DeletePrintProcessorW @ stub DeletePrintProcessorW
141 stub DeletePrintProvidorA @ stub DeletePrintProvidorA
142 stub DeletePrintProvidorW @ stub DeletePrintProvidorW
143 stdcall DeletePrinter(long) DeletePrinter @ stdcall DeletePrinter(long) DeletePrinter
144 stub DeletePrinterConnectionA @ stub DeletePrinterConnectionA
145 stub DeletePrinterConnectionW @ stub DeletePrinterConnectionW
146 stdcall DeletePrinterDriverA(str str str) DeletePrinterDriverA @ stdcall DeletePrinterDriverA(str str str) DeletePrinterDriverA
147 stub DeletePrinterDriverW @ stub DeletePrinterDriverW
148 stub DeletePrinterIC @ stub DeletePrinterIC
149 stub DevQueryPrint @ stub DevQueryPrint
150 stdcall DeviceCapabilities(str str long ptr ptr) DeviceCapabilitiesA @ stdcall DeviceCapabilities(str str long ptr ptr) DeviceCapabilitiesA
151 stdcall DeviceCapabilitiesA(str str long ptr ptr) DeviceCapabilitiesA @ stdcall DeviceCapabilitiesA(str str long ptr ptr) DeviceCapabilitiesA
152 stdcall DeviceCapabilitiesW(wstr wstr long wstr ptr) DeviceCapabilitiesW @ stdcall DeviceCapabilitiesW(wstr wstr long wstr ptr) DeviceCapabilitiesW
153 stub DeviceMode @ stub DeviceMode
154 stub DocumentEvent @ stub DocumentEvent
155 stdcall DocumentPropertiesA(long long ptr ptr ptr long) DocumentPropertiesA @ stdcall DocumentPropertiesA(long long ptr ptr ptr long) DocumentPropertiesA
156 stdcall DocumentPropertiesW(long long ptr ptr ptr long) DocumentPropertiesW @ stdcall DocumentPropertiesW(long long ptr ptr ptr long) DocumentPropertiesW
157 stub EXTDEVICEMODE @ stub EXTDEVICEMODE
158 stub EndDocPrinter @ stub EndDocPrinter
159 stub EndPagePrinter @ stub EndPagePrinter
160 stub EnumFormsA @ stub EnumFormsA
161 stub EnumFormsW @ stub EnumFormsW
162 stdcall EnumJobsA(long long long long ptr long ptr ptr) EnumJobsA @ stdcall EnumJobsA(long long long long ptr long ptr ptr) EnumJobsA
163 stdcall EnumJobsW(long long long long ptr long ptr ptr) EnumJobsW @ stdcall EnumJobsW(long long long long ptr long ptr ptr) EnumJobsW
164 stub EnumMonitorsA @ stub EnumMonitorsA
165 stub EnumMonitorsW @ stub EnumMonitorsW
166 stdcall EnumPortsA(ptr long ptr ptr ptr ptr) EnumPortsA @ stdcall EnumPortsA(ptr long ptr ptr ptr ptr) EnumPortsA
167 stub EnumPortsW @ stub EnumPortsW
168 stub EnumPrintProcessorDatatypesA @ stub EnumPrintProcessorDatatypesA
169 stub EnumPrintProcessorDatatypesW @ stub EnumPrintProcessorDatatypesW
170 stub EnumPrintProcessorsA @ stub EnumPrintProcessorsA
171 stub EnumPrintProcessorsW @ stub EnumPrintProcessorsW
172 stdcall EnumPrinterDriversA(str str long ptr long ptr ptr) EnumPrinterDriversA @ stdcall EnumPrinterDriversA(str str long ptr long ptr ptr) EnumPrinterDriversA
173 stdcall EnumPrinterDriversW(wstr wstr long ptr long ptr ptr) EnumPrinterDriversW @ stdcall EnumPrinterDriversW(wstr wstr long ptr long ptr ptr) EnumPrinterDriversW
174 stdcall EnumPrintersA(long ptr long ptr long ptr ptr) EnumPrintersA @ stdcall EnumPrintersA(long ptr long ptr long ptr ptr) EnumPrintersA
175 stdcall EnumPrintersW(long ptr long ptr long ptr ptr) EnumPrintersW @ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) EnumPrintersW
176 stub ExtDeviceMode @ stub ExtDeviceMode
177 stub FindClosePrinterChangeNotification @ stub FindClosePrinterChangeNotification
178 stub FindFirstPrinterChangeNotification @ stub FindFirstPrinterChangeNotification
179 stub FindNextPrinterChangeNotification @ stub FindNextPrinterChangeNotification
180 stub FreePrinterNotifyInfo @ stub FreePrinterNotifyInfo
181 stdcall GetFormA(long str long ptr long ptr) GetFormA @ stdcall GetFormA(long str long ptr long ptr) GetFormA
182 stdcall GetFormW(long wstr long ptr long ptr) GetFormW @ stdcall GetFormW(long wstr long ptr long ptr) GetFormW
183 stub GetJobA @ stub GetJobA
184 stub GetJobW @ stub GetJobW
185 stub GetPrintProcessorDirectoryA @ stub GetPrintProcessorDirectoryA
186 stub GetPrintProcessorDirectoryW @ stub GetPrintProcessorDirectoryW
187 stdcall GetPrinterA(long long ptr long ptr) GetPrinterA @ stdcall GetPrinterA(long long ptr long ptr) GetPrinterA
188 stub GetPrinterDataA @ stdcall GetPrinterDataA(long str ptr ptr long ptr) GetPrinterDataA
189 stub GetPrinterDataW @ stdcall GetPrinterDataExA(long str str ptr ptr long ptr) GetPrinterDataExA
190 stdcall GetPrinterDriverA(long str long ptr long ptr) GetPrinterDriverA @ stdcall GetPrinterDataExW(long wstr wstr ptr ptr long ptr) GetPrinterDataExW
191 stdcall GetPrinterDriverDirectoryA(str str long ptr long ptr) GetPrinterDriverDirectoryA @ stdcall GetPrinterDataW(long wstr ptr ptr long ptr) GetPrinterDataW
192 stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr) GetPrinterDriverDirectoryW @ stdcall GetPrinterDriverA(long str long ptr long ptr) GetPrinterDriverA
193 stdcall GetPrinterDriverW(long str long ptr long ptr) GetPrinterDriverW @ stdcall GetPrinterDriverDirectoryA(str str long ptr long ptr) GetPrinterDriverDirectoryA
194 stdcall GetPrinterW(long long ptr long ptr) GetPrinterW @ stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr) GetPrinterDriverDirectoryW
195 stub InitializeDll @ stdcall GetPrinterDriverW(long str long ptr long ptr) GetPrinterDriverW
196 stdcall OpenPrinterA(str ptr ptr) OpenPrinterA @ stdcall GetPrinterW(long long ptr long ptr) GetPrinterW
197 stdcall OpenPrinterW(wstr ptr ptr) OpenPrinterW @ stub InitializeDll
198 stub PlayGdiScriptOnPrinterIC @ stdcall OpenPrinterA(str ptr ptr) OpenPrinterA
199 stub PrinterMessageBoxA @ stdcall OpenPrinterW(wstr ptr ptr) OpenPrinterW
200 stub PrinterMessageBoxW @ stub PlayGdiScriptOnPrinterIC
201 stdcall PrinterProperties(long long) PrinterProperties @ stub PrinterMessageBoxA
202 stdcall ReadPrinter(long ptr long ptr) ReadPrinter @ stub PrinterMessageBoxW
203 stdcall ResetPrinterA(long ptr) ResetPrinterA @ stdcall PrinterProperties(long long) PrinterProperties
204 stdcall ResetPrinterW(long ptr) ResetPrinterW @ stdcall ReadPrinter(long ptr long ptr) ReadPrinter
205 stub ScheduleJob @ stdcall ResetPrinterA(long ptr) ResetPrinterA
206 stub SetAllocFailCount @ stdcall ResetPrinterW(long ptr) ResetPrinterW
207 stdcall SetFormA(long str long ptr) SetFormA @ stub ScheduleJob
208 stdcall SetFormW(long wstr long ptr) SetFormW @ stub SetAllocFailCount
209 stdcall SetJobA(long long long ptr long) SetJobA @ stdcall SetFormA(long str long ptr) SetFormA
210 stdcall SetJobW(long long long ptr long) SetJobW @ stdcall SetFormW(long wstr long ptr) SetFormW
211 stdcall SetPrinterA(long long ptr long) SetPrinterA @ stdcall SetJobA(long long long ptr long) SetJobA
212 stub SetPrinterDataA @ stdcall SetJobW(long long long ptr long) SetJobW
213 stub SetPrinterDataW @ stdcall SetPrinterA(long long ptr long) SetPrinterA
214 stdcall SetPrinterW(long long ptr long) SetPrinterW @ stdcall SetPrinterDataA(long str long ptr long) SetPrinterDataA
215 stub SpoolerDevQueryPrintW @ stdcall SetPrinterDataExA(long str str long ptr long) SetPrinterDataExA
216 stub SpoolerInit @ stdcall SetPrinterDataExW(long wstr wstr long ptr long) SetPrinterDataExW
217 stub StartDocDlgA @ stdcall SetPrinterDataW(long wstr long ptr long) SetPrinterDataW
218 stub StartDocDlgW @ stdcall SetPrinterW(long long ptr long) SetPrinterW
219 stub StartDocPrinterA @ stub SpoolerDevQueryPrintW
220 stub StartDocPrinterW @ stub SpoolerInit
221 stub StartPagePrinter @ stub StartDocDlgA
222 stub WaitForPrinterChange @ stub StartDocDlgW
223 stdcall WritePrinter(long ptr long ptr) WritePrinter @ stub StartDocPrinterA
@ stub StartDocPrinterW
@ stub StartPagePrinter
@ stub WaitForPrinterChange
@ stdcall WritePrinter(long ptr long ptr) WritePrinter

View File

@ -957,12 +957,28 @@ DWORD WINAPI GetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, LPDWORD pType,
LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded); LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
#define GetPrinterData WINELIB_NAME_AW(GetPrinterData) #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, DWORD WINAPI SetPrinterDataA(HANDLE hPrinter, LPSTR pValueName, DWORD Type,
LPBYTE pData, DWORD cbData); LPBYTE pData, DWORD cbData);
DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type, DWORD WINAPI SetPrinterDataW(HANDLE hPrinter, LPWSTR pValueName, DWORD Type,
LPBYTE pData, DWORD cbData); LPBYTE pData, DWORD cbData);
#define SetPrinterData WINELIB_NAME_AW(SetPrinterData) #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); DWORD WINAPI WaitForPrinterChange(HANDLE hPrinter, DWORD Flags);
HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter, HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE hPrinter,
DWORD fdwFlags, DWORD fdwFlags,