mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
windows printer cleanup
This commit is contained in:
parent
67986ea298
commit
46d524cbc7
@ -249,16 +249,10 @@ static rdpPrinter* printer_win_new_printer(rdpWinPrinterDriver* win_driver, cons
|
|||||||
win_printer->printer.backend = &win_driver->driver;
|
win_printer->printer.backend = &win_driver->driver;
|
||||||
win_printer->printer.id = win_driver->id_sequence++;
|
win_printer->printer.id = win_driver->id_sequence++;
|
||||||
if (ConvertFromUnicode(CP_UTF8, 0, name, -1, &win_printer->printer.name, 0, NULL, NULL) < 1)
|
if (ConvertFromUnicode(CP_UTF8, 0, name, -1, &win_printer->printer.name, 0, NULL, NULL) < 1)
|
||||||
{
|
goto fail;
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!win_printer->printer.name)
|
if (!win_printer->printer.name)
|
||||||
{
|
goto fail;
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
win_printer->printer.is_default = is_default;
|
win_printer->printer.is_default = is_default;
|
||||||
|
|
||||||
win_printer->printer.CreatePrintJob = printer_win_create_printjob;
|
win_printer->printer.CreatePrintJob = printer_win_create_printjob;
|
||||||
@ -267,35 +261,21 @@ static rdpPrinter* printer_win_new_printer(rdpWinPrinterDriver* win_driver, cons
|
|||||||
win_printer->printer.ReleaseRef = printer_win_release_ref_printer;
|
win_printer->printer.ReleaseRef = printer_win_release_ref_printer;
|
||||||
|
|
||||||
if (!OpenPrinter(name, &(win_printer->hPrinter), NULL))
|
if (!OpenPrinter(name, &(win_printer->hPrinter), NULL))
|
||||||
{
|
goto fail;
|
||||||
free(win_printer->printer.name);
|
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* How many memory should be allocated for printer data */
|
/* How many memory should be allocated for printer data */
|
||||||
GetPrinter(win_printer->hPrinter, 2, (LPBYTE)prninfo, 0, &needed);
|
GetPrinter(win_printer->hPrinter, 2, (LPBYTE)prninfo, 0, &needed);
|
||||||
if (needed == 0)
|
if (needed == 0)
|
||||||
{
|
goto fail;
|
||||||
free(win_printer->printer.name);
|
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
prninfo = (PRINTER_INFO_2*)GlobalAlloc(GPTR, needed);
|
prninfo = (PRINTER_INFO_2*)GlobalAlloc(GPTR, needed);
|
||||||
if (!prninfo)
|
if (!prninfo)
|
||||||
{
|
goto fail;
|
||||||
free(win_printer->printer.name);
|
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!GetPrinter(win_printer->hPrinter, 2, (LPBYTE)prninfo, needed, &needed))
|
if (!GetPrinter(win_printer->hPrinter, 2, (LPBYTE)prninfo, needed, &needed))
|
||||||
{
|
{
|
||||||
GlobalFree(prninfo);
|
GlobalFree(prninfo);
|
||||||
free(win_printer->printer.name);
|
goto fail;
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (drivername)
|
if (drivername)
|
||||||
@ -304,17 +284,17 @@ static rdpPrinter* printer_win_new_printer(rdpWinPrinterDriver* win_driver, cons
|
|||||||
else
|
else
|
||||||
status = ConvertFromUnicode(CP_UTF8, 0, prninfo->pDriverName, -1,
|
status = ConvertFromUnicode(CP_UTF8, 0, prninfo->pDriverName, -1,
|
||||||
&win_printer->printer.driver, 0, NULL, NULL);
|
&win_printer->printer.driver, 0, NULL, NULL);
|
||||||
|
GlobalFree(prninfo);
|
||||||
if (!win_printer->printer.driver || (status <= 0))
|
if (!win_printer->printer.driver || (status <= 0))
|
||||||
{
|
goto fail;
|
||||||
GlobalFree(prninfo);
|
|
||||||
free(win_printer->printer.name);
|
|
||||||
free(win_printer);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
win_printer->printer.AddRef(&win_printer->printer);
|
win_printer->printer.AddRef(&win_printer->printer);
|
||||||
win_printer->printer.backend->AddRef(win_printer->printer.backend);
|
win_printer->printer.backend->AddRef(win_printer->printer.backend);
|
||||||
return &win_printer->printer;
|
return &win_printer->printer;
|
||||||
|
|
||||||
|
fail:
|
||||||
|
printer_win_free_printer(&win_printer->printer);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void printer_win_release_enum_printers(rdpPrinter** printers)
|
static void printer_win_release_enum_printers(rdpPrinter** printers)
|
||||||
|
Loading…
Reference in New Issue
Block a user