Module: wine Branch: master Commit: d10ca7d9c405a296ced9a7a41bfd325d62d073f7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d10ca7d9c405a296ced9a7a41b...
Author: Detlef Riekenberg wine.dev@web.de Date: Mon Feb 16 00:18:11 2009 +0100
spoolss: Implement EnumPorts.
---
dlls/spoolss/router.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ dlls/spoolss/spoolss.spec | 2 +- 2 files changed, 45 insertions(+), 1 deletions(-)
diff --git a/dlls/spoolss/router.c b/dlls/spoolss/router.c index 8cf02ff..f4e8e96 100644 --- a/dlls/spoolss/router.c +++ b/dlls/spoolss/router.c @@ -355,3 +355,47 @@ BOOL WINAPI EnumMonitorsW(LPWSTR pName, DWORD Level, LPBYTE pMonitors, DWORD cbB
return (res == ROUTER_SUCCESS); } + +/****************************************************************** + * EnumPortsW (spoolss.@) + * + * Enumerate available Ports + * + * PARAMS + * pName [I] Servername or NULL (local Computer) + * Level [I] Structure-Level (1 or 2) + * pPorts [O] PTR to Buffer that receives the Result + * cbBuf [I] Size of Buffer at pPorts + * pcbNeeded [O] PTR to DWORD that receives the size in Bytes used / required for pPorts + * pcReturned [O] PTR to DWORD that receives the number of Ports in pPorts + * + * RETURNS + * Success: TRUE + * Failure: FALSE and in pcbNeeded the Bytes required for pPorts, if cbBuf is too small + * + */ +BOOL WINAPI EnumPortsW(LPWSTR pName, DWORD Level, LPBYTE pPorts, DWORD cbBuf, + LPDWORD pcbNeeded, LPDWORD pcReturned) +{ + backend_t * pb; + DWORD res = ROUTER_UNKNOWN; + + TRACE("(%s, %d, %p, %d, %p, %p)\n", debugstr_w(pName), Level, pPorts, cbBuf, + pcbNeeded, pcReturned); + + if (pcbNeeded) *pcbNeeded = 0; + if (pcReturned) *pcReturned = 0; + + pb = backend_first(pName); + if (pb && pb->fpEnumPorts) + res = pb->fpEnumPorts(pName, Level, pPorts, cbBuf, pcbNeeded, pcReturned); + else + { + SetLastError(ERROR_PROC_NOT_FOUND); + } + + TRACE("got %u with %u (%u byte for %u entries)\n", res, GetLastError(), + pcbNeeded ? *pcbNeeded : 0, pcReturned ? *pcReturned : 0); + + return (res == ROUTER_SUCCESS); +} diff --git a/dlls/spoolss/spoolss.spec b/dlls/spoolss/spoolss.spec index 237bab1..2b5fc19 100644 --- a/dlls/spoolss/spoolss.spec +++ b/dlls/spoolss/spoolss.spec @@ -47,7 +47,7 @@ @ stub EnumJobsW @ stdcall EnumMonitorsW(wstr long ptr long ptr ptr) @ stub EnumPerMachineConnectionsW -@ stdcall EnumPortsW(wstr long ptr ptr ptr ptr) winspool.drv.EnumPortsW +@ stdcall EnumPortsW(wstr long ptr long ptr ptr) @ stub EnumPrintProcessorDatatypesW @ stub EnumPrintProcessorsW @ stub EnumPrinterDataExW