Geoff Chappell - Software Analyst
IID_IPinnedList | {C3C6EB6D-C837-4EAE-B172-5FEC52A2A4FD} | version 6.0 |
{BBD20037-BC0E-42F1-913F-E2936BB0EA0C} | version 6.1 |
The original IPinnedList methods are (as ordered in the virtual function table after the IUnknown methods):
Offset | Method |
---|---|
0x0C | EnumObjects |
0x10 | Modify |
0x14 | GetChangeCount |
0x18 | IsPinnable |
0x1C | Resolve |
0x20 | IsPinned |
with prototypes:
HRESULT EnumObjects (IEnumFullIDList **);
HRESULT Modify (PCIDLIST_ABSOLUTE, PCIDLIST_ABSOLUTE);
HRESULT GetChangeCount (ULONG *);
HRESULT IsPinnable (IDataObject *, ULONG, PIDLIST_ABSOLUTE *);
HRESULT Resolve (HWND, ULONG, PCIDLIST_ABSOLUTE, PIDLIST_ABSOLUTE *);
HRESULT IsPinned (PCIDLIST_ABSOLUTE);
The revision for Windows 7 changes the interface both by inserting methods and adding new ones:
Offset | Method |
---|---|
0x0C | EnumObjects |
0x10 | Modify |
0x14 | GetChangeCount |
0x18 | GetPinnableInfo |
0x1C | IsPinnable |
0x20 | Resolve |
0x24 | IsPinned |
0x28 | GetPinnedItem |
0x2C | GetAppIDForPinnedItem |
0x30 | ItemChangeNotify |
0x34 | UpdateForRemovedItemsAsNecessary |
with prototypes (where new or changed):
HRESULT GetPinnableInfo (IDataObject *, PINNABLEFLAG, IShellItem2 **, IShellItem **, PWSTR *, INT *);
HRESULT IsPinnable (IDataObject *, PINNABLEFLAG);
HRESULT GetPinnedItem (PCIDLIST_ABSOLUTE, PIDLIST_ABSOLUTE *);
HRESULT GetAppIDForPinnedItem (PCIDLIST_ABSOLUTE, PWSTR *);
HRESULT ItemChangeNotify (PCIDLIST_ABSOLUTE, PCIDLIST_ABSOLUTE);
HRESULT UpdateForRemovedItemsAsNecessary (VOID);
in which PINNABLEFLAG is an enumeration.
The IPinnedList interface is implemented by SHELL32 in the version 6.0 from Windows Vista, and higher.
Though new for Windows Vista, this interface is not documented by Microsoft in the January 2007 edition of the Software Development Kit (SDK) for Windows Vista.