diff --git a/reactos/win32ss/printing/base/winspool/printers.c b/reactos/win32ss/printing/base/winspool/printers.c index 53b113f8370..5b95cbc47da 100644 --- a/reactos/win32ss/printing/base/winspool/printers.c +++ b/reactos/win32ss/printing/base/winspool/printers.c @@ -817,7 +817,7 @@ SetDefaultPrinterW(LPCWSTR pszPrinter) dwErrorCode = (DWORD)RegQueryValueExW(hDevicesKey, pszPrinter, NULL, NULL, NULL, &cbPrinterValueData); if (dwErrorCode == ERROR_FILE_NOT_FOUND) { - // The caller gave us an invalid printer name, return with ERROR_FILE_NOT_FOUND. + dwErrorCode = ERROR_INVALID_PRINTER_NAME; goto Cleanup; } else if (dwErrorCode != ERROR_SUCCESS) diff --git a/rostests/apitests/winspool/GetDefaultPrinter.c b/rostests/apitests/winspool/GetDefaultPrinter.c index 1559913931d..381e34416ef 100644 --- a/rostests/apitests/winspool/GetDefaultPrinter.c +++ b/rostests/apitests/winspool/GetDefaultPrinter.c @@ -45,5 +45,10 @@ START_TEST(GetDefaultPrinter) ok(SetDefaultPrinterW(pwszDefaultPrinter), "SetDefaultPrinterW returns FALSE!\n"); ok(GetLastError() == ERROR_SUCCESS, "SetDefaultPrinterW returns error %lu!\n", GetLastError()); + // SetDefaultPrinterW with an invalid printer name needs to fail with ERROR_INVALID_PRINTER_NAME. + SetLastError(0xDEADBEEF); + ok(!SetDefaultPrinterW(L"INVALID PRINTER NAME!!!"), "SetDefaultPrinterW returns TRUE!\n"); + ok(GetLastError() == ERROR_INVALID_PRINTER_NAME, "SetDefaultPrinterW returns error %lu!\n", GetLastError()); + HeapFree(GetProcessHeap(), 0, pwszDefaultPrinter); }