Re: BITS AddFileSet method returns E_INVALIDARG
On Aug 19, 11:27 pm, "Alex Blekhman" <tkfx.REM...@yahoo.com> wrote:
"NKH" wrote:
char source[3][72] = {"http://testserver:2034/version.bat",
"http://
testserver:2034/version1.bat", "http://testserver:2034/
version2.bat",""};
char dest[3][72] =
{"D:\Test\version.bat","D:\Test\version1.bat", "D:
\Test\version2.bat", ""};
In addition to my previopus answer. You put 4 strings into array
that can hold only 3 strings. The code above should not compile.
Also, you should make both source and destination strings as
`wchar_t' arrays:
wchar_t source[3][72] = { L"http://testserver:2034/version.bat",
... };
for (idx=0; idx<nCount; idx++)
{
//Set pszLocalName to point to a=
n LPWSTR that
contains the local name or
//allocate memory for pszLocalNa=
me and copy
the local name to pszLocalName.
LPWSTR pzLocalName = (LPWSTR)d=
est[idx];
//(paFiles+idx)->LocalName =
(LPWSTR)dest[idx];
(paFiles+idx)->LocalName = pzL=
ocalName;
//Set pszRemoteName to point to =
an LPWSTR
that contains the remote name or
//allocate memory for pszRemoteN=
ame and copy
the remote name to pszRemoteName.
LPWSTR pzRemotename = (LPWSTR)=
source[idx];
//(paFiles+idx)->RemoteName =
(LPWSTR)source[idx];
(paFiles+idx)->RemoteName = pz=
Remotename;
}
The above code is completely wrong. You DO NOT allocate any memory
there. What happens is that you copy a pointer of some type to a
pointer of other, incompatible, type. So, in order to shut up the
compiler you used C-casts here. This is bad thing. I suggest you
to pick up you favorite C textbook and learn a bit about pointers
and memory buffers.
Alex- Hide quoted text -
- Show quoted text -
I have tried changing the arrays types to wchar_t..Istill come across
the same problem..
I have lately changed the code to look like given below..I have used
LPWSTR to define the arrays source and dest..
Thanks for ur advice..tht was really a wake up call :-)
LPWSTR source[4]; LPWSTR dest[4];
LPWSTR webURL = (LPWSTR) malloc(72); wcscpy(webURL,prot);
wcscat(webURL,qsserver);
wcscat(webURL,(LPWSTR)":"); wcscat(webURL,qsbaseport);
wcscpy(temp,webURL); wcscat(temp,(LPWSTR)"/version.bat");
source[0] = (LPWSTR)malloc(72);
wcscpy(source[0],temp); wcscpy(temp,(LPWSTR)"");
wcscpy(temp,webURL); wcscat(temp,(LPWSTR)"/Version1.bat");
source[1] = (LPWSTR) malloc(72);
wcscpy(source[1],temp); wcscpy(temp,(LPWSTR)"");
wcscpy(temp,webURL); wcscat(temp,(LPWSTR)"/version2.bat");
source[2] = (LPWSTR) malloc(72);
wcscpy(source[2],temp); wcscpy(temp,(LPWSTR)"");
LPWSTR destination = (LPWSTR) malloc(72);
wcscpy(destination,qsdrive); wcscat(destination,(LPWSTR)"\\zune\
\temp\\");
wcscpy(temp,destination); wcscat(temp,(LPWSTR)"Version.bat");
dest[0] = (LPWSTR) malloc(72);
wcscpy(dest[0],temp); wcscpy(temp,(LPWSTR)"");
wcscpy(temp,destination); wcscat(temp,(LPWSTR)"Version1.bat");
dest[1] = (LPWSTR) malloc(72);
wcscpy(dest[1],temp); wcscpy(temp,(LPWSTR)"");
wcscpy(temp,destination); wcscat(temp,(LPWSTR)"Version2.bat");
dest[2] = (LPWSTR) malloc(72);
wcscpy(dest[2],temp); wcscpy(temp,(LPWSTR)"");