winspool: Move DeleteMonitorW to the backend.
This commit is contained in:
parent
ee1cca5187
commit
f9a18b8fd7
|
@ -696,6 +696,65 @@ static BOOL WINAPI fpAddPrinterDriverEx(LPWSTR pName, DWORD level, LPBYTE pDrive
|
||||||
|
|
||||||
return myAddPrinterDriverEx(level, pDriverInfo, dwFileCopyFlags, TRUE);
|
return myAddPrinterDriverEx(level, pDriverInfo, dwFileCopyFlags, TRUE);
|
||||||
}
|
}
|
||||||
|
/******************************************************************
|
||||||
|
* fpDeleteMonitor [exported through PRINTPROVIDOR]
|
||||||
|
*
|
||||||
|
* Delete a specific Printmonitor from a Printing-Environment
|
||||||
|
*
|
||||||
|
* PARAMS
|
||||||
|
* pName [I] Servername or NULL (local Computer)
|
||||||
|
* pEnvironment [I] Printing-Environment of the Monitor or NULL (Default)
|
||||||
|
* pMonitorName [I] Name of the Monitor, that should be deleted
|
||||||
|
*
|
||||||
|
* RETURNS
|
||||||
|
* Success: TRUE
|
||||||
|
* Failure: FALSE
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* pEnvironment is ignored in Windows for the local Computer.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL WINAPI fpDeleteMonitor(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorName)
|
||||||
|
{
|
||||||
|
HKEY hroot = NULL;
|
||||||
|
LONG lres;
|
||||||
|
|
||||||
|
TRACE("(%s, %s, %s)\n",debugstr_w(pName),debugstr_w(pEnvironment),
|
||||||
|
debugstr_w(pMonitorName));
|
||||||
|
|
||||||
|
lres = copy_servername_from_name(pName, NULL);
|
||||||
|
if (lres) {
|
||||||
|
FIXME("server %s not supported\n", debugstr_w(pName));
|
||||||
|
SetLastError(ERROR_INVALID_NAME);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* pEnvironment is ignored in Windows for the local Computer */
|
||||||
|
if (!pMonitorName || !pMonitorName[0]) {
|
||||||
|
TRACE("pMonitorName %s is invalid\n", debugstr_w(pMonitorName));
|
||||||
|
SetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(RegCreateKeyW(HKEY_LOCAL_MACHINE, monitorsW, &hroot) != ERROR_SUCCESS) {
|
||||||
|
ERR("unable to create key %s\n", debugstr_w(monitorsW));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(RegDeleteTreeW(hroot, pMonitorName) == ERROR_SUCCESS) {
|
||||||
|
TRACE("%s deleted\n", debugstr_w(pMonitorName));
|
||||||
|
RegCloseKey(hroot);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRACE("%s does not exist\n", debugstr_w(pMonitorName));
|
||||||
|
RegCloseKey(hroot);
|
||||||
|
|
||||||
|
/* NT: ERROR_UNKNOWN_PRINT_MONITOR (3000), 9x: ERROR_INVALID_PARAMETER (87) */
|
||||||
|
SetLastError(ERROR_UNKNOWN_PRINT_MONITOR);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* fpEnumMonitors [exported through PRINTPROVIDOR]
|
* fpEnumMonitors [exported through PRINTPROVIDOR]
|
||||||
|
@ -821,7 +880,7 @@ static const PRINTPROVIDOR * get_backend(void)
|
||||||
NULL, /* fpDeletePrinterConnection */
|
NULL, /* fpDeletePrinterConnection */
|
||||||
NULL, /* fpPrinterMessageBox */
|
NULL, /* fpPrinterMessageBox */
|
||||||
NULL, /* fpAddMonitor */
|
NULL, /* fpAddMonitor */
|
||||||
NULL, /* fpDeleteMonitor */
|
fpDeleteMonitor,
|
||||||
NULL, /* fpResetPrinter */
|
NULL, /* fpResetPrinter */
|
||||||
NULL, /* fpGetPrinterDriverEx */
|
NULL, /* fpGetPrinterDriverEx */
|
||||||
NULL, /* fpFindFirstPrinterChangeNotification */
|
NULL, /* fpFindFirstPrinterChangeNotification */
|
||||||
|
|
|
@ -2441,47 +2441,18 @@ BOOL WINAPI DeleteMonitorA (LPSTR pName, LPSTR pEnvironment, LPSTR pMonitorName)
|
||||||
* pEnvironment is ignored in Windows for the local Computer.
|
* pEnvironment is ignored in Windows for the local Computer.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
BOOL WINAPI DeleteMonitorW(LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorName)
|
||||||
BOOL WINAPI DeleteMonitorW (LPWSTR pName, LPWSTR pEnvironment, LPWSTR pMonitorName)
|
|
||||||
{
|
{
|
||||||
HKEY hroot = NULL;
|
|
||||||
|
|
||||||
TRACE("(%s, %s, %s)\n",debugstr_w(pName),debugstr_w(pEnvironment),
|
TRACE("(%s, %s, %s)\n",debugstr_w(pName),debugstr_w(pEnvironment),
|
||||||
debugstr_w(pMonitorName));
|
debugstr_w(pMonitorName));
|
||||||
|
|
||||||
if (pName && (pName[0])) {
|
if ((backend == NULL) && !load_backend()) return FALSE;
|
||||||
FIXME("for server %s not implemented\n", debugstr_w(pName));
|
|
||||||
SetLastError(ERROR_ACCESS_DENIED);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* pEnvironment is ignored in Windows for the local Computer */
|
return backend->fpDeleteMonitor(pName, pEnvironment, pMonitorName);
|
||||||
|
|
||||||
if (!pMonitorName || !pMonitorName[0]) {
|
|
||||||
WARN("pMonitorName %s is invalid\n", debugstr_w(pMonitorName));
|
|
||||||
SetLastError(ERROR_INVALID_PARAMETER);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(RegCreateKeyW(HKEY_LOCAL_MACHINE, MonitorsW, &hroot) != ERROR_SUCCESS) {
|
|
||||||
ERR("unable to create key %s\n", debugstr_w(MonitorsW));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(RegDeleteTreeW(hroot, pMonitorName) == ERROR_SUCCESS) {
|
|
||||||
TRACE("monitor %s deleted\n", debugstr_w(pMonitorName));
|
|
||||||
RegCloseKey(hroot);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
WARN("monitor %s does not exist\n", debugstr_w(pMonitorName));
|
|
||||||
RegCloseKey(hroot);
|
|
||||||
|
|
||||||
/* NT: ERROR_UNKNOWN_PRINT_MONITOR (3000), 9x: ERROR_INVALID_PARAMETER (87) */
|
|
||||||
SetLastError(ERROR_UNKNOWN_PRINT_MONITOR);
|
|
||||||
return (FALSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* DeletePortA [WINSPOOL.@]
|
* DeletePortA [WINSPOOL.@]
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue