/************************************************************************** * ISF_Printers_fnGetDisplayNameOf * */ static HRESULT WINAPI ISF_Printers_fnGetDisplayNameOf (IShellFolder2 * iface, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet) { LPWSTR pszName; IGenericSFImpl *This = (IGenericSFImpl *)iface; PIDLPrinterStruct * p; TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", This, pidl, dwFlags, strRet); pdump (pidl); if (!strRet) { WARN("no strRet\n"); return E_INVALIDARG; } if (_ILIsPrinter(pidl)) { pszName = CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR)); if (!pszName) return E_OUTOFMEMORY; if (LoadStringW(shell32_hInstance, IDS_PRINTERS, pszName, MAX_PATH)) { pszName[MAX_PATH-1] = L'\0'; strRet->uType = STRRET_WSTR; strRet->u.pOleStr = pszName; return S_OK; } CoTaskMemFree(pszName); return E_FAIL; } p = _ILGetPrinterStruct(pidl); if (!p) { WARN("no printer struct\n"); return E_INVALIDARG; } strRet->u.pOleStr = SHAlloc(p->offsServer * sizeof(WCHAR)); if (!strRet->u.pOleStr) return E_OUTOFMEMORY; memcpy((LPVOID)strRet->u.pOleStr, (LPVOID)p->szName, p->offsServer * sizeof(WCHAR)); TRACE("ret %s\n", debugstr_w(strRet->u.pOleStr)); return S_OK; }
/************************************************************************** * CPrinterFolder::GetDisplayNameOf * */ HRESULT WINAPI CPrinterFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) { LPWSTR pszName; PIDLPrinterStruct * p; TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", this, pidl, dwFlags, strRet); pdump (pidl); if (!strRet) { WARN("no strRet\n"); return E_INVALIDARG; } if (!pidl->mkid.cb) { pszName = (LPWSTR)CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR)); if (!pszName) return E_OUTOFMEMORY; if (LoadStringW(shell32_hInstance, IDS_PRINTERS, pszName, MAX_PATH)) { pszName[MAX_PATH-1] = L'\0'; strRet->uType = STRRET_WSTR; strRet->pOleStr = pszName; return S_OK; } CoTaskMemFree(pszName); return E_FAIL; } p = _ILGetPrinterStruct(pidl); if (!p) { WARN("no printer struct\n"); return E_INVALIDARG; } strRet->pOleStr = (LPWSTR)SHAlloc(p->offsServer * sizeof(WCHAR)); if (!strRet->pOleStr) return E_OUTOFMEMORY; memcpy((LPVOID)strRet->pOleStr, (LPVOID)p->szName, p->offsServer * sizeof(WCHAR)); TRACE("ret %s\n", debugstr_w(strRet->pOleStr)); return S_OK; }
/************************************************************************** * CPrinterFolder::GetDisplayNameOf * */ HRESULT WINAPI CPrinterFolder::GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) { PIDLPrinterStruct * p; TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", this, pidl, dwFlags, strRet); pdump (pidl); if (!strRet) { WARN("no strRet\n"); return E_INVALIDARG; } p = _ILGetPrinterStruct(pidl); if (!p) { ERR("no printer struct\n"); return E_INVALIDARG; } return SHSetStrRet(strRet, p->szName); }