Help needed on an SHGetFileInfoW() crash
Francois Gouget
fgouget at free.fr
Mon Dec 4 12:20:08 CST 2006
A friend pointed me to a railway signalling simulation game:
http://www.simsig.co.uk/html/downloads.html
However, the installer crashes in SHGetFileInfoW():
000d:Call shell32.SHGetFileInfoA(0045eae8,00000010,0034fcec,00000160,00001010) ret=0045e9f6
000d:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7e8871b2
000d:trace:seh:raise_exception info[0]=00000000
000d:trace:seh:raise_exception info[1]=00000000
More precisely the crash happens on this line:
hr = IShellFolder_GetUIObjectOf(psfParent, 0, 1,
(LPCITEMIDLIST*)&pidlLast, &IID_IExtractIconW,
&uDummy, (LPVOID*)&pei);
And the reason is that psfParent is NULL. psfParent is initialized a bit
above, but only if SHGetFileInfoW() was given a PIDL and
SHGFI_USEFILEATTRIBUTES was not used. This means that whenever a 'real
path' or SHGFI_USEFILEATTRIBUTES is used in combination with
SHGFI_DISPLAYNAME, SHGFI_ICONLOCATION, SHGFI_ICON or SHGFI_SYSICONINDEX,
then SHGetFileInfoW() will crash.
However we cannot just create a pidl since the 'real path' will usually
refer to a nonexistent file or directory (in our case it is
'c:\directory' so it's clear the installer just wants to know what's
the icon for a standard directory).
Any idea?
--
Francois Gouget <fgouget at free.fr> http://fgouget.free.fr/
"Lotto: A tax on people who are bad at math." -- unknown
"Windows: Microsoft's tax on computer illiterates." -- WE7U
More information about the wine-devel
mailing list