Commit 0005e81f authored by Andreas Mohr's avatar Andreas Mohr Committed by Alexandre Julliard

Implemented SHELL32.IsNetDrive and SHELL32.ILSaveToStream needed for

IE 5.
parent 9a949801
...@@ -108,8 +108,9 @@ BOOL pcheck (LPCITEMIDLIST pidl) ...@@ -108,8 +108,9 @@ BOOL pcheck (LPCITEMIDLIST pidl)
case PT_WORKGRP: case PT_WORKGRP:
case PT_COMP: case PT_COMP:
case PT_NETWORK: case PT_NETWORK:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
case PT_SHARE: case PT_SHARE:
case PT_IESPECIAL:
break; break;
default: default:
{ {
...@@ -233,6 +234,7 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl) ...@@ -233,6 +234,7 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
return pidlNew; return pidlNew;
} }
/************************************************************************* /*************************************************************************
* ILLoadFromStream * ILLoadFromStream
* *
...@@ -265,7 +267,7 @@ HRESULT WINAPI ILLoadFromStream (IStream * pStream, LPITEMIDLIST * ppPidl) ...@@ -265,7 +267,7 @@ HRESULT WINAPI ILLoadFromStream (IStream * pStream, LPITEMIDLIST * ppPidl)
} }
} }
/* we are not jet fully compatible */ /* we are not yet fully compatible */
if (!pcheck(*ppPidl)) if (!pcheck(*ppPidl))
{ SHFree(*ppPidl); { SHFree(*ppPidl);
*ppPidl = NULL; *ppPidl = NULL;
...@@ -276,6 +278,43 @@ HRESULT WINAPI ILLoadFromStream (IStream * pStream, LPITEMIDLIST * ppPidl) ...@@ -276,6 +278,43 @@ HRESULT WINAPI ILLoadFromStream (IStream * pStream, LPITEMIDLIST * ppPidl)
return ret; return ret;
} }
/*************************************************************************
* ILSaveToStream
*
* NOTES
* the first two bytes are the len, the pidl is following then
*/
HRESULT WINAPI ILSaveToStream (IStream * pStream, LPCITEMIDLIST pPidl)
{
LPITEMIDLIST pidl;
WORD wLen = 0;
HRESULT ret = E_FAIL;
TRACE_(shell)("%p %p\n", pStream, pPidl);
IStream_AddRef (pStream);
pidl = pPidl;
while (pidl->mkid.cb)
{
wLen += sizeof(WORD) + pidl->mkid.cb;
pidl = ILGetNext(pidl);
}
if (SUCCEEDED(IStream_Write(pStream, (LPVOID)&wLen, 2, NULL)))
{
if (SUCCEEDED(IStream_Write(pStream, pPidl, wLen, NULL)))
{ ret = S_OK;
}
}
IStream_Release (pStream);
return ret;
}
/************************************************************************* /*************************************************************************
* SHILCreateFromPath [SHELL32.28] * SHILCreateFromPath [SHELL32.28]
* *
...@@ -1508,7 +1547,8 @@ LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl) ...@@ -1508,7 +1547,8 @@ LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
case PT_FOLDER: case PT_FOLDER:
case PT_FOLDER1: case PT_FOLDER1:
case PT_VALUE: case PT_VALUE:
case PT_IESPECIAL: case PT_IESPECIAL1:
case PT_IESPECIAL2:
return (LPSTR)&(pdata->u.file.szNames); return (LPSTR)&(pdata->u.file.szNames);
case PT_WORKGRP: case PT_WORKGRP:
...@@ -1536,7 +1576,8 @@ LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl) ...@@ -1536,7 +1576,8 @@ LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
{ {
case PT_FOLDER: case PT_FOLDER:
case PT_VALUE: case PT_VALUE:
case PT_IESPECIAL: case PT_IESPECIAL1:
case PT_IESPECIAL2:
return (LPSTR)(pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1); return (LPSTR)(pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1);
case PT_WORKGRP: case PT_WORKGRP:
......
...@@ -74,7 +74,8 @@ ...@@ -74,7 +74,8 @@
#define PT_WORKGRP 0x41 #define PT_WORKGRP 0x41
#define PT_COMP 0x42 #define PT_COMP 0x42
#define PT_NETWORK 0x47 #define PT_NETWORK 0x47
#define PT_IESPECIAL 0xb1 #define PT_IESPECIAL1 0x61
#define PT_IESPECIAL2 0xb1
#define PT_SHARE 0xc3 #define PT_SHARE 0xc3
#include "pshpack1.h" #include "pshpack1.h"
......
...@@ -38,8 +38,8 @@ debug_channels (exec pidl shell) ...@@ -38,8 +38,8 @@ debug_channels (exec pidl shell)
23 stdcall ILIsParent (long long long) ILIsParent 23 stdcall ILIsParent (long long long) ILIsParent
24 stdcall ILFindChild (long long) ILFindChild 24 stdcall ILFindChild (long long) ILFindChild
25 stdcall ILCombine(ptr ptr) ILCombine 25 stdcall ILCombine(ptr ptr) ILCombine
26 stdcall ILLoadFromStream (long long) ILLoadFromStream 26 stdcall ILLoadFromStream (ptr ptr) ILLoadFromStream
27 stub ILSaveToStream@8 27 stdcall ILSaveToStream(ptr ptr) ILSaveToStream
28 stdcall SHILCreateFromPath (long long long) SHILCreateFromPathAW 28 stdcall SHILCreateFromPath (long long long) SHILCreateFromPathAW
29 stdcall PathIsRoot(ptr) PathIsRootAW 29 stdcall PathIsRoot(ptr) PathIsRootAW
30 stdcall PathBuildRoot(ptr long) PathBuildRootAW 30 stdcall PathBuildRoot(ptr long) PathBuildRootAW
...@@ -75,7 +75,7 @@ debug_channels (exec pidl shell) ...@@ -75,7 +75,7 @@ debug_channels (exec pidl shell)
63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse 63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse
64 stdcall DriveType (long) DriveType 64 stdcall DriveType (long) DriveType
65 stub InvalidateDriveType 65 stub InvalidateDriveType
66 stub IsNetDrive 66 stdcall IsNetDrive(long) IsNetDrive
67 stdcall Shell_MergeMenus (long long long long long long) Shell_MergeMenus 67 stdcall Shell_MergeMenus (long long long long long long) Shell_MergeMenus
68 stdcall SHGetSetSettings(long long long) SHGetSetSettings 68 stdcall SHGetSetSettings(long long long) SHGetSetSettings
69 stub SHGetNetResource 69 stub SHGetNetResource
......
...@@ -163,3 +163,13 @@ HRESULT WINAPI SheChangeDirW(LPWSTR u) ...@@ -163,3 +163,13 @@ HRESULT WINAPI SheChangeDirW(LPWSTR u)
return 0; return 0;
} }
/*************************************************************************
* IsNetDrive [SHELL32.66]
*/
BOOL WINAPI IsNetDrive(DWORD drive)
{
char root[4];
strcpy(root, "A:\\");
root[0] += drive;
return (GetDriveTypeA(root) == DRIVE_REMOTE);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment