Geoff Chappell - Software Analyst
IID_IAssociationElement | {E58B1ABF-9596-4DBA-8997-89DCDEF46992} | original (SHLWAPI) |
{D8F6AD5B-B44F-4BCC-88FD-EB3473DB7502} | revised (SHELL32) |
The original IAssociationElement methods are (as ordered in the virtual function table after the IUnknown methods):
Offset | Method |
---|---|
0x0C | QueryString |
0x10 | QueryDword |
0x14 | QueryExists |
0x18 | QueryDirect |
0x1C | QueryObject |
with prototypes:
HRESULT QueryString (ASSOCQUERY, PCWSTR, PWSTR *);
HRESULT QueryDword (ASSOCQUERY, PCWSTR, DWORD *);
HRESULT QueryExists (ASSOCQUERY, PCWSTR);
HRESULT QueryDirect (ASSOCQUERY, PCWSTR, FLAGGED_BYTE_BLOB **);
HRESULT QueryObject (ASSOCQUERY, PCWSTR, REFIID, PVOID *);
in which ASSOCQUERY is invented as a typedef for an undocumented enumeration:
typedef enum tagASSOCQUERY ASSOCQUERY;
The revision inserts a method:
Offset | Method |
---|---|
0x0C | QueryString |
0x10 | QueryDword |
0x14 | QueryGuid |
0x18 | QueryExists |
0x1C | QueryDirect |
0x20 | QueryObject |
The new method has the prototype:
HRESULT QueryGuid (ASSOCQUERY, PCWSTR, GUID *);
The IAssociationElement interface is implemented in SHLWAPI.DLL version 6.00 from before Windows Vista, and in SHELL32.DLL version 6.00 from Windows Vista, and higher.
Though this interface dates from 2001, it was still not documented by Microsoft as late as the January 2007 edition of the Windows Vista Software Development Kit (SDK).