// -------------------------------------------------------------------------------- // tstdrv.cpp // -------------------------------------------------------------------------------- #include #include #include #include "shellstg.clsid.h" #include "ishellstg.h" #include "davinet.clsid.h" #include "idavinet.h" #include "davstore.clsid.h" #include "idavstore.h" #include "strutil.h" // -------------------------------------------------------------------------------- // main // -------------------------------------------------------------------------------- void __cdecl main(INT argc, CHAR * argv[]) { // locals HRESULT hr; IDavTransport* pDavTransport = NULL; IShellStorage* pShellStg = NULL; IDavStorage* pStorage = NULL; IShellFolder* pshfDesk = NULL; LPITEMIDLIST pidl = NULL; LPWSTR pwsz = NULL; CoInitialize(NULL); hr = ::CoCreateInstance(CLSID_CShellStorage, NULL, CLSCTX_INPROC_SERVER, IID_IShellStorage, (LPVOID*)&pShellStg); if (SUCCEEDED(hr)) { hr = pShellStg->Init(NULL, L"http://aidanl:8088/dav/aidanl/", TRUE); if (SUCCEEDED(hr)) { hr = SHGetDesktopFolder(&pshfDesk); if (SUCCEEDED(hr)) { for (INT i = 1; i < argc; i++) { pwsz = ConvertToUnicode(CP_ACP, argv[i]); if (!pwsz) { hr = E_OUTOFMEMORY; } else { hr = pshfDesk->ParseDisplayName(NULL, NULL, pwsz, NULL, &pidl, NULL); if (SUCCEEDED(hr)) { hr = pShellStg->AddIDListReference((LPVOID*)&pidl, 1, TRUE); } free(pwsz); if (FAILED(hr)) { break; } } } if (SUCCEEDED(hr)) { hr = ::CoCreateInstance(CLSID_CDavStorage, NULL, CLSCTX_INPROC_SERVER, IID_IDavStorage, (LPVOID*)&pStorage); if (SUCCEEDED(hr)) { hr = ::CoCreateInstance(CLSID_DAVInet, NULL, CLSCTX_INPROC_SERVER, IID_IDavTransport, (LPVOID*)&pDavTransport); if (SUCCEEDED(hr)) { hr = pDavTransport->SetAuthentication(L"aidan", L"grendel"); if (SUCCEEDED(hr)) { hr = pStorage->Init(L"http://aidanl:8088/dav/aidanl/", pDavTransport); if (SUCCEEDED(hr)) { hr = pShellStg->CopyTo(0, NULL, 0, pStorage); } } } pDavTransport->Release(); } pStorage->Release(); } } } pShellStg->Release(); } CoUninitialize(); }