diff --git a/reactos/dll/win32/shlwapi/istream.c b/reactos/dll/win32/shlwapi/istream.c
index b82623e45fa..c5c8c06b158 100644
--- a/reactos/dll/win32/shlwapi/istream.c
+++ b/reactos/dll/win32/shlwapi/istream.c
@@ -119,13 +119,10 @@ static HRESULT WINAPI IStream_fnRead(IStream *iface, void* pv, ULONG cb, ULONG*
TRACE("(%p,%p,0x%08x,%p)\n", This, pv, cb, pcbRead);
- if (!pv)
- return STG_E_INVALIDPOINTER;
-
if (!ReadFile(This->hFile, pv, cb, &dwRead, NULL))
{
- ERR("error %d reading file\n", GetLastError());
- return HRESULT_FROM_WIN32(GetLastError());
+ WARN("error %d reading file\n", GetLastError());
+ return S_FALSE;
}
if (pcbRead)
*pcbRead = dwRead;
@@ -142,16 +139,13 @@ static HRESULT WINAPI IStream_fnWrite(IStream *iface, const void* pv, ULONG cb,
TRACE("(%p,%p,0x%08x,%p)\n", This, pv, cb, pcbWritten);
- if (!pv)
- return STG_E_INVALIDPOINTER;
-
switch (STGM_ACCESS_MODE(This->dwMode))
{
case STGM_WRITE:
case STGM_READWRITE:
break;
default:
- return E_FAIL;
+ return STG_E_ACCESSDENIED;
}
if (!WriteFile(This->hFile, pv, cb, &dwWritten, NULL))
@@ -176,7 +170,7 @@ static HRESULT WINAPI IStream_fnSeek(IStream *iface, LARGE_INTEGER dlibMove,
IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */
dwPos = SetFilePointer(This->hFile, dlibMove.u.LowPart, NULL, dwOrigin);
if( dwPos == INVALID_SET_FILE_POINTER )
- return E_FAIL;
+ return HRESULT_FROM_WIN32(GetLastError());
if (pNewPos)
{
@@ -224,7 +218,7 @@ static HRESULT WINAPI IStream_fnCopyTo(IStream *iface, IStream* pstm, ULARGE_INT
pcbWritten->QuadPart = 0;
if (!pstm)
- return STG_E_INVALIDPOINTER;
+ return S_OK;
IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */
@@ -418,9 +412,6 @@ HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode,
*lppStream = NULL;
- if (dwMode & STGM_TRANSACTED)
- return E_INVALIDARG;
-
/* Access */
switch (STGM_ACCESS_MODE(dwMode))
{
@@ -440,6 +431,9 @@ HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode,
/* Sharing */
switch (STGM_SHARE_MODE(dwMode))
{
+ case 0:
+ dwShare = FILE_SHARE_READ|FILE_SHARE_WRITE;
+ break;
case STGM_SHARE_DENY_READ:
dwShare = FILE_SHARE_WRITE;
break;
@@ -459,7 +453,7 @@ HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode,
switch(STGM_CREATE_MODE(dwMode))
{
case STGM_FAILIFTHERE:
- dwCreate = OPEN_EXISTING;
+ dwCreate = bCreate ? CREATE_NEW : OPEN_EXISTING;
break;
case STGM_CREATE:
dwCreate = CREATE_ALWAYS;
@@ -473,12 +467,7 @@ HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode,
dwAttributes, 0);
if(hFile == INVALID_HANDLE_VALUE)
- {
- HRESULT hRet = (HRESULT)GetLastError();
- if(hRet > 0)
- hRet = HRESULT_FROM_WIN32(hRet);
- return hRet;
- }
+ return HRESULT_FROM_WIN32(GetLastError());
*lppStream = IStream_Create(lpszPath, hFile, dwMode);
@@ -503,6 +492,9 @@ HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode,
if (!lpszPath || !lppStream)
return E_INVALIDARG;
+ if ((dwMode & (STGM_CONVERT|STGM_DELETEONRELEASE|STGM_TRANSACTED)) != 0)
+ return E_INVALIDARG;
+
return SHCreateStreamOnFileEx(lpszPath, dwMode, 0, FALSE, NULL, lppStream);
}
@@ -528,7 +520,8 @@ HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR lpszPath, DWORD dwMode,
TRACE("(%s,%d,%p)\n", debugstr_a(lpszPath), dwMode, lppStream);
if (!lpszPath)
- return E_INVALIDARG;
+ return HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND);
+
MultiByteToWideChar(0, 0, lpszPath, -1, szPath, MAX_PATH);
return SHCreateStreamOnFileW(szPath, dwMode, lppStream);
}
diff --git a/reactos/dll/win32/shlwapi/ordinal.c b/reactos/dll/win32/shlwapi/ordinal.c
index 6aca53d535f..d1668a678f7 100644
--- a/reactos/dll/win32/shlwapi/ordinal.c
+++ b/reactos/dll/win32/shlwapi/ordinal.c
@@ -62,7 +62,7 @@ HRESULT WINAPI SHInvokeCommand(HWND,IShellFolder*,LPCITEMIDLIST,BOOL);
BOOL WINAPI SHAboutInfoW(LPWSTR,DWORD);
/*
- NOTES: Most functions exported by ordinal seem to be superflous.
+ NOTES: Most functions exported by ordinal seem to be superfluous.
The reason for these functions to be there is to provide a wrapper
for unicode functions to provide these functions on systems without
unicode functions eg. win95/win98. Since we have such functions we just
@@ -1492,11 +1492,11 @@ HRESULT WINAPI IUnknown_QueryService(IUnknown* lpUnknown, REFGUID sid, REFIID ri
*/
BOOL WINAPI SHLoadMenuPopup(HINSTANCE hInst, LPCWSTR szName)
{
- HMENU hMenu, hSubMenu;
+ HMENU hMenu;
if ((hMenu = LoadMenuW(hInst, szName)))
{
- if ((hSubMenu = GetSubMenu(hMenu, 0)))
+ if (GetSubMenu(hMenu, 0))
RemoveMenu(hMenu, 0, MF_BYPOSITION);
DestroyMenu(hMenu);
@@ -1959,7 +1959,7 @@ DWORD WINAPI SHFillRectClr(HDC hDC, LPCRECT pRect, COLORREF cRef)
/*************************************************************************
* @ [SHLWAPI.198]
*
- * Return the value asociated with a key in a map.
+ * Return the value associated with a key in a map.
*
* PARAMS
* lpKeys [I] A list of keys of length iLen
@@ -2101,7 +2101,7 @@ typedef struct
/*************************************************************************
* @ [SHLWAPI.208]
*
- * Initialize an FDSA arrary.
+ * Initialize an FDSA array.
*/
BOOL WINAPI FDSA_Initialize(DWORD block_size, DWORD inc, FDSA_info *info, void *mem,
DWORD init_blocks)
@@ -2543,7 +2543,7 @@ DWORD WINAPI SHGetRestriction(LPCWSTR lpSubKey, LPCWSTR lpSubName, LPCWSTR lpVal
* NOTES
* This function is used by the native SHRestricted function to search for the
* policy and cache it once retrieved. The current Wine implementation uses a
- * different POLICYDATA structure and implements a similar algorithme adapted to
+ * different POLICYDATA structure and implements a similar algorithm adapted to
* that structure.
*/
DWORD WINAPI SHRestrictionLookup(
@@ -3433,7 +3433,7 @@ COLORREF WINAPI ColorAdjustLuma(COLORREF cRGB, int dwLuma, BOOL bUnknown)
FIXME("Ignoring luma adjustment\n");
- /* FIXME: The ajdustment is not linear */
+ /* FIXME: The adjustment is not linear */
cRGB = ColorHLSToRGB(wH, wL, wS);
}
diff --git a/reactos/dll/win32/shlwapi/path.c b/reactos/dll/win32/shlwapi/path.c
index ae9c9918316..d0d4e93c3bc 100644
--- a/reactos/dll/win32/shlwapi/path.c
+++ b/reactos/dll/win32/shlwapi/path.c
@@ -894,7 +894,7 @@ VOID WINAPI PathRemoveBlanksW(LPWSTR lpszPath)
/*************************************************************************
* PathQuoteSpacesA [SHLWAPI.@]
*
- * Surround a path containg spaces in quotes.
+ * Surround a path containing spaces in quotes.
*
* PARAMS
* lpszPath [I/O] Path to quote
@@ -2040,7 +2040,7 @@ BOOL WINAPI PathIsContentTypeW(LPCWSTR lpszPath, LPCWSTR lpszContentType)
* Determine if a path is a file specification.
*
* PARAMS
- * lpszPath [I] Path to chack
+ * lpszPath [I] Path to check
*
* RETURNS
* TRUE If lpszPath is a file specification (i.e. Contains no directories).
@@ -2323,7 +2323,7 @@ BOOL WINAPI PathIsUNCServerShareW(LPCWSTR lpszPath)
*
* PARAMS
* lpszBuf [O] Output path
- * lpszPath [I] Path to cnonicalize
+ * lpszPath [I] Path to canonicalize
*
* RETURNS
* Success: TRUE. lpszBuf contains the output path,
@@ -3344,7 +3344,7 @@ HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath,
*
* RETURNS
* TRUE If a relative path can be formed. lpszPath contains the new path
- * FALSE If the paths are not relavtive or any parameters are invalid
+ * FALSE If the paths are not relative or any parameters are invalid
*
* NOTES
* lpszTo should be at least MAX_PATH in length.
diff --git a/reactos/dll/win32/shlwapi/reg.c b/reactos/dll/win32/shlwapi/reg.c
index 1f528834695..9239824b1a5 100644
--- a/reactos/dll/win32/shlwapi/reg.c
+++ b/reactos/dll/win32/shlwapi/reg.c
@@ -215,7 +215,7 @@ LONG WINAPI SHRegCloseUSKey(
* pszPath [I] Key name to create or open.
* samDesired [I] Wanted security access.
* hRelativeUSKey [I] Base path if pszPath is relative. NULL otherwise.
- * phNewUSKey [O] Receives a handle to the new or openened key.
+ * phNewUSKey [O] Receives a handle to the new or opened key.
* dwFlags [I] Base key under which the key should be opened.
*
* RETURNS
@@ -626,7 +626,6 @@ BOOL WINAPI SHRegGetBoolUSValueA(
BOOL fIgnoreHKCU, /* [I] TRUE=Don't check HKEY_CURRENT_USER */
BOOL fDefault) /* [I] Default value to use if pszValue is not present */
{
- LONG retvalue;
DWORD type, datalen, work;
BOOL ret = fDefault;
CHAR data[10];
@@ -636,9 +635,9 @@ BOOL WINAPI SHRegGetBoolUSValueA(
(fIgnoreHKCU) ? "Ignoring HKCU" : "Tries HKCU then HKLM");
datalen = sizeof(data)-1;
- if (!(retvalue = SHRegGetUSValueA( pszSubKey, pszValue, &type,
- data, &datalen,
- fIgnoreHKCU, 0, 0))) {
+ if (!SHRegGetUSValueA( pszSubKey, pszValue, &type,
+ data, &datalen,
+ fIgnoreHKCU, 0, 0)) {
/* process returned data via type into bool */
switch (type) {
case REG_SZ:
@@ -687,7 +686,6 @@ BOOL WINAPI SHRegGetBoolUSValueW(
static const WCHAR wTRUE[]= {'T','R','U','E','\0'};
static const WCHAR wNO[]= {'N','O','\0'};
static const WCHAR wFALSE[]={'F','A','L','S','E','\0'};
- LONG retvalue;
DWORD type, datalen, work;
BOOL ret = fDefault;
WCHAR data[10];
@@ -697,9 +695,9 @@ BOOL WINAPI SHRegGetBoolUSValueW(
(fIgnoreHKCU) ? "Ignoring HKCU" : "Tries HKCU then HKLM");
datalen = (sizeof(data)-1) * sizeof(WCHAR);
- if (!(retvalue = SHRegGetUSValueW( pszSubKey, pszValue, &type,
- data, &datalen,
- fIgnoreHKCU, 0, 0))) {
+ if (!SHRegGetUSValueW( pszSubKey, pszValue, &type,
+ data, &datalen,
+ fIgnoreHKCU, 0, 0)) {
/* process returned data via type into bool */
switch (type) {
case REG_SZ:
diff --git a/reactos/dll/win32/shlwapi/resource.h b/reactos/dll/win32/shlwapi/resource.h
index 7359ffe7c51..e0ca08c5dc6 100644
--- a/reactos/dll/win32/shlwapi/resource.h
+++ b/reactos/dll/win32/shlwapi/resource.h
@@ -25,7 +25,7 @@
#define IDS_TIME_INTERVAL_MINUTES 66
#define IDS_TIME_INTERVAL_SECONDS 67
-/* These numbers match native ID's and shouldn't be abitrarily changed */
+/* These numbers match native ID's and shouldn't be arbitrarily changed */
#define IDD_ERR_DIALOG 0x1200
#define IDS_ERR_USER_MSG 0x1201
#define IDC_ERR_DONT_SHOW 0x1202
diff --git a/reactos/dll/win32/shlwapi/shlwapi.rbuild b/reactos/dll/win32/shlwapi/shlwapi.rbuild
index a138b2993d6..cd9a166d915 100644
--- a/reactos/dll/win32/shlwapi/shlwapi.rbuild
+++ b/reactos/dll/win32/shlwapi/shlwapi.rbuild
@@ -25,6 +25,7 @@
shlwapi.rc
shlwapi.spec
wine
+ uuid
user32
gdi32
advapi32
@@ -39,7 +40,6 @@
shell32
winmm
version
- uuid
ntdll
diff --git a/reactos/dll/win32/shlwapi/shlwapi.rc b/reactos/dll/win32/shlwapi/shlwapi.rc
index 650f241926a..9dc73fdf6e7 100644
--- a/reactos/dll/win32/shlwapi/shlwapi.rc
+++ b/reactos/dll/win32/shlwapi/shlwapi.rc
@@ -25,6 +25,7 @@
#include "version.rc"
+#include "shlwapi_Da.rc"
#include "shlwapi_De.rc"
#include "shlwapi_En.rc"
#include "shlwapi_Eo.rc"
@@ -41,6 +42,7 @@
#include "shlwapi_Pt.rc"
#include "shlwapi_Ro.rc"
#include "shlwapi_Ru.rc"
+#include "shlwapi_Si.rc"
#include "shlwapi_Sv.rc"
#include "shlwapi_Tr.rc"
#include "shlwapi_Uk.rc"
diff --git a/reactos/dll/win32/shlwapi/shlwapi_Da.rc b/reactos/dll/win32/shlwapi/shlwapi_Da.rc
new file mode 100644
index 00000000000..4ed0e61999b
--- /dev/null
+++ b/reactos/dll/win32/shlwapi/shlwapi_Da.rc
@@ -0,0 +1,43 @@
+/*
+ * English resources for shlwapi
+ *
+ * Copyright 2008 Jens Albretsen
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
+
+IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Fejl!"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
+ LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
+ CHECKBOX "Vis ikke denne besked igen", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&OK" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Annuller" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Ja" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Nej" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_BYTES_FORMAT "%ld bytes"
+ IDS_TIME_INTERVAL_HOURS " hr"
+ IDS_TIME_INTERVAL_MINUTES " min"
+ IDS_TIME_INTERVAL_SECONDS " sec"
+}
diff --git a/reactos/dll/win32/shlwapi/shlwapi_Si.rc b/reactos/dll/win32/shlwapi/shlwapi_Si.rc
new file mode 100644
index 00000000000..ed5a92e787a
--- /dev/null
+++ b/reactos/dll/win32/shlwapi/shlwapi_Si.rc
@@ -0,0 +1,47 @@
+/*
+ * Slovenian resources for shlwapi
+ *
+ * Copyright 2008 Rok Mandeljc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#pragma code_page(65001)
+
+LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
+
+IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Napak!"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
+ LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
+ CHECKBOX "Tega sporočila ne &kaži več", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&V redu" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Prekliči" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Da" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Ne" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+}
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_BYTES_FORMAT "%ld bajtov"
+ IDS_TIME_INTERVAL_HOURS " ur"
+ IDS_TIME_INTERVAL_MINUTES " min"
+ IDS_TIME_INTERVAL_SECONDS " sek"
+}
+
+#pragma code_page(default)
diff --git a/reactos/dll/win32/shlwapi/shlwapi_Sv.rc b/reactos/dll/win32/shlwapi/shlwapi_Sv.rc
index 885d7bb1bad..6e13b91cae9 100644
--- a/reactos/dll/win32/shlwapi/shlwapi_Sv.rc
+++ b/reactos/dll/win32/shlwapi/shlwapi_Sv.rc
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
+LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
diff --git a/reactos/dll/win32/shlwapi/string.c b/reactos/dll/win32/shlwapi/string.c
index b2cd7f28e47..4537ac2c873 100644
--- a/reactos/dll/win32/shlwapi/string.c
+++ b/reactos/dll/win32/shlwapi/string.c
@@ -445,11 +445,11 @@ int WINAPI StrCmpW(LPCWSTR lpszStr, LPCWSTR lpszComp)
/*************************************************************************
* StrCatW [SHLWAPI.@]
*
- * Concatanate two strings.
+ * Concatenate two strings.
*
* PARAMS
* lpszStr [O] Initial string
- * lpszSrc [I] String to concatanate
+ * lpszSrc [I] String to concatenate
*
* RETURNS
* lpszStr.
diff --git a/reactos/dll/win32/shlwapi/url.c b/reactos/dll/win32/shlwapi/url.c
index ba7cdb6ee92..2593f9608a4 100644
--- a/reactos/dll/win32/shlwapi/url.c
+++ b/reactos/dll/win32/shlwapi/url.c
@@ -750,7 +750,7 @@ HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative,
}
process_case = 1;
break;
- } while(FALSE); /* a litte trick to allow easy exit from nested if's */
+ } while(FALSE); /* a little trick to allow easy exit from nested if's */
ret = S_OK;
switch (process_case) {
@@ -2153,7 +2153,6 @@ HRESULT WINAPI UrlGetPartW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut,
BOOL WINAPI PathIsURLA(LPCSTR lpstrPath)
{
PARSEDURLA base;
- DWORD res1;
TRACE("%s\n", debugstr_a(lpstrPath));
@@ -2161,7 +2160,7 @@ BOOL WINAPI PathIsURLA(LPCSTR lpstrPath)
/* get protocol */
base.cbSize = sizeof(base);
- res1 = ParseURLA(lpstrPath, &base);
+ ParseURLA(lpstrPath, &base);
return (base.nScheme != URL_SCHEME_INVALID);
}
@@ -2173,7 +2172,6 @@ BOOL WINAPI PathIsURLA(LPCSTR lpstrPath)
BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
{
PARSEDURLW base;
- DWORD res1;
TRACE("%s\n", debugstr_w(lpstrPath));
@@ -2181,7 +2179,7 @@ BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
/* get protocol */
base.cbSize = sizeof(base);
- res1 = ParseURLW(lpstrPath, &base);
+ ParseURLW(lpstrPath, &base);
return (base.nScheme != URL_SCHEME_INVALID);
}
@@ -2312,7 +2310,7 @@ HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
* dwDestLen [I] Length of lpszDest
*
* RETURNS
- * Success: S_OK. lpszDest constains the resource Url.
+ * Success: S_OK. lpszDest contains the resource Url.
* Failure: E_INVALIDARG, if any argument is invalid, or
* E_FAIL if dwDestLen is too small.
*/