7 HRESULT INLINE
MakeStrRetFromString(LPCWSTR string
, DWORD cbLength
, STRRET
* str
)
9 str
->uType
= STRRET_WSTR
;
11 DWORD blen
= cbLength
+ sizeof(WCHAR
);
12 str
->pOleStr
= (LPWSTR
) CoTaskMemAlloc(blen
);
13 return StringCbCopyNW(str
->pOleStr
, blen
, string
, cbLength
);
16 HRESULT INLINE
MakeStrRetFromString(LPCWSTR string
, STRRET
* str
)
18 DWORD stringLength
= wcslen(string
) * sizeof(WCHAR
);
19 return MakeStrRetFromString(string
, stringLength
, str
);
22 HRESULT INLINE
MakeVariantString(VARIANT
* pv
, PCWSTR string
)
25 V_BSTR(pv
) = SysAllocString(string
);
29 HRESULT INLINE
GetFullName(PCIDLIST_ABSOLUTE pidl
, DWORD uFlags
, PWSTR strName
, DWORD cchName
)
31 CComPtr
<IShellFolder
> psfDesktop
;
35 hr
= SHGetDesktopFolder(&psfDesktop
);
36 if (FAILED_UNEXPECTEDLY(hr
))
39 hr
= psfDesktop
->GetDisplayNameOf(pidl
, uFlags
, &str
);
40 if (FAILED_UNEXPECTEDLY(hr
))
43 return StrRetToBufW(&str
, pidl
, strName
, cchName
);